summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/util
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:50:07 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:50:07 -0400
commit4f7ad220df0438b6f3382110577b53f29da46453 (patch)
tree07d5e7c812721753cdbe3df7226dad5dc3802c29 /src/main/java/darkknight/jewelrycraft/util
parent01c8701b68986ccfa83e902515716838d6829311 (diff)
Update of all changes
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/util')
-rwxr-xr-x[-rw-r--r--]src/main/java/darkknight/jewelrycraft/util/BlockUtils.java318
-rwxr-xr-xsrc/main/java/darkknight/jewelrycraft/util/EntitySelector.java24
-rwxr-xr-x[-rw-r--r--]src/main/java/darkknight/jewelrycraft/util/JewelryNBT.java561
-rwxr-xr-x[-rw-r--r--]src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java887
-rwxr-xr-x[-rw-r--r--]src/main/java/darkknight/jewelrycraft/util/PlayerUtils.java61
-rwxr-xr-x[-rw-r--r--]src/main/java/darkknight/jewelrycraft/util/Variables.java48
6 files changed, 1067 insertions, 832 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java
index a33fd5e..18dc191 100644..100755
--- 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
index 52d965c..7b74403 100644..100755
--- 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<ItemStack> 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<ItemStack> 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<ItemStack> 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<ItemStack> modifier(ItemStack stack)
- {
- if (stack != null && stack != new ItemStack(Item.getItemById(0), 0, 0) && stack.hasTagCompound()){
- int size = stack.getTagCompound().getInteger("modifierSize");
- ArrayList<ItemStack> list = new ArrayList<ItemStack>();
- 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<ItemStack> 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<ItemStack> 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<ItemStack> 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<ItemStack> modifier(ItemStack stack) {
+ if (stack != null
+ && stack != new ItemStack(Item.getItemById(0), 0, 0)
+ && stack.hasTagCompound()) {
+ int size = stack.getTagCompound().getInteger("modifierSize");
+ ArrayList<ItemStack> 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
index 4c9669e..c61e82b 100644..100755
--- 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<ItemStack> objects = new ArrayList<ItemStack>();
- public static ArrayList<ItemStack> gem = new ArrayList<ItemStack>();
- public static ArrayList<ItemStack> jewelry = new ArrayList<ItemStack>();
- public static ArrayList<ItemStack> metal = new ArrayList<ItemStack>();
- public static ArrayList<ItemStack> ores = new ArrayList<ItemStack>();
- public static HashMap<ItemStack, ItemStack> oreToIngot = new HashMap<ItemStack, ItemStack>();
- public static HashMap<ItemStack, Integer> colors = new HashMap<ItemStack, Integer>();
- public static ArrayList<String> jamcraftPlayers = new ArrayList<String>();
- private static ArrayList<ItemStack> items = new ArrayList<ItemStack>();
- public static ArrayList<WorldGenStructure> structures = new ArrayList<WorldGenStructure>();
- 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<ItemStack> addRandomModifiers(int randValue)
- {
- ArrayList<ItemStack> list = new ArrayList<ItemStack>();
- 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<ItemStack> 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<ItemStack> 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<ItemStack> 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<ItemStack> 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<ItemStack> 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<ItemStack> objects =
+ new ArrayList<>();
+
+ public static ArrayList<ItemStack> gem =
+ new ArrayList<>();
+
+ public static ArrayList<ItemStack> jewelry =
+ new ArrayList<>();
+
+ public static ArrayList<ItemStack> metal =
+ new ArrayList<>();
+
+ public static ArrayList<ItemStack> ores =
+ new ArrayList<>();
+
+ public static HashMap<ItemStack, ItemStack> oreToIngot =
+ new HashMap<>();
+ public static HashMap<ItemStack, Integer> colors =
+ new HashMap<>();
+
+ public static ArrayList<String> jamcraftPlayers =
+ new ArrayList<>();
+
+ private static ArrayList<ItemStack> items =
+ new ArrayList<>();
+
+ public static ArrayList<WorldGenStructure> 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<ItemStack> addRandomModifiers(int randValue) {
+ ArrayList<ItemStack> 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<ItemStack> 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<ItemStack> 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
index f1655c0..c981555 100644..100755
--- 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
index 4ced1ea..53ec9fd 100644..100755
--- 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");
}