From 01c8701b68986ccfa83e902515716838d6829311 Mon Sep 17 00:00:00 2001 From: Onyx Date: Tue, 1 Dec 2015 20:55:30 +0000 Subject: - Fixed all of the bugs mentioned on github - Added new config options - Rabbits paw now increases the chance of spawning hearts, rather than itself spawning some - Hearts now have a much lower chance to spawn by default - You can no longer increase your health past 20 hearts (aka double the default health) - The guide now also shows the total number of pages on each tab - A new luck stat has been added to the Curse API - Cleaned up the code a bit (removed unused methods, imports etc) - The displayer's info now has a purple solid color background; the text also has a much closer shadow and now shrinks in height as well as in width when too big - I have modified the potion list to use Mithion's code, credits have been given --- .../jewelrycraft/util/JewelrycraftUtil.java | 703 +++++++++++---------- 1 file changed, 372 insertions(+), 331 deletions(-) (limited to 'src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java') diff --git a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java index 818a526..4c9669e 100644 --- a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java +++ b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java @@ -36,7 +36,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; @@ -46,334 +45,376 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; -public class JewelrycraftUtil { - public static ArrayList objects = new ArrayList(); - public static ArrayList gem = new ArrayList(); - public static ArrayList jewelry = new ArrayList(); - public static ArrayList metal = new ArrayList(); - public static ArrayList ores = new ArrayList(); - public static HashMap oreToIngot = new HashMap(); - public static HashMap colors = new HashMap(); - public static ArrayList jamcraftPlayers = new ArrayList(); - private static ArrayList items = new ArrayList(); - public static ArrayList structures = new ArrayList(); - public static Random rand = new Random(); - public static EnumCreatureAttribute HEART; - - /** - * Adds gems and jewelry to their appropriate list - */ - public static void addStuff() { - // Jewels - for (int i = 0; i < 16; i++) - gem.add(new ItemStack(BlockList.crystal, 1, i)); - gem.add(new ItemStack(Blocks.redstone_block)); - gem.add(new ItemStack(Blocks.lapis_block)); - gem.add(new ItemStack(Blocks.obsidian)); - gem.add(new ItemStack(Items.diamond)); - gem.add(new ItemStack(Items.emerald)); - gem.add(new ItemStack(Items.ender_pearl)); - gem.add(new ItemStack(Items.nether_star)); - // Jewelry - jewelry.add(new ItemStack(ItemList.ring)); - jewelry.add(new ItemStack(ItemList.necklace)); - jewelry.add(new ItemStack(ItemList.bracelet)); - jewelry.add(new ItemStack(ItemList.earrings)); - for (Object item : GameData.getItemRegistry()) { - if (Loader.isModLoaded("Mantle") && ((Item) item).getUnlocalizedName().equals("Mantle:item.mantle.manual")) continue; - try { - if (item != null && (Item) item != null && ((Item) item).getHasSubtypes() && FMLCommonHandler.instance().getSide() == Side.CLIENT) { - ((Item) item).getSubItems((Item) item, null, items); - } - else objects.add(new ItemStack((Item) item)); - if (!items.isEmpty()) objects.addAll(items); - items.removeAll(items); - } - catch (Exception e) { - JewelrycraftMod.logger.info("Error, tried to add subtypes of item " + ((Item) item).getUnlocalizedName() + "\nItem is not added in the list."); - } - } - // Structures - try { - for (Field f : Generation.class.getDeclaredFields()) { - Object obj = f.get(null); - if (obj instanceof WorldGenStructure) structures.add((WorldGenStructure) obj); - } - } - catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - - @SideOnly(Side.CLIENT) - public static void generateColors() { - for (Object item : GameData.getItemRegistry()) { - if (Loader.isModLoaded("Mantle") && ((Item) item).getUnlocalizedName().equals("Mantle:item.mantle.manual")) continue; - try { - if (item != null && (Item) item != null && ((Item) item).getHasSubtypes() && FMLCommonHandler.instance().getSide() == Side.CLIENT) { - ((Item) item).getSubItems((Item) item, null, items); - } - else { - ItemStack it = new ItemStack((Item) item); - colors.put(it, color(it, 0)); - } - if (!items.isEmpty()) for (ItemStack it : items) - colors.put(it, color(it, 0)); - items.removeAll(items); - } - catch (Exception e) { - JewelrycraftMod.logger.info("Error, tried to add the color of the item " + ((Item) item).getUnlocalizedName() + " but something went wrong."); - } - } - } - - @SideOnly(Side.CLIENT) - public static int getColor(ItemStack item) { - for (ItemStack stack : colors.keySet()) - if (item != null && item.getItem() != null && stack.getItem() != null && item.getItem().equals(stack.getItem()) && item.getItemDamage() == stack.getItemDamage()) return colors.get(stack); - return 0xFFFFFF; - } - - @SideOnly(Side.CLIENT) - public static int color(ItemStack stack, int pass) throws IOException { - IResourceManager rm = Minecraft.getMinecraft().getResourceManager(); - ResourceLocation ingot; - BufferedImage icon; - if (stack != null && Item.getIdFromItem(stack.getItem()) > 0 && stack.getItem().getColorFromItemStack(stack, pass) == 16777215) { - try { - ingot = getLocation(stack); - } - catch (Exception e) { - ingot = new ResourceLocation("textures/items/apple.png"); - } - icon = ImageIO.read(rm.getResource(ingot).getInputStream()); - int height = icon.getHeight(); - int width = icon.getWidth(); - Map m = new HashMap(); - for (int i = 0; i < width; i++) - for (int j = 0; j < height; j++) { - int rgb = icon.getRGB(i, j); - int red = rgb >> 16 & 0xff; - int green = rgb >> 8 & 0xff; - int blue = rgb & 0xff; - int[] rgbArr = { red, green, blue }; - int Cmax = Math.max(red, Math.max(green, blue)); - int Cmin = Math.min(red, Math.min(green, blue)); - if (!isGray(rgbArr)) m.put(rgb, (Cmax + Cmin) / 2); - } - return getMostCommonColour(m); - } - else return stack.getItem().getColorFromItemStack(stack, pass); - } - - public static ResourceLocation getLocation(ItemStack item) { - String domain = ""; - String texture; - IIcon itemIcon = item.getItem().getIcon(item, 0); - if (!(Block.getBlockFromItem(item.getItem()) instanceof BlockAir) && !Block.getBlockFromItem(item.getItem()).getIcon(0, item.getItemDamage()).getIconName().equals("soul_sand")) itemIcon = Block.getBlockFromItem(item.getItem()).getIcon(0, item.getItemDamage()); - String iconName = itemIcon.getIconName(); - if (iconName.substring(0, iconName.indexOf(":") + 1) != "") domain = iconName.substring(0, iconName.indexOf(":") + 1).replace(":", " ").trim(); - else domain = "minecraft"; - texture = iconName.substring(iconName.lastIndexOf(":") + 1) + ".png"; - ResourceLocation textureLocation = null; - TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - if (texturemanager.getResourceLocation(item.getItemSpriteNumber()).toString().contains("items")) textureLocation = new ResourceLocation(domain.toLowerCase(), "textures/items/" + texture); - else textureLocation = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture); - return textureLocation; - } - - @SideOnly(Side.CLIENT) - public static int getMostCommonColour(Map map) { - List list = new LinkedList(map.entrySet()); - Collections.sort(list, new Comparator() { - public int compare(Object o1, Object o2) { - return ((Comparable) ((Map.Entry) o1).getValue()).compareTo(((Map.Entry) o2).getValue()); - } - }); - Map.Entry me = (Map.Entry) list.get(list.size() - 1); - for (int i = 0; i < list.size(); i++) { - float alpha = Float.valueOf(list.get(i).toString().split("=")[1]); - if (alpha < 180) me = (Map.Entry) list.get(i); - } - int rgb = (Integer) me.getKey(); - return rgb; - } - - @SideOnly(Side.CLIENT) - public static boolean isGray(int[] rgbArr) { - int rgbSum = rgbArr[0] + rgbArr[1] + rgbArr[2]; - if (rgbSum > 0 && rgbSum < 256 * 3) return false; - return true; - } - - public static WeightedRandomCurse[] getCurses(World world, EntityPlayer player, Random random) { - WeightedRandomCurse[] curses = new WeightedRandomCurse[Curse.availableCurses.size()]; - for (int c = 0; c < Curse.availableCurses.size(); c++) - curses[c] = new WeightedRandomCurse(Curse.availableCurses.get(c), Curse.availableCurses.get(c).weight(world, player, random)); - return curses; - } - - /** - * Adds curse points to a player - * - * @param player the player to add the points to - * @param points amount of curse points - */ - public static void addCursePoints(EntityPlayer player, int points) { - NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); - playerInfo.setInteger("cursePoints", playerInfo.hasKey("cursePoints") ? (playerInfo.getInteger("cursePoints") + points) : points); - playerInfo.setBoolean("playerCursePointsChanged", true); - } - - public static int getCursePoints(EntityPlayer player) { - NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); - return playerInfo.getInteger("cursePoints"); - } - - /** - * Adds the UUID's of the jamcrafters in a list (+ special people) - */ - public static void jamcrafters() { - jamcraftPlayers.add("d3214311-7550-4c9c-a372-d9292c10b8a6"); //allout58 - jamcraftPlayers.add("a690119f-c4a2-4bd6-a99d-d63679abb328"); //ChewBaker - jamcraftPlayers.add("de7c9903-51fa-4a24-88cd-48faf122ca36"); //domi1819 - jamcraftPlayers.add("70aeb298-3a7b-46da-a393-ab10df9359f2"); //founderio - jamcraftPlayers.add("6fbe603c-14bf-4085-afdd-abe592c26e7c"); //GerbShert - jamcraftPlayers.add("b0d21306-36bf-4d85-84df-a956d183c45a"); //isomgirls6 - jamcraftPlayers.add("1733a31f-01f9-4f4d-82aa-7de30ca810d3"); //TH3N00B - jamcraftPlayers.add("4833eacf-1d94-49a7-9f89-4cf88d69dcf9"); //Joban - jamcraftPlayers.add("718cf671-9084-4e78-b91f-033e80aa11bf"); //KJ4IPS - jamcraftPlayers.add("bea5e0c4-85c4-454d-a081-e1eaae6895ee"); //Mitchellbrine - jamcraftPlayers.add("7ecf3e2f-fedf-4f7e-8d24-6731d078db4f"); //MrComputerGhost - jamcraftPlayers.add("1b11ad3a-f0ca-4695-a019-2d7e5d83a5fd"); //Resinresin - jamcraftPlayers.add("3ec9ac58-2f1b-4d3f-b4eb-3b875da877ae"); //sci4me - jamcraftPlayers.add("cf9fa23f-205e-4eed-aba3-9f2848cd6a4d"); //OnyxDarkKnight - jamcraftPlayers.add("91880caa-b032-48e3-bfe8-c2c7ed31824e"); //theminecoder - jamcraftPlayers.add("8d0b3804-f71c-4219-897b-8c315448ea7c"); //YSPilot - jamcraftPlayers.add("bbb87dbe-690f-4205-bdc5-72ffb8ebc29d"); //direwolf20 - } - - /** - * Adds a random amount of modifiers to a list - * - * @param randValue maximum number of modifiers - * @return a list containing the random modifiers - */ - public static ArrayList addRandomModifiers(int randValue) { - ArrayList list = new ArrayList(); - for (int i = 0; i < 2 + randValue; i++) { - ItemStack item = objects.get(new Random().nextInt(objects.size())); - item.stackSize = 1 + new Random().nextInt(2); - list.add(item); - } - return list; - } - - /** - * Links ores with their appropriate ingot - */ - public static void addMetals() { - int index = 0; - while (index < OreDictionary.getOreNames().length) { - Iterator i = OreDictionary.getOres(OreDictionary.getOreNames()[index]).iterator(); - while (i.hasNext()) { - ItemStack nextStack = i.next(); - String stackName = nextStack.getItem().getUnlocalizedName().toLowerCase(); - if ((stackName.contains("ingot") || stackName.contains("alloy")) && !metal.contains(nextStack)) metal.add(nextStack); - if (nextStack.getItem().getUnlocalizedName().toLowerCase().contains("ore") && !ores.contains(nextStack)) { - ItemStack ingot = FurnaceRecipes.smelting().getSmeltingResult(nextStack); - if (ingot != null && (ingot.getItem().getUnlocalizedName().toLowerCase().contains("ingot") || ingot.getItem().getUnlocalizedName().toLowerCase().contains("alloy"))) { - ores.add(nextStack); - oreToIngot.put(nextStack, ingot); - JewelrycraftMod.logger.info(nextStack + " Adding " + nextStack.getDisplayName() + " with damage value " + nextStack.getItemDamage() + " and with " + nextStack.stackSize + " in stack"); - JewelrycraftMod.logger.info(ingot + " Adding ingot " + ingot.getDisplayName() + " with damage value " + ingot.getItemDamage() + " and with " + ingot.stackSize + " in stack"); - } - } - } - index++; - } - } - - /** - * Checks to see if the specified item is a gem - * - * @param item ItemStack containing the item - * @return is the item a gem - */ - public static boolean isGem(ItemStack item) { - Iterator i = gem.iterator(); - while (i.hasNext()) { - ItemStack temp = i.next(); - if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) return true; - } - return false; - } - - /** - * Checks to see if the specified item is a metal - * - * @param item ItemStack containing the item - * @return is the item a metal - */ - public static boolean isMetal(ItemStack item) { - Iterator i = metal.iterator(); - while (i.hasNext()) { - ItemStack temp = i.next(); - if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) return true; - } - return false; - } - - /** - * Checks to see if the specified item is a piece of jewelry - * - * @param item ItemStack containing the item - * @return is the item a piece of jewelry - */ - public static boolean isJewelry(ItemStack item) { - Iterator i = jewelry.iterator(); - while (i.hasNext()) { - ItemStack temp = i.next(); - if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) return true; - } - return false; - } - - /** - * Checks to see if the specified item is an ore - * - * @param item ItemStack containing the item - * @return is the item an ore - */ - public static boolean isOre(ItemStack item) { - Iterator i = ores.iterator(); - while (i.hasNext()) { - ItemStack temp = i.next(); - if (temp.getItem().equals(item.getItem()) && temp.getItemDamage() == item.getItemDamage()) return true; - } - return false; - } - - /** - * Gets the ingot from the ore - * - * @param ore the ore - * @return the ingot - */ - public static ItemStack getIngotFromOre(ItemStack ore) { - for (ItemStack ores : JewelrycraftUtil.oreToIngot.keySet()) - if (ores.getItem().equals(ore.getItem()) && ores.getItemDamage() == ore.getItemDamage()) return oreToIngot.get(ores); - return null; - } - - /** - * This determines whether the player unlocked an achievement or not. - * - * @param player The player to unlock the achievement - * @param achievement The achievement to be unlocked - * @return True or False depending if the player did unlock the achievement or not - */ - public static boolean AchievemtUnlocked(EntityPlayer player, Achievement achievement) { - return ((EntityPlayerMP) player).func_147099_x().hasAchievementUnlocked(achievement); - } +public class JewelrycraftUtil +{ + public static ArrayList objects = new ArrayList(); + public static ArrayList gem = new ArrayList(); + public static ArrayList jewelry = new ArrayList(); + public static ArrayList metal = new ArrayList(); + public static ArrayList ores = new ArrayList(); + public static HashMap oreToIngot = new HashMap(); + public static HashMap colors = new HashMap(); + public static ArrayList jamcraftPlayers = new ArrayList(); + private static ArrayList items = new ArrayList(); + public static ArrayList structures = new ArrayList(); + public static Random rand = new Random(); + public static EnumCreatureAttribute HEART; + + /** + * Adds gems and jewelry to their appropriate list + */ + public static void addStuff() + { + // Jewels + for(int i = 0; i < 16; i++) + gem.add(new ItemStack(BlockList.crystal, 1, i)); + gem.add(new ItemStack(Blocks.redstone_block)); + gem.add(new ItemStack(Blocks.lapis_block)); + gem.add(new ItemStack(Blocks.obsidian)); + gem.add(new ItemStack(Items.diamond)); + gem.add(new ItemStack(Items.emerald)); + gem.add(new ItemStack(Items.ender_pearl)); + gem.add(new ItemStack(Items.nether_star)); + // Jewelry + jewelry.add(new ItemStack(ItemList.ring)); + jewelry.add(new ItemStack(ItemList.necklace)); + jewelry.add(new ItemStack(ItemList.bracelet)); + jewelry.add(new ItemStack(ItemList.earrings)); + for(Object item: GameData.getItemRegistry()){ + if (item != null) { + if (Loader.isModLoaded("Mantle") && ((Item)item).getUnlocalizedName().equals("Mantle:item.mantle.manual")) + continue; + try{ + if (((Item)item).getHasSubtypes() && FMLCommonHandler.instance().getSide() == Side.CLIENT) { + ((Item)item).getSubItems((Item)item, null, items); + }else + objects.add(new ItemStack((Item)item)); + if (!items.isEmpty()) + objects.addAll(items); + items.removeAll(items); + } + catch(Exception e){ + JewelrycraftMod.logger.info("Error, tried to add subtypes of item " + ((Item)item).getUnlocalizedName() + "\nItem is not added in the list."); + } + } + } + // Structures + try{ + for(Field f: Generation.class.getDeclaredFields()){ + Object obj = f.get(null); + if (obj instanceof WorldGenStructure) + structures.add((WorldGenStructure)obj); + } + } + catch(IllegalAccessException e){ + throw new RuntimeException(e); + } + } + + @SideOnly (Side.CLIENT) + public static void generateColors() + { + for(Object item: GameData.getItemRegistry()){ + if (item != null) { + if (Loader.isModLoaded("Mantle") && ((Item)item).getUnlocalizedName().equals("Mantle:item.mantle.manual")) + continue; + try{ + if (((Item)item).getHasSubtypes() && FMLCommonHandler.instance().getSide() == Side.CLIENT) { + ((Item)item).getSubItems((Item)item, null, items); + }else{ + ItemStack it = new ItemStack((Item)item); + colors.put(it, color(it, 0)); + } + if (!items.isEmpty()) + for(ItemStack it: items) + colors.put(it, color(it, 0)); + items.removeAll(items); + } + catch(Exception e){ + JewelrycraftMod.logger.info("Error, tried to add the color of the item " + ((Item)item).getUnlocalizedName() + " but something went wrong."); + } + } + } + } + + @SideOnly (Side.CLIENT) + public static int getColor(ItemStack item) + { + for(ItemStack stack: colors.keySet()) + if (item != null && item.getItem() != null && stack.getItem() != null && item.getItem().equals(stack.getItem()) && item.getItemDamage() == stack.getItemDamage()) + return colors.get(stack); + return 0xFFFFFF; + } + + @SideOnly (Side.CLIENT) + public static int color(ItemStack stack, int pass) throws IOException + { + IResourceManager rm = Minecraft.getMinecraft().getResourceManager(); + ResourceLocation ingot; + BufferedImage icon; + if (stack != null && Item.getIdFromItem(stack.getItem()) > 0 && stack.getItem().getColorFromItemStack(stack, pass) == 16777215) { + try{ + ingot = getLocation(stack); + } + catch(Exception e){ + ingot = new ResourceLocation("textures/items/apple.png"); + } + icon = ImageIO.read(rm.getResource(ingot).getInputStream()); + int height = icon.getHeight(); + int width = icon.getWidth(); + Map m = new HashMap(); + for(int i = 0; i < width; i++) + for(int j = 0; j < height; j++){ + int rgb = icon.getRGB(i, j); + int red = rgb >> 16 & 0xff; + int green = rgb >> 8 & 0xff; + int blue = rgb & 0xff; + int[] rgbArr = {red, green, blue}; + int Cmax = Math.max(red, Math.max(green, blue)); + int Cmin = Math.min(red, Math.min(green, blue)); + if (!isGray(rgbArr)) + m.put(rgb, (Cmax + Cmin) / 2); + } + return getMostCommonColour(m); + }else + return stack.getItem().getColorFromItemStack(stack, pass); + } + + public static ResourceLocation getLocation(ItemStack item) + { + String domain = ""; + String texture; + IIcon itemIcon = item.getItem().getIcon(item, 0); + if (!(Block.getBlockFromItem(item.getItem()) instanceof BlockAir) && !Block.getBlockFromItem(item.getItem()).getIcon(0, item.getItemDamage()).getIconName().equals("soul_sand")) + itemIcon = Block.getBlockFromItem(item.getItem()).getIcon(0, item.getItemDamage()); + String iconName = itemIcon.getIconName(); + if (iconName.substring(0, iconName.indexOf(":") + 1) != "") + domain = iconName.substring(0, iconName.indexOf(":") + 1).replace(":", " ").trim(); + else domain = "minecraft"; + texture = iconName.substring(iconName.lastIndexOf(":") + 1) + ".png"; + ResourceLocation textureLocation = null; + TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); + if (texturemanager.getResourceLocation(item.getItemSpriteNumber()).toString().contains("items")) + textureLocation = new ResourceLocation(domain.toLowerCase(), "textures/items/" + texture); + else textureLocation = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture); + return textureLocation; + } + + @SideOnly (Side.CLIENT) + public static int getMostCommonColour(Map map) + { + List list = new LinkedList(map.entrySet()); + Collections.sort(list, new Comparator(){ + public int compare(Object o1, Object o2) + { + return ((Comparable)((Map.Entry)o1).getValue()).compareTo(((Map.Entry)o2).getValue()); + } + }); + Map.Entry me = (Map.Entry)list.get(list.size() - 1); + for(int i = 0; i < list.size(); i++){ + float alpha = Float.valueOf(list.get(i).toString().split("=")[1]); + if (alpha < 180) + me = (Map.Entry)list.get(i); + } + int rgb = (Integer)me.getKey(); + return rgb; + } + + @SideOnly (Side.CLIENT) + public static boolean isGray(int[] rgbArr) + { + int rgbSum = rgbArr[0] + rgbArr[1] + rgbArr[2]; + if (rgbSum > 0 && rgbSum < 256 * 3) + return false; + return true; + } + + public static WeightedRandomCurse[] getCurses(World world, EntityPlayer player, Random random) + { + WeightedRandomCurse[] curses = new WeightedRandomCurse[Curse.availableCurses.size()]; + for(int c = 0; c < Curse.availableCurses.size(); c++) + curses[c] = new WeightedRandomCurse(Curse.availableCurses.get(c), Curse.availableCurses.get(c).weight(world, player, random)); + return curses; + } + + /** + * Adds curse points to a player + * + * @param player the player to add the points to + * @param points amount of curse points + */ + public static void addCursePoints(EntityPlayer player, int points) + { + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + playerInfo.setInteger("cursePoints", playerInfo.hasKey("cursePoints") ? (playerInfo.getInteger("cursePoints") + points) : points); + playerInfo.setBoolean("playerCursePointsChanged", true); + } + + public static int getCursePoints(EntityPlayer player) + { + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + return playerInfo.getInteger("cursePoints"); + } + + /** + * Adds the UUID's of the jamcrafters in a list (+ special people) + */ + public static void jamcrafters() + { + jamcraftPlayers.add("d3214311-7550-4c9c-a372-d9292c10b8a6"); // allout58 + jamcraftPlayers.add("a690119f-c4a2-4bd6-a99d-d63679abb328"); // ChewBaker + jamcraftPlayers.add("de7c9903-51fa-4a24-88cd-48faf122ca36"); // domi1819 + jamcraftPlayers.add("70aeb298-3a7b-46da-a393-ab10df9359f2"); // founderio + jamcraftPlayers.add("6fbe603c-14bf-4085-afdd-abe592c26e7c"); // GerbShert + jamcraftPlayers.add("b0d21306-36bf-4d85-84df-a956d183c45a"); // isomgirls6 + jamcraftPlayers.add("1733a31f-01f9-4f4d-82aa-7de30ca810d3"); // TH3N00B + jamcraftPlayers.add("4833eacf-1d94-49a7-9f89-4cf88d69dcf9"); // Joban + jamcraftPlayers.add("718cf671-9084-4e78-b91f-033e80aa11bf"); // KJ4IPS + jamcraftPlayers.add("bea5e0c4-85c4-454d-a081-e1eaae6895ee"); // Mitchellbrine + jamcraftPlayers.add("7ecf3e2f-fedf-4f7e-8d24-6731d078db4f"); // MrComputerGhost + jamcraftPlayers.add("1b11ad3a-f0ca-4695-a019-2d7e5d83a5fd"); // Resinresin + jamcraftPlayers.add("3ec9ac58-2f1b-4d3f-b4eb-3b875da877ae"); // sci4me + jamcraftPlayers.add("cf9fa23f-205e-4eed-aba3-9f2848cd6a4d"); // OnyxDarkKnight + jamcraftPlayers.add("91880caa-b032-48e3-bfe8-c2c7ed31824e"); // theminecoder + jamcraftPlayers.add("8d0b3804-f71c-4219-897b-8c315448ea7c"); // YSPilot + jamcraftPlayers.add("bbb87dbe-690f-4205-bdc5-72ffb8ebc29d"); // direwolf20 + } + + /** + * Adds a random amount of modifiers to a list + * + * @param randValue maximum number of modifiers + * @return a list containing the random modifiers + */ + public static ArrayList addRandomModifiers(int randValue) + { + ArrayList list = new ArrayList(); + for(int i = 0; i < 2 + randValue; i++){ + ItemStack item = objects.get(new Random().nextInt(objects.size())); + item.stackSize = 1 + new Random().nextInt(2); + list.add(item); + } + return list; + } + + /** + * Links ores with their appropriate ingot + */ + public static void addMetals() + { + int index = 0; + while (index < OreDictionary.getOreNames().length){ + Iterator i = OreDictionary.getOres(OreDictionary.getOreNames()[index]).iterator(); + while (i.hasNext()){ + ItemStack nextStack = i.next(); + String stackName = nextStack.getItem().getUnlocalizedName().toLowerCase(); + if ((stackName.contains("ingot") || stackName.contains("alloy")) && !metal.contains(nextStack)) + metal.add(nextStack); + if (nextStack.getItem().getUnlocalizedName().toLowerCase().contains("ore") && !ores.contains(nextStack)) { + ItemStack ingot = FurnaceRecipes.smelting().getSmeltingResult(nextStack); + if (ingot != null && (ingot.getItem().getUnlocalizedName().toLowerCase().contains("ingot") || ingot.getItem().getUnlocalizedName().toLowerCase().contains("alloy"))) { + ores.add(nextStack); + oreToIngot.put(nextStack, ingot); + JewelrycraftMod.logger.info(nextStack + " Adding " + nextStack.getDisplayName() + " with damage value " + nextStack.getItemDamage() + " and with " + nextStack.stackSize + " in stack"); + JewelrycraftMod.logger.info(ingot + " Adding ingot " + ingot.getDisplayName() + " with damage value " + ingot.getItemDamage() + " and with " + ingot.stackSize + " in stack"); + } + } + } + index++; + } + } + + /** + * Checks to see if the specified item is a gem + * + * @param item ItemStack containing the item + * @return is the item a gem + */ + public static boolean isGem(ItemStack item) + { + Iterator i = gem.iterator(); + while (i.hasNext()){ + ItemStack temp = i.next(); + if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) + return true; + } + return false; + } + + /** + * Checks to see if the specified item is a metal + * + * @param item ItemStack containing the item + * @return is the item a metal + */ + public static boolean isMetal(ItemStack item) + { + Iterator i = metal.iterator(); + while (i.hasNext()){ + ItemStack temp = i.next(); + if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) + return true; + } + return false; + } + + /** + * Checks to see if the specified item is a piece of jewelry + * + * @param item ItemStack containing the item + * @return is the item a piece of jewelry + */ + public static boolean isJewelry(ItemStack item) + { + Iterator i = jewelry.iterator(); + while (i.hasNext()){ + ItemStack temp = i.next(); + if (temp.getItem() == item.getItem() && temp.getItemDamage() == item.getItemDamage()) + return true; + } + return false; + } + + /** + * Checks to see if the specified item is an ore + * + * @param item ItemStack containing the item + * @return is the item an ore + */ + public static boolean isOre(ItemStack item) + { + Iterator i = ores.iterator(); + while (i.hasNext()){ + ItemStack temp = i.next(); + if (temp.getItem().equals(item.getItem()) && temp.getItemDamage() == item.getItemDamage()) + return true; + } + return false; + } + + /** + * Gets the ingot from the ore + * + * @param ore the ore + * @return the ingot + */ + public static ItemStack getIngotFromOre(ItemStack ore) + { + for(ItemStack ores: JewelrycraftUtil.oreToIngot.keySet()) + if (ores.getItem().equals(ore.getItem()) && ores.getItemDamage() == ore.getItemDamage()) + return oreToIngot.get(ores); + return null; + } + + /** + * This determines whether the player unlocked an achievement or not. + * + * @param player The player to unlock the achievement + * @param achievement The achievement to be unlocked + * @return True or False depending if the player did unlock the achievement or not + */ + public static boolean AchievemtUnlocked(EntityPlayer player, Achievement achievement) + { + return ((EntityPlayerMP)player).func_147099_x().hasAchievementUnlocked(achievement); + } } -- cgit v1.2.3