From 4f7ad220df0438b6f3382110577b53f29da46453 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 24 May 2018 15:50:07 -0400 Subject: Update of all changes --- .../darkknight/jewelrycraft/util/BlockUtils.java | 318 ++++---- .../jewelrycraft/util/EntitySelector.java | 24 + .../darkknight/jewelrycraft/util/JewelryNBT.java | 561 +++++++------ .../jewelrycraft/util/JewelrycraftUtil.java | 887 ++++++++++++--------- .../darkknight/jewelrycraft/util/PlayerUtils.java | 61 +- .../darkknight/jewelrycraft/util/Variables.java | 48 +- 6 files changed, 1067 insertions(+), 832 deletions(-) mode change 100644 => 100755 src/main/java/darkknight/jewelrycraft/util/BlockUtils.java create mode 100755 src/main/java/darkknight/jewelrycraft/util/EntitySelector.java mode change 100644 => 100755 src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java mode change 100644 => 100755 src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java mode change 100644 => 100755 src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java mode change 100644 => 100755 src/main/java/darkknight/jewelrycraft/util/Variables.java (limited to 'src/main/java/darkknight/jewelrycraft/util') diff --git a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java old mode 100644 new mode 100755 index a33fd5e..18dc191 --- a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java +++ b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java @@ -9,145 +9,181 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockUtils -{ - public static final ForgeDirection DEFAULT_BLOCK_DIRECTION = ForgeDirection.WEST; - - /** - * This method is used to get the direction an entity is facing (NORTH, SOUTH, EAST or WEST) based on the entity's rotationYaw. - * - * @param entity the living entity - * @return a direction - */ - public static ForgeDirection get2dOrientation(EntityLivingBase entity) - { - int l = MathHelper.floor_double(entity.rotationYaw * 4.0F / 360.0F + 0.5D) & 0x3; - switch(l) - { - case 0: - return ForgeDirection.SOUTH; - case 1: - return ForgeDirection.WEST; - case 2: - return ForgeDirection.NORTH; - case 3: - return ForgeDirection.EAST; - } - return ForgeDirection.SOUTH; - } - - /** - * This gets a float value depending on a direction - * - * @param direction the forge direction - * @return value depending on direction - */ - public static float getRotationFromDirection(ForgeDirection direction) - { - switch(direction) - { - case NORTH: - return 0F; - case SOUTH: - return 180F; - case WEST: - return 90F; - case EAST: - return -90F; - case DOWN: - return -90f; - case UP: - return 90f; - default: - return 0f; - } - } - - /** - * This method is used to get the direction an entity is looking at (UP or DOWN) based on the entitiy's rotationPitch - * - * @param entity the living entity - * @return a forge direction - */ - public static ForgeDirection get3dOrientation(EntityLivingBase entity) - { - if (entity.rotationPitch > 45.5F) return ForgeDirection.DOWN; - else if (entity.rotationPitch < -45.5F) return ForgeDirection.UP; - return get2dOrientation(entity); - } - - /** - * This spawns the item specified and returns the EntityItem it created - * - * @param worldObj the world - * @param x position of the item to drop on the X axis - * @param y position of the item to drop on the Y axis - * @param z position of the item to drop on the Z axis - * @param stack the item to spawn - * @return the EntityItem of the stack - */ - public static EntityItem dropItemStackInWorld(World worldObj, double x, double y, double z, ItemStack stack) - { - float f = 0.7F; - float d0 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; - float d1 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; - float d2 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; - EntityItem entityitem = new EntityItem(worldObj, x + d0, y + d1, z + d2, stack); - entityitem.delayBeforeCanPickup = 10; - if (stack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound)stack.getTagCompound().copy()); - worldObj.spawnEntityInWorld(entityitem); - return entityitem; - } - - /** - * It spawns the item with momentum in a certain direction - * - * @param world the world to spawn the item - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - * @param direction the direction towards which it should eject - * @param stack the item to spawn - * @return the spawned EntityItem - */ - public static EntityItem ejectItemInDirection(World world, double x, double y, double z, ForgeDirection direction, ItemStack stack) - { - EntityItem item = BlockUtils.dropItemStackInWorld(world, x, y, z, stack); - item.motionX = direction.offsetX / 5F; - item.motionY = direction.offsetY / 5F; - item.motionZ = direction.offsetZ / 5F; - return item; - } - - /** - * Drops the content of an inventory with doubles as coordinates - * - * @param inventory the inventory the items are contained in - * @param world the world in which to spawn - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - */ - public static void dropInventory(IInventory inventory, World world, double x, double y, double z) - { - if (inventory == null) return; - for(int i = 0; i < inventory.getSizeInventory(); ++i){ - ItemStack itemStack = inventory.getStackInSlot(i); - if (itemStack != null) dropItemStackInWorld(world, x, y, z, itemStack); - } - } - - /** - * Drops the content of an inventory with integer as coordinates - * - * @param inventory the inventory the items are contained in - * @param world the world in which to spawn - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - */ - public static void dropInventory(IInventory inventory, World world, int x, int y, int z) - { - dropInventory(inventory, world, x + 0.5, y + 0.5, z + 0.5); - } +public class BlockUtils { + public static final ForgeDirection DEFAULT_BLOCK_DIRECTION = + ForgeDirection.WEST; + + /** + * This method is used to get the direction an entity is facing (NORTH, + * SOUTH, EAST or WEST) based on the entity's rotationYaw. + * + * @param entity + * the living entity + * @return a direction + */ + public static ForgeDirection + get2dOrientation(EntityLivingBase entity) { + int l = MathHelper.floor_double( + entity.rotationYaw * 4.0F / 360.0F + 0.5D) & 0x3; + switch (l) { + case 0: + return ForgeDirection.SOUTH; + case 1: + return ForgeDirection.WEST; + case 2: + return ForgeDirection.NORTH; + case 3: + return ForgeDirection.EAST; + default: + return ForgeDirection.SOUTH; + } + } + + /** + * This gets a float value depending on a direction + * + * @param direction + * the forge direction + * @return value depending on direction + */ + public static float + getRotationFromDirection(ForgeDirection direction) { + switch (direction) { + case NORTH: + return 0F; + case SOUTH: + return 180F; + case WEST: + return 90F; + case EAST: + return -90F; + case DOWN: + return -90f; + case UP: + return 90f; + case UNKNOWN: + default: + return 0f; + } + } + + /** + * This method is used to get the direction an entity is looking at (UP + * or DOWN) based on the entitiy's rotationPitch + * + * @param entity + * the living entity + * @return a forge direction + */ + public static ForgeDirection + get3dOrientation(EntityLivingBase entity) { + if (entity.rotationPitch > 45.5F) + return ForgeDirection.DOWN; + else if (entity.rotationPitch < -45.5F) + return ForgeDirection.UP; + return get2dOrientation(entity); + } + + /** + * This spawns the item specified and returns the EntityItem it created + * + * @param worldObj + * the world + * @param x + * position of the item to drop on the X axis + * @param y + * position of the item to drop on the Y axis + * @param z + * position of the item to drop on the Z axis + * @param stack + * the item to spawn + * @return the EntityItem of the stack + */ + public static EntityItem dropItemStackInWorld(World worldObj, double x, + double y, double z, ItemStack stack) { + float f = 0.7F; + float d0 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; + float d1 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; + float d2 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F; + EntityItem entityitem = + new EntityItem(worldObj, x + d0, y + d1, z + d2, stack); + entityitem.delayBeforeCanPickup = 10; + if (stack.hasTagCompound()) + entityitem.getEntityItem().setTagCompound( + (NBTTagCompound) stack.getTagCompound().copy()); + worldObj.spawnEntityInWorld(entityitem); + return entityitem; + } + + /** + * It spawns the item with momentum in a certain direction + * + * @param world + * the world to spawn the item + * @param x + * the X coordinate to spawn it in + * @param y + * the Y coordinate to spawn it in + * @param z + * the Z coordinate to spawn it in + * @param direction + * the direction towards which it should eject + * @param stack + * the item to spawn + * @return the spawned EntityItem + */ + public static EntityItem ejectItemInDirection(World world, double x, + double y, double z, ForgeDirection direction, + ItemStack stack) { + EntityItem item = + BlockUtils.dropItemStackInWorld(world, x, y, z, stack); + item.motionX = direction.offsetX / 5F; + item.motionY = direction.offsetY / 5F; + item.motionZ = direction.offsetZ / 5F; + return item; + } + + /** + * Drops the content of an inventory with doubles as coordinates + * + * @param inventory + * the inventory the items are contained in + * @param world + * the world in which to spawn + * @param x + * the X coordinate to spawn it in + * @param y + * the Y coordinate to spawn it in + * @param z + * the Z coordinate to spawn it in + */ + public static void dropInventory(IInventory inventory, World world, + double x, double y, double z) { + if (inventory == null) + return; + for (int i = 0; i < inventory.getSizeInventory(); ++i) { + ItemStack itemStack = inventory.getStackInSlot(i); + if (itemStack != null) + dropItemStackInWorld(world, x, y, z, itemStack); + } + } + + /** + * Drops the content of an inventory with integer as coordinates + * + * @param inventory + * the inventory the items are contained in + * @param world + * the world in which to spawn + * @param x + * the X coordinate to spawn it in + * @param y + * the Y coordinate to spawn it in + * @param z + * the Z coordinate to spawn it in + */ + public static void dropInventory(IInventory inventory, World world, + int x, int y, int z) { + dropInventory(inventory, world, x + 0.5, y + 0.5, z + 0.5); + } } \ No newline at end of file diff --git a/src/main/java/darkknight/jewelrycraft/util/EntitySelector.java b/src/main/java/darkknight/jewelrycraft/util/EntitySelector.java new file mode 100755 index 0000000..572e2e9 --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/util/EntitySelector.java @@ -0,0 +1,24 @@ +package darkknight.jewelrycraft.util; + +import net.minecraft.command.IEntitySelector; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; + +public class EntitySelector { + + public static IEntitySelector selectMonsters; + + static { + selectMonsters = new IEntitySelector() { + + @Override + public boolean isEntityApplicable(Entity arg0) { + if (arg0.isCreatureType(EnumCreatureType.monster, false)) { + return true; + } + + return false; + } + }; + } +} diff --git a/src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java b/src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java old mode 100644 new mode 100755 index 52d965c..7b74403 --- a/src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java +++ b/src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java @@ -6,269 +6,300 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -public class JewelryNBT -{ - // TODO NBT Tag Adding - public static void addItem(ItemStack item, ItemStack target) - { - if (target != null){ - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - NBTTagCompound targetNBT = new NBTTagCompound(); - target.writeToNBT(targetNBT); - itemStackData.setTag("target", targetNBT); - } - } - - /** - * @param item The item you want to add the NBT data on - * @param metal The metal you want to add on the item - */ - public static void addMetal(ItemStack item, ItemStack metal) - { - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - if(metal != null){ - NBTTagCompound ingotNBT = new NBTTagCompound(); - metal.writeToNBT(ingotNBT); - itemStackData.setTag("ingot", ingotNBT); - } - } - - /** - * @param item The item you want to add the NBT data on - * @param gem The gem you want to add on the item - */ - public static void addGem(ItemStack item, ItemStack gem) - { - if (gem != null){ - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - NBTTagCompound gemNBT = new NBTTagCompound(); - gem.writeToNBT(gemNBT); - itemStackData.setTag("gem", gemNBT); - } - } - - /** - * @param item The item you want to add the NBT data on - * @param modifier The modifier you want to add on the item - */ - public static void addModifiers(ItemStack item, ArrayList modifier) - { - if (modifier != null){ - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - for(int i = 0; i < modifier.size(); i++){ - NBTTagCompound modifierNBT = new NBTTagCompound(); - modifier.get(i).writeToNBT(modifierNBT); - itemStackData.setTag("modifier" + i, modifierNBT); - } - itemStackData.setInteger("modifierSize", modifier.size()); - } - } - - /** - * @param item - * @param color - */ - public static void addIngotColor(ItemStack item, int color) - { - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - itemStackData.setInteger("ingotColor", color); - } - - // TODO - /** - * @param item - * @param color - */ - public static void addGemColor(ItemStack item, int color) - { - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - itemStackData.setInteger("gemColor", color); - } - - // TODO NTB Tag Checking - /** - * @param item - * @param tag - * @return - */ - public static boolean hasTag(ItemStack item, String tag) - { - NBTTagCompound itemStackData; - if (item.hasTagCompound()) itemStackData = item.getTagCompound(); - else{ - itemStackData = new NBTTagCompound(); - item.setTagCompound(itemStackData); - } - if (itemStackData.hasKey(tag)) return true; - return false; - } - - /** - * @param stack - * @param gem - * @return - */ - public static boolean isGemX(ItemStack stack, ItemStack gem) - { - if (gem(stack) != null && gem(stack).getItem() == gem.getItem() && gem(stack).getItemDamage() == gem.getItemDamage()) return true; - return false; - } - - /** - * @param stack - * @param modifier - * @return - */ - public static boolean doesModifierExist(ItemStack stack, ItemStack modifier) - { - if (modifier(stack) != null){ - ArrayList list = modifier(stack); - for(int i = 0; i < list.size(); i++) - if (list.get(i).getItem() == modifier.getItem() && list.get(i).getItemDamage() == modifier.getItemDamage()) return true; - } - return false; - } - - public static int modifierSize(ItemStack stack, ItemStack modifier) - { - if (modifier(stack) != null){ - ArrayList list = modifier(stack); - for(int i = 0; i < list.size(); i++) - if (list.get(i).getItem() == modifier.getItem() && list.get(i).getItemDamage() == modifier.getItemDamage()) return list.get(i).stackSize; - } - return -1; - } - - public static int numberOfModifiers(ItemStack stack) - { - if (modifier(stack) != null) return modifier(stack).size(); - return -1; - } - - /** - * @param stack - * @param ingot - * @return - */ - public static boolean isIngotX(ItemStack stack, ItemStack ingot) - { - if (ingot(stack) != null && ingot(stack).getItem() == ingot.getItem() && ingot(stack).getItemDamage() == ingot.getItemDamage()) return true; - return false; - } - - // TODO Return components based on NBT - public static ItemStack item(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound() && stack.getTagCompound().hasKey("target")){ - NBTTagCompound itemNBT = (NBTTagCompound)stack.getTagCompound().getTag("target"); - ItemStack target = new ItemStack(Item.getItemById(0), 0, 0); - target.readFromNBT(itemNBT); - return target; - } - return null; - } - - /** - * @param stack - * @return - */ - public static ItemStack gem(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound() && stack.getTagCompound().hasKey("gem")){ - NBTTagCompound jewelNBT = (NBTTagCompound)stack.getTagCompound().getTag("gem"); - ItemStack gem = new ItemStack(Item.getItemById(0), 0, 0); - gem.readFromNBT(jewelNBT); - return gem; - } - return null; - } - - /** - * @param stack - * @return - */ - public static ArrayList modifier(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound()){ - int size = stack.getTagCompound().getInteger("modifierSize"); - ArrayList list = new ArrayList(); - for(int i = 0; i < size; i++){ - ItemStack modifier = new ItemStack(Item.getItemById(0), 0, 0); - NBTTagCompound modifierNBT = (NBTTagCompound)stack.getTagCompound().getTag("modifier" + i); - modifier.readFromNBT(modifierNBT); - list.add(modifier); - } - return list; - } - return null; - } - - /** - * @param stack - * @return - */ - public static ItemStack ingot(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound() && stack.getTagCompound().hasKey("ingot")){ - NBTTagCompound ingotNBT = (NBTTagCompound)stack.getTagCompound().getTag("ingot"); - ItemStack ingot = new ItemStack(Item.getItemById(0), 0, 0); - ingot.readFromNBT(ingotNBT); - return ingot; - } - return null; - } - - /** - * @param stack - * @return - */ - public static int ingotColor(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound() && stack.getTagCompound().hasKey("ingotColor")) - return stack.getTagCompound().getInteger("ingotColor"); - return 16777215; - } - - // TODO - /** - * @param stack - * @return - */ - public static int gemColor(ItemStack stack) - { - if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound() && stack.getTagCompound().hasKey("gemColor")) - return stack.getTagCompound().getInteger("gemColor"); - return 16777215; - } - +public class JewelryNBT { + // TODO NBT Tag Adding + public static void addItem(ItemStack item, ItemStack target) { + if (target != null) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + NBTTagCompound targetNBT = new NBTTagCompound(); + target.writeToNBT(targetNBT); + itemStackData.setTag("target", targetNBT); + } + } + + /** + * @param item + * The item you want to add the NBT data on + * @param metal + * The metal you want to add on the item + */ + public static void addMetal(ItemStack item, ItemStack metal) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + if (metal != null) { + NBTTagCompound ingotNBT = new NBTTagCompound(); + metal.writeToNBT(ingotNBT); + itemStackData.setTag("ingot", ingotNBT); + } + } + + /** + * @param item + * The item you want to add the NBT data on + * @param gem + * The gem you want to add on the item + */ + public static void addGem(ItemStack item, ItemStack gem) { + if (gem != null) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + NBTTagCompound gemNBT = new NBTTagCompound(); + gem.writeToNBT(gemNBT); + itemStackData.setTag("gem", gemNBT); + } + } + + /** + * @param item + * The item you want to add the NBT data on + * @param modifier + * The modifier you want to add on the item + */ + public static void addModifiers(ItemStack item, + ArrayList modifier) { + if (modifier != null) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + for (int i = 0; i < modifier.size(); i++) { + NBTTagCompound modifierNBT = new NBTTagCompound(); + modifier.get(i).writeToNBT(modifierNBT); + itemStackData.setTag("modifier" + i, modifierNBT); + } + itemStackData.setInteger("modifierSize", modifier.size()); + } + } + + /** + * @param item + * @param color + */ + public static void addIngotColor(ItemStack item, int color) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + itemStackData.setInteger("ingotColor", color); + } + + // TODO + /** + * @param item + * @param color + */ + public static void addGemColor(ItemStack item, int color) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + itemStackData.setInteger("gemColor", color); + } + + // TODO NTB Tag Checking + /** + * @param item + * @param tag + * @return + */ + public static boolean hasTag(ItemStack item, String tag) { + NBTTagCompound itemStackData; + if (item.hasTagCompound()) + itemStackData = item.getTagCompound(); + else { + itemStackData = new NBTTagCompound(); + item.setTagCompound(itemStackData); + } + if (itemStackData.hasKey(tag)) + return true; + return false; + } + + /** + * @param stack + * @param gem + * @return + */ + public static boolean isGemX(ItemStack stack, ItemStack gem) { + if (gem(stack) != null && gem(stack).getItem() == gem.getItem() + && gem(stack).getItemDamage() == gem.getItemDamage()) + return true; + return false; + } + + /** + * @param stack + * @param modifier + * @return + */ + public static boolean doesModifierExist(ItemStack stack, + ItemStack modifier) { + if (modifier(stack) != null) { + ArrayList list = modifier(stack); + for (int i = 0; i < list.size(); i++) + if (list.get(i).getItem() == modifier.getItem() + && list.get(i).getItemDamage() == modifier + .getItemDamage()) + return true; + } + return false; + } + + public static int modifierSize(ItemStack stack, ItemStack modifier) { + if (modifier(stack) != null) { + ArrayList list = modifier(stack); + for (int i = 0; i < list.size(); i++) + if (list.get(i).getItem() == modifier.getItem() + && list.get(i).getItemDamage() == modifier + .getItemDamage()) + return list.get(i).stackSize; + } + return -1; + } + + public static int numberOfModifiers(ItemStack stack) { + if (modifier(stack) != null) + return modifier(stack).size(); + return -1; + } + + /** + * @param stack + * @param ingot + * @return + */ + public static boolean isIngotX(ItemStack stack, ItemStack ingot) { + if (ingot(stack) != null + && ingot(stack).getItem() == ingot.getItem() + && ingot(stack).getItemDamage() == ingot.getItemDamage()) + return true; + return false; + } + + // TODO Return components based on NBT + public static ItemStack item(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound() + && stack.getTagCompound().hasKey("target")) { + NBTTagCompound itemNBT = (NBTTagCompound) stack + .getTagCompound().getTag("target"); + ItemStack target = new ItemStack(Item.getItemById(0), 0, 0); + target.readFromNBT(itemNBT); + return target; + } + return null; + } + + /** + * @param stack + * @return + */ + public static ItemStack gem(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound() + && stack.getTagCompound().hasKey("gem")) { + NBTTagCompound jewelNBT = + (NBTTagCompound) stack.getTagCompound().getTag("gem"); + ItemStack gem = new ItemStack(Item.getItemById(0), 0, 0); + gem.readFromNBT(jewelNBT); + return gem; + } + return null; + } + + /** + * @param stack + * @return + */ + public static ArrayList modifier(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound()) { + int size = stack.getTagCompound().getInteger("modifierSize"); + ArrayList list = new ArrayList<>(); + for (int i = 0; i < size; i++) { + ItemStack modifier = + new ItemStack(Item.getItemById(0), 0, 0); + NBTTagCompound modifierNBT = (NBTTagCompound) stack + .getTagCompound().getTag("modifier" + i); + modifier.readFromNBT(modifierNBT); + list.add(modifier); + } + return list; + } + return null; + } + + /** + * @param stack + * @return + */ + public static ItemStack ingot(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound() + && stack.getTagCompound().hasKey("ingot")) { + NBTTagCompound ingotNBT = (NBTTagCompound) stack + .getTagCompound().getTag("ingot"); + ItemStack ingot = new ItemStack(Item.getItemById(0), 0, 0); + ingot.readFromNBT(ingotNBT); + return ingot; + } + return null; + } + + /** + * @param stack + * @return + */ + public static int ingotColor(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound() + && stack.getTagCompound().hasKey("ingotColor")) + return stack.getTagCompound().getInteger("ingotColor"); + return 16777215; + } + + // TODO + /** + * @param stack + * @return + */ + public static int gemColor(ItemStack stack) { + if (stack != null + && stack != new ItemStack(Item.getItemById(0), 0, 0) + && stack.hasTagCompound() + && stack.getTagCompound().hasKey("gemColor")) + return stack.getTagCompound().getInteger("gemColor"); + return 16777215; + } + } diff --git a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java old mode 100644 new mode 100755 index 4c9669e..c61e82b --- a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java +++ b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java @@ -1,18 +1,11 @@ package darkknight.jewelrycraft.util; -import java.awt.image.BufferedImage; -import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; import java.util.Random; -import javax.imageio.ImageIO; + import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameData; @@ -29,7 +22,6 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockAir; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.resources.IResourceManager; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -45,376 +37,509 @@ 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 (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); - } +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 HEARTS; + + /** + * Adds gems and jewelry to their appropriate lists + */ + 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)); + + // Add random modifiers + for (Object item : GameData.getItemRegistry()) { + if (item != null) { + if (Loader.isModLoaded("Mantle") + && ((Item) item).getUnlocalizedName() + .equals("Mantle:item.mantle.manual")) { + continue; + } + + try { + if (itemHasSubtypes(item)) { + ((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 iaex) { + throw new RuntimeException(iaex); + } + } + + private static boolean itemHasSubtypes(Object item) { + return ((Item) item).getHasSubtypes() + && FMLCommonHandler.instance().getSide() == Side.CLIENT; + } + + @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 (itemHasSubtypes(item)) { + ((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) { + if (stack != null) { + if (Item.getIdFromItem(stack.getItem()) > 0 && stack.getItem() + .getColorFromItemStack(stack, pass) == 16777215) { + return (int) Math.random() * 16777215; + } + + // This takes too long for me + // IResourceManager rm = + // Minecraft.getMinecraft().getResourceManager(); + // ResourceLocation ingot; + // BufferedImage icon; + // 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); + + return stack.getItem().getColorFromItemStack(stack, pass); + } + + return (int) Math.random() * 16777215; + } + + public static ResourceLocation getLocation(ItemStack item) { + String domain = ""; + + String texture; + + IIcon itemIcon = item.getItem().getIcon(item, 0); + + if (isValidBlockFromItem(item)) { + 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; + } + + private static boolean isValidBlockFromItem(ItemStack item) { + return !(Block + .getBlockFromItem(item.getItem()) instanceof BlockAir) + && !Block.getBlockFromItem(item.getItem()) + .getIcon(0, item.getItemDamage()).getIconName() + .equals("soul_sand"); + } + + /* + * @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) { + return isItemStackIn(item, gem.iterator()); + } + + /** + * 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) { + return isItemStackIn(item, metal.iterator()); + } + + /** + * 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) { + return isItemStackIn(item, jewelry.iterator()); + } + + private static boolean isItemStackIn(ItemStack item, + Iterator i) { + 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) { + return isItemStackIn(item, ores.iterator()); + } + + /** + * Gets the ingot from the ore + * + * @param ore + * the ore + * @return the ingot + */ + public static ItemStack getIngotFromOre(ItemStack ore) { + for (ItemStack ors : JewelrycraftUtil.oreToIngot.keySet()) + if (ors.getItem().equals(ore.getItem()) + && ors.getItemDamage() == ore.getItemDamage()) { + return oreToIngot.get(ors); + } + + 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); + } } diff --git a/src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java b/src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java old mode 100644 new mode 100755 index f1655c0..c981555 --- a/src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java +++ b/src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java @@ -7,32 +7,37 @@ import net.minecraft.nbt.NBTTagCompound; /** * Code taken from OpenBlocks */ -public class PlayerUtils -{ - /** - * Returns the NBTTag of the player - * - * @param player the player - * @param modName the mod name - * @return appropriate NBTTag - */ - public static NBTTagCompound getModPlayerPersistTag(EntityPlayer player, String modName) - { - if (player.worldObj.isRemote && ScreenHandler.tagCache != null) return ScreenHandler.tagCache; - - NBTTagCompound tag = player.getEntityData(); - NBTTagCompound persistTag = null; - if (tag.hasKey(EntityPlayer.PERSISTED_NBT_TAG)) persistTag = tag.getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG); - else{ - persistTag = new NBTTagCompound(); - tag.setTag(EntityPlayer.PERSISTED_NBT_TAG, persistTag); - } - NBTTagCompound modTag = null; - if (persistTag.hasKey(modName)) modTag = persistTag.getCompoundTag(modName); - else{ - modTag = new NBTTagCompound(); - persistTag.setTag(modName, modTag); - } - return modTag; - } +public class PlayerUtils { + /** + * Returns the NBTTag of the player + * + * @param player + * the player + * @param modName + * the mod name + * @return appropriate NBTTag + */ + public static NBTTagCompound + getModPlayerPersistTag(EntityPlayer player, String modName) { + if (player.worldObj.isRemote && ScreenHandler.tagCache != null) + return ScreenHandler.tagCache; + + NBTTagCompound tag = player.getEntityData(); + NBTTagCompound persistTag = null; + if (tag.hasKey(EntityPlayer.PERSISTED_NBT_TAG)) + persistTag = + tag.getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG); + else { + persistTag = new NBTTagCompound(); + tag.setTag(EntityPlayer.PERSISTED_NBT_TAG, persistTag); + } + NBTTagCompound modTag = null; + if (persistTag.hasKey(modName)) + modTag = persistTag.getCompoundTag(modName); + else { + modTag = new NBTTagCompound(); + persistTag.setTag(modName, modTag); + } + return modTag; + } } \ No newline at end of file diff --git a/src/main/java/darkknight/jewelrycraft/util/Variables.java b/src/main/java/darkknight/jewelrycraft/util/Variables.java old mode 100644 new mode 100755 index 4ced1ea..53ec9fd --- a/src/main/java/darkknight/jewelrycraft/util/Variables.java +++ b/src/main/java/darkknight/jewelrycraft/util/Variables.java @@ -2,21 +2,35 @@ package darkknight.jewelrycraft.util; import net.minecraft.util.ResourceLocation; -public class Variables -{ - public static final int CURSE_POINTS_PER_LEVEL = 7000; - - public static final String MODID = "jewelrycraft2"; - public static final String MODNAME = "Jewelrycraft 2"; - public static final String VERSION = "1.1.4"; - public static final String PACKET_CHANNEL = "jewelrycraft2"; - - public static final String CONFIG_GUI = "darkknight.jewelrycraft.config.ConfigGuiFactory"; - public static final String CLIENT_PROXY = "darkknight.jewelrycraft.proxy.ClientProxy"; - public static final String SERVER_PROXY = "darkknight.jewelrycraft.proxy.CommonProxy"; - - public static final ResourceLocation PEDESTAL_TEXTURE = new ResourceLocation(Variables.MODID, "textures/tileentities/BricksPedestal.png"); - public static final ResourceLocation SHADOW_HAND_TEXTURE = new ResourceLocation(Variables.MODID, "textures/tileentities/ShadowHand.png"); - public static final ResourceLocation VILLAGER_TEXTURE = new ResourceLocation(Variables.MODID, "textures/entities/jeweler.png"); - public static final ResourceLocation MISC_TEXTURE = new ResourceLocation(Variables.MODID, "textures/gui/hearts.png"); +public class Variables { + public static final int CURSE_POINTS_PER_LEVEL = 7000; + + public static final String MODID = + "jewelrycraft2"; + public static final String MODNAME = + "Jewelrycraft 2"; + public static final String VERSION = + "1.1.4"; + public static final String PACKET_CHANNEL = + "jewelrycraft2"; + + public static final String CONFIG_GUI = + "darkknight.jewelrycraft.config.ConfigGuiFactory"; + public static final String CLIENT_PROXY = + "darkknight.jewelrycraft.proxy.ClientProxy"; + public static final String SERVER_PROXY = + "darkknight.jewelrycraft.proxy.CommonProxy"; + + public static final ResourceLocation PEDESTAL_TEXTURE = + new ResourceLocation(Variables.MODID, + "textures/tileentities/BricksPedestal.png"); + public static final ResourceLocation SHADOW_HAND_TEXTURE = + new ResourceLocation(Variables.MODID, + "textures/tileentities/ShadowHand.png"); + public static final ResourceLocation VILLAGER_TEXTURE = + new ResourceLocation(Variables.MODID, + "textures/entities/jeweler.png"); + public static final ResourceLocation MISC_TEXTURE = + new ResourceLocation(Variables.MODID, + "textures/gui/hearts.png"); } -- cgit v1.2.3