summaryrefslogtreecommitdiff
path: root/java/darkknight/jewelrycraft/item
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-02-03 21:09:09 +0000
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-02-03 21:09:09 +0000
commit3f4c717de5ebc9b942d65ae45ac87c43bdf8a31b (patch)
tree15c68c8b61dbd0b7f44937a5c790c4b844e50f58 /java/darkknight/jewelrycraft/item
parent73ca377dc01f859dabd7b07738cb7aeb762272b1 (diff)
Made a few modifications to some classes, added earrings and bracelets. Improved coloring algorithm and balanced the Thieving Glove
Diffstat (limited to 'java/darkknight/jewelrycraft/item')
-rw-r--r--java/darkknight/jewelrycraft/item/ItemBaseJewelry.java201
-rw-r--r--java/darkknight/jewelrycraft/item/ItemBracelet.java27
-rw-r--r--java/darkknight/jewelrycraft/item/ItemClayMolds.java4
-rw-r--r--java/darkknight/jewelrycraft/item/ItemCrystal.java6
-rw-r--r--java/darkknight/jewelrycraft/item/ItemEarrings.java27
-rw-r--r--java/darkknight/jewelrycraft/item/ItemList.java8
-rw-r--r--java/darkknight/jewelrycraft/item/ItemMolds.java2
-rw-r--r--java/darkknight/jewelrycraft/item/ItemMoltenMetal.java75
-rw-r--r--java/darkknight/jewelrycraft/item/ItemMoltenMetalBucket.java85
-rw-r--r--java/darkknight/jewelrycraft/item/ItemMultiIngot.java46
-rw-r--r--java/darkknight/jewelrycraft/item/ItemNecklace.java261
-rw-r--r--java/darkknight/jewelrycraft/item/ItemRing.java601
-rw-r--r--java/darkknight/jewelrycraft/item/ItemThiefGloves.java100
13 files changed, 458 insertions, 985 deletions
diff --git a/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java b/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java
new file mode 100644
index 0000000..9d65a60
--- /dev/null
+++ b/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java
@@ -0,0 +1,201 @@
+package darkknight.jewelrycraft.item;
+
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Transparency;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.imageio.ImageIO;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.client.renderer.texture.TextureManager;
+import net.minecraft.client.resources.IResourceManager;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import darkknight.jewelrycraft.util.JewelryNBT;
+
+public class ItemBaseJewelry extends Item
+{
+ public ItemBaseJewelry()
+ {
+ super();
+ this.setMaxStackSize(1);
+ }
+
+ @Override
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public int getColorFromItemStack(ItemStack stack, int pass)
+ {
+ try
+ {
+ return color(stack, pass);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ return 16777215;
+ }
+
+ public static int color(ItemStack stack, int pass) throws IOException
+ {
+ String domain = "", texture;
+ IResourceManager rm = Minecraft.getMinecraft().getResourceManager();
+ BufferedImage icon;
+ if (pass == 0 && stack != null && JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0 && JewelryNBT.ingot(stack).getIconIndex() != null && JewelryNBT.ingotColor(stack) == 16777215)
+ {
+ ItemStack in = JewelryNBT.ingot(stack);
+ if (Item.getIdFromItem(in.getItem()) == Block.getIdFromBlock(Blocks.stained_glass) || Item.getIdFromItem(in.getItem()) == Block.getIdFromBlock(Blocks.stained_hardened_clay) || Item.getIdFromItem(in.getItem()) == Block.getIdFromBlock(Blocks.wool) || Item.getIdFromItem(in.getItem()) == Block.getIdFromBlock(Blocks.carpet)) in.setItemDamage(15 - in.getItemDamage());
+ IIcon itemIcon = in.getItem().getIcon(in, 0);
+ String ingotIconName = itemIcon.getIconName();
+
+ if (ingotIconName.substring(0, ingotIconName.indexOf(":") + 1) != "") domain = ingotIconName.substring(0, ingotIconName.indexOf(":") + 1).replace(":", " ").trim();
+ else domain = "minecraft";
+
+ texture = ingotIconName.substring(ingotIconName.lastIndexOf(":") + 1) + ".png";
+ ResourceLocation ingot = null;
+ TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager();
+
+ if (texturemanager.getResourceLocation(JewelryNBT.ingot(stack).getItemSpriteNumber()).toString().contains("items")) ingot = new ResourceLocation(domain.toLowerCase(), "textures/items/" + texture);
+ else ingot = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture);
+
+ 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);
+ }
+ int color = getMostCommonColour(m);
+ if (JewelryNBT.ingot(stack) != null && JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1) != 16777215) JewelryNBT.addIngotColor(stack, JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1));
+ else JewelryNBT.addIngotColor(stack, color);
+ }
+ else if (pass == 1 && stack != null && JewelryNBT.gem(stack) != null && JewelryNBT.gem(stack).getIconIndex() != null && JewelryNBT.gem(stack) != null)
+ {
+ IIcon itemIcon = JewelryNBT.gem(stack).getItem().getIconFromDamage(JewelryNBT.gem(stack).getItemDamage());
+ String jewelIconName = itemIcon.getIconName();
+
+ if (jewelIconName.substring(0, jewelIconName.indexOf(":") + 1) != "") domain = jewelIconName.substring(0, jewelIconName.indexOf(":") + 1).replace(":", " ").trim();
+ else domain = "minecraft";
+
+ texture = jewelIconName.substring(jewelIconName.lastIndexOf(":") + 1) + ".png";
+ ResourceLocation jewelLoc = null;
+
+ if (JewelryNBT.gem(stack).getUnlocalizedName().contains("item")) jewelLoc = new ResourceLocation(domain, "textures/items/" + texture);
+ else jewelLoc = new ResourceLocation(domain, "textures/blocks/" + texture);
+
+ icon = ImageIO.read(rm.getResource(jewelLoc).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);
+ }
+ int color = getMostCommonColour(m);
+ if (JewelryNBT.gem(stack).getItem().getColorFromItemStack(JewelryNBT.gem(stack), 1) == 16777215) JewelryNBT.addGemColor(stack, color);
+ else JewelryNBT.addGemColor(stack, JewelryNBT.gem(stack).getItem().getColorFromItemStack(JewelryNBT.gem(stack), 1));
+ }
+ if (pass == 0 && JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
+ if (pass == 1 && JewelryNBT.gem(stack) != null) return JewelryNBT.gemColor(stack);
+ else if (JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
+ return 16777215;
+ }
+
+ 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;
+ }
+
+ 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 String getItemStackDisplayName(ItemStack stack)
+ {
+ if (JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) return JewelryNBT.ingot(stack).getDisplayName().replace("Ingot", " ").trim() + " " + ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
+ return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
+ }
+
+ /**
+ * allows items to add custom lines of information to the mouseover description
+ */
+ public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4)
+ {
+ if (stack.hasTagCompound() && par4)
+ {
+ ItemStack ingot = JewelryNBT.ingot(stack);
+ if (ingot != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) list.add("Ingot: " + EnumChatFormatting.YELLOW + ingot.getDisplayName());
+
+ ItemStack gem = JewelryNBT.gem(stack);
+ if (gem != null) list.add("Gem: " + EnumChatFormatting.BLUE + gem.getDisplayName());
+
+ ArrayList<ItemStack> modifier = JewelryNBT.modifier(stack);
+ if (!modifier.isEmpty()) list.add("Modifiers: ");
+ for (int i = 0; i < modifier.size(); i++)
+ list.add(EnumChatFormatting.DARK_PURPLE + modifier.get(i).getDisplayName() + " x" + modifier.get(i).stackSize);
+ }
+ }
+}
diff --git a/java/darkknight/jewelrycraft/item/ItemBracelet.java b/java/darkknight/jewelrycraft/item/ItemBracelet.java
new file mode 100644
index 0000000..8b034c7
--- /dev/null
+++ b/java/darkknight/jewelrycraft/item/ItemBracelet.java
@@ -0,0 +1,27 @@
+package darkknight.jewelrycraft.item;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import darkknight.jewelrycraft.util.JewelryNBT;
+
+public class ItemBracelet extends ItemBaseJewelry
+{
+ public IIcon gem;
+ public ItemBracelet()
+ {
+ }
+
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ itemIcon = iconRegister.registerIcon("jewelrycraft:bracelet");
+ gem = iconRegister.registerIcon("jewelrycraft:jewelBracelet");
+ }
+
+ public IIcon getIcon(ItemStack stack, int pass)
+ {
+ if (pass == 0) return itemIcon;
+ if (pass == 1 && JewelryNBT.gem(stack) != null) return gem;
+ return itemIcon;
+ }
+}
diff --git a/java/darkknight/jewelrycraft/item/ItemClayMolds.java b/java/darkknight/jewelrycraft/item/ItemClayMolds.java
index 8c2eafa..29a2526 100644
--- a/java/darkknight/jewelrycraft/item/ItemClayMolds.java
+++ b/java/darkknight/jewelrycraft/item/ItemClayMolds.java
@@ -15,7 +15,7 @@ public class ItemClayMolds extends Item
{
/** List of molds color names */
public static final String[] moldsItemNames = new String[]
- { "clayIngot", "clayRing", "clayNecklace" };
+ { "clayIngot", "clayRing", "clayNecklace", "clayBracelet", "clayEarrings"};
@SideOnly(Side.CLIENT)
private IIcon[] moldsIcons;
@@ -42,7 +42,7 @@ public class ItemClayMolds extends Item
* ItemStack so different stacks can have different names based on their
* damage or NBT.
*/
- public String getUnlocalizedNameInefficiently(ItemStack par1ItemStack)
+ public String getUnlocalizedName(ItemStack par1ItemStack)
{
int i = MathHelper.clamp_int(par1ItemStack.getItemDamage(), 0, moldsItemNames.length - 1);
return super.getUnlocalizedName() + "." + moldsItemNames[i];
diff --git a/java/darkknight/jewelrycraft/item/ItemCrystal.java b/java/darkknight/jewelrycraft/item/ItemCrystal.java
index e044385..c9a234b 100644
--- a/java/darkknight/jewelrycraft/item/ItemCrystal.java
+++ b/java/darkknight/jewelrycraft/item/ItemCrystal.java
@@ -59,10 +59,14 @@ public class ItemCrystal extends Item
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int i, int j, int k, int side, float par8, float par9, float par10)
{
- //System.out.println(world.getBlockMetadata(i, j, k));
return true;
}
+ public String getUnlocalizedName(ItemStack stack)
+ {
+ return super.getUnlocalizedName() + "." + stack.getItemDamage();
+ }
+
@SuppressWarnings(
{ "unchecked", "rawtypes" })
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List)
diff --git a/java/darkknight/jewelrycraft/item/ItemEarrings.java b/java/darkknight/jewelrycraft/item/ItemEarrings.java
new file mode 100644
index 0000000..abff9cc
--- /dev/null
+++ b/java/darkknight/jewelrycraft/item/ItemEarrings.java
@@ -0,0 +1,27 @@
+package darkknight.jewelrycraft.item;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import darkknight.jewelrycraft.util.JewelryNBT;
+
+public class ItemEarrings extends ItemBaseJewelry
+{
+ public IIcon gem;
+ public ItemEarrings()
+ {
+ }
+
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ itemIcon = iconRegister.registerIcon("jewelrycraft:earrings");
+ gem = iconRegister.registerIcon("jewelrycraft:jewelEarrings");
+ }
+
+ public IIcon getIcon(ItemStack stack, int pass)
+ {
+ if (pass == 0) return itemIcon;
+ if (pass == 1 && JewelryNBT.gem(stack) != null) return gem;
+ return itemIcon;
+ }
+}
diff --git a/java/darkknight/jewelrycraft/item/ItemList.java b/java/darkknight/jewelrycraft/item/ItemList.java
index fa718df..1d060ec 100644
--- a/java/darkknight/jewelrycraft/item/ItemList.java
+++ b/java/darkknight/jewelrycraft/item/ItemList.java
@@ -20,6 +20,8 @@ public class ItemList
public static Item crystal;
public static ItemRing ring;
public static ItemNecklace necklace;
+ public static ItemBracelet bracelet;
+ public static ItemEarrings earrings;
public static Item guide;
public static ItemMoltenMetalBucket bucket;
public static ItemMoltenMetal metal;
@@ -35,8 +37,10 @@ public class ItemList
molds = new ItemMolds().setUnlocalizedName("Jewelrycraft.mold").setTextureName("Mold").setCreativeTab(JewelrycraftMod.jewelrycraft);
clayMolds = new ItemClayMolds().setUnlocalizedName("Jewelrycraft.mold").setTextureName("Mold").setCreativeTab(JewelrycraftMod.jewelrycraft);
ring = (ItemRing) new ItemRing().setUnlocalizedName("Jewelrycraft.ring").setTextureName("jewelrycraft:ring");
- crystal = new ItemCrystal().setUnlocalizedName("Jewelrycraft.crystal").setTextureName("jewelrycraft:crystal").setCreativeTab(JewelrycraftMod.jewelrycraft);
necklace = (ItemNecklace) new ItemNecklace().setUnlocalizedName("Jewelrycraft.necklace").setTextureName("jewelrycraft:necklace");
+ bracelet = (ItemBracelet) new ItemBracelet().setUnlocalizedName("Jewelrycraft.bracelet").setTextureName("jewelrycraft:bracelet");
+ earrings = (ItemEarrings) new ItemEarrings().setUnlocalizedName("Jewelrycraft.earrings").setTextureName("jewelrycraft:earrings");
+ crystal = new ItemCrystal().setUnlocalizedName("Jewelrycraft.crystal").setTextureName("jewelrycraft:crystal").setCreativeTab(JewelrycraftMod.jewelrycraft);
guide = new ItemGuide().setUnlocalizedName("Jewelrycraft.guide").setTextureName("jewelrycraft:guide").setCreativeTab(JewelrycraftMod.jewelrycraft);
bucket = (ItemMoltenMetalBucket) new ItemMoltenMetalBucket().setUnlocalizedName("Jewelrycraft.bucket");
metal = (ItemMoltenMetal) new ItemMoltenMetal().setUnlocalizedName("Jewelrycraft.bucket");
@@ -47,6 +51,8 @@ public class ItemList
GameRegistry.registerItem(clayMolds, "clayMolds");
GameRegistry.registerItem(ring, "ring");
GameRegistry.registerItem(necklace, "necklace");
+ GameRegistry.registerItem(bracelet, "bracelet");
+ GameRegistry.registerItem(earrings, "earrings");
GameRegistry.registerItem(crystal, "crystal");
GameRegistry.registerItem(guide, "guide");
GameRegistry.registerItem(bucket, "moltenMetalBucket");
diff --git a/java/darkknight/jewelrycraft/item/ItemMolds.java b/java/darkknight/jewelrycraft/item/ItemMolds.java
index a335df8..0703997 100644
--- a/java/darkknight/jewelrycraft/item/ItemMolds.java
+++ b/java/darkknight/jewelrycraft/item/ItemMolds.java
@@ -15,7 +15,7 @@ public class ItemMolds extends Item
{
/** List of molds color names */
public static final String[] moldsItemNames = new String[]
- { "ingot", "ring", "necklace" };
+ { "ingot", "ring", "necklace", "bracelet", "earrings" };
@SideOnly(Side.CLIENT)
private IIcon[] moldsIcons;
diff --git a/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java b/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java
index 53f1926..ef098f5 100644
--- a/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java
+++ b/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java
@@ -1,8 +1,13 @@
package darkknight.jewelrycraft.item;
import java.awt.image.BufferedImage;
-import java.io.File;
import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
import javax.imageio.ImageIO;
@@ -53,7 +58,6 @@ public class ItemMoltenMetal extends Item
String domain = "", texture;
IResourceManager rm = Minecraft.getMinecraft().getResourceManager();
BufferedImage icon;
- int x = 0, y = 0, ok = 0, red, green, blue;
if (stack != null && JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0 && JewelryNBT.ingot(stack).getIconIndex() != null && JewelryNBT.ingotColor(stack) == 16777215)
{
IIcon itemIcon = JewelryNBT.ingot(stack).getItem().getIcon(JewelryNBT.ingot(stack), 0);
@@ -70,32 +74,61 @@ public class ItemMoltenMetal extends Item
else ingot = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture);
icon = ImageIO.read(rm.getResource(ingot).getInputStream());
- while (ok == 0)
- {
- red = (icon.getRGB(x, y) >> 16) & 0xFF;
- green = (icon.getRGB(x, y) >> 8) & 0xFF;
- blue = icon.getRGB(x, y) & 0xFF;
- if (!isColorPretty(red, green, blue))
+ 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++)
{
- if (x < icon.getTileWidth() - 1) x++;
- if (x >= icon.getTileWidth() - 1 && y < icon.getTileWidth() - 1)
- {
- x = 0;
- y++;
- }
- if (x == icon.getTileWidth() - 1 && y == icon.getTileWidth() - 1) ok = 1;
+ 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);
}
- else ok = 1;
+ try
+ {
+ int color = getMostCommonColour(m);
+ if (JewelryNBT.ingot(stack) != null && JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1) != 16777215) JewelryNBT.addIngotColor(stack, JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1));
+ else JewelryNBT.addIngotColor(stack, color);
+ }
+ catch (Exception e)
+ {
+ JewelryNBT.addIngotColor(stack, 16777215);
}
- JewelryNBT.addIngotColor(stack, icon.getRGB(x, y));
}
if (JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
- return 16777215;
+ return 0;
+ }
+
+ 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;
}
- public static boolean isColorPretty(int r, int g, int b)
+ public static boolean isGray(int[] rgbArr)
{
- if ((r >= 100 && g >= 100 && b >= 100 && r < 230 && b < 230 && g < 230) || ((r >= 100 && (g < 100 || b < 100)) || (g >= 100 && (r < 100 || b < 100)) || (b >= 100 && (g < 100 || r < 100)))) return true;
- else return false;
+ int rgbSum = rgbArr[0] + rgbArr[1] + rgbArr[2];
+ if (rgbSum > 0 && rgbSum < 256 * 3) { return false; }
+ return true;
}
}
diff --git a/java/darkknight/jewelrycraft/item/ItemMoltenMetalBucket.java b/java/darkknight/jewelrycraft/item/ItemMoltenMetalBucket.java
index c4c0a2f..5c61398 100644
--- a/java/darkknight/jewelrycraft/item/ItemMoltenMetalBucket.java
+++ b/java/darkknight/jewelrycraft/item/ItemMoltenMetalBucket.java
@@ -2,6 +2,12 @@ package darkknight.jewelrycraft.item;
import java.awt.image.BufferedImage;
import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
import javax.imageio.ImageIO;
@@ -41,8 +47,7 @@ public class ItemMoltenMetalBucket extends Item
}
/**
- * Called whenever this item is equipped and the right mouse button is
- * pressed. Args: itemStack, world, entityPlayer
+ * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer)
{
@@ -180,9 +185,9 @@ public class ItemMoltenMetalBucket extends Item
else if (stack != null && JewelryNBT.ingot(stack) != null)
{
if (!world.isRemote && flag && !material.isLiquid()) world.func_147480_a(x, y, z, true);
-
- JewelrycraftMod.saveData.setString(x + " " + y + " " + z + " " + world.provider.dimensionId, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) + ":" + JewelryNBT.ingot(stack).getItemDamage());
- JewelrycraftMod.netWrapper.sendToAll(new PacketSendLiquidData(world.provider.dimensionId, x, y, z, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()), JewelryNBT.ingot(stack).getItemDamage()));
+ int color = color(stack, 1);
+ JewelrycraftMod.saveData.setString(x + " " + y + " " + z + " " + world.provider.dimensionId, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) + ":" + JewelryNBT.ingot(stack).getItemDamage() + ":" + color);
+ JewelrycraftMod.netWrapper.sendToAll(new PacketSendLiquidData(world.provider.dimensionId, x, y, z, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()), JewelryNBT.ingot(stack).getItemDamage(), color));
world.setBlock(x, y, z, BlockList.moltenMetal, 0, 3);
return true;
@@ -229,7 +234,6 @@ public class ItemMoltenMetalBucket extends Item
String domain = "", texture;
IResourceManager rm = Minecraft.getMinecraft().getResourceManager();
BufferedImage icon;
- int x = 0, y = 0, ok = 0, red, green, blue;
if (pass == 1 && stack != null && JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0 && JewelryNBT.ingot(stack).getIconIndex() != null && JewelryNBT.ingotColor(stack) == 16777215)
{
IIcon itemIcon = JewelryNBT.ingot(stack).getItem().getIcon(JewelryNBT.ingot(stack), 0);
@@ -246,33 +250,54 @@ public class ItemMoltenMetalBucket extends Item
else ingot = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture);
icon = ImageIO.read(rm.getResource(ingot).getInputStream());
- while (ok == 0)
- {
- red = (icon.getRGB(x, y) >> 16) & 0xFF;
- green = (icon.getRGB(x, y) >> 8) & 0xFF;
- blue = icon.getRGB(x, y) & 0xFF;
- if (!isColorPretty(red, green, blue))
+ 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++)
{
- if (x < icon.getTileWidth() - 1) x++;
- if (x >= icon.getTileWidth() - 1 && y < icon.getTileWidth() - 1)
- {
- x = 0;
- y++;
- }
- if (x == icon.getTileWidth() - 1 && y == icon.getTileWidth() - 1) ok = 1;
+ 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);
}
- else ok = 1;
- }
- JewelryNBT.addIngotColor(stack, icon.getRGB(x, y));
+ int color = getMostCommonColour(m);
+ if (JewelryNBT.ingot(stack) != null && JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1) != 16777215) JewelryNBT.addIngotColor(stack, JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1));
+ else JewelryNBT.addIngotColor(stack, color);
}
if (JewelryNBT.ingot(stack) != null && pass == 1) return JewelryNBT.ingotColor(stack);
return 16777215;
}
- public static boolean isColorPretty(int r, int g, int b)
+ public static int getMostCommonColour(Map map)
{
- if ((r >= 100 && g >= 100 && b >= 100 && r < 230 && b < 230 && g < 230) || ((r >= 100 && (g < 100 || b < 100)) || (g >= 100 && (r < 100 || b < 100)) || (b >= 100 && (g < 100 || r < 100)))) return true;
- else return false;
+ 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;
+ }
+
+ 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 ItemStack getModifiedItemStack(ItemStack ingot)
@@ -284,14 +309,10 @@ public class ItemMoltenMetalBucket extends Item
public String getItemStackDisplayName(ItemStack stack)
{
- if (JewelryNBT.ingot(stack) != null){
+ if (JewelryNBT.ingot(stack) != null)
+ {
ItemStack ingot = JewelryNBT.ingot(stack);
- if(Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.stained_glass)
- || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.stained_glass_pane)
- || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.stained_hardened_clay)
- || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.wool)
- || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.carpet))
- ingot.setItemDamage(15 - ingot.getItemDamage());
+ if (Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.stained_glass) || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.stained_hardened_clay) || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.wool) || Item.getIdFromItem(ingot.getItem()) == Block.getIdFromBlock(Blocks.carpet)) ingot.setItemDamage(15 - ingot.getItemDamage());
return (StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim() + " " + ingot.getDisplayName().replace("Ingot", " ").trim();
}
return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim() + " Metal";
diff --git a/java/darkknight/jewelrycraft/item/ItemMultiIngot.java b/java/darkknight/jewelrycraft/item/ItemMultiIngot.java
deleted file mode 100644
index 8e29690..0000000
--- a/java/darkknight/jewelrycraft/item/ItemMultiIngot.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package darkknight.jewelrycraft.item;
-
-import java.util.List;
-
-import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.IIcon;
-
-public class ItemMultiIngot extends Item
-{
- public IIcon[] icons = new IIcon[2];
-
- public ItemMultiIngot()
- {
- super();
- setHasSubtypes(true);
- }
-
- @Override
- public void getSubItems(Item item, CreativeTabs tab, List items)
- {
- items.add(new ItemStack(item, 1, 0));
- items.add(new ItemStack(item, 1, 1));
- }
-
- @Override
- public String getUnlocalizedName(ItemStack stack)
- {
- return super.getUnlocalizedName() + "." + stack.getItemDamage();
- }
-
- @Override
- public void registerIcons(IIconRegister register)
- {
- icons[0] = register.registerIcon("jewelrycraft:test/ingot2");
- icons[1] = register.registerIcon("jewelrycraft:ingot3");
- }
-
- @Override
- public IIcon getIconFromDamage(int dmg)
- {
- return dmg == 1 ? icons[1] : icons[0];
- }
-}
diff --git a/java/darkknight/jewelrycraft/item/ItemNecklace.java b/java/darkknight/jewelrycraft/item/ItemNecklace.java
index c6bfbbc..e5905b5 100644
--- a/java/darkknight/jewelrycraft/item/ItemNecklace.java
+++ b/java/darkknight/jewelrycraft/item/ItemNecklace.java
@@ -1,43 +1,16 @@
package darkknight.jewelrycraft.item;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
-import net.minecraft.util.StatCollector;
-import net.minecraft.world.World;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
-public class ItemNecklace extends Item
+public class ItemNecklace extends ItemBaseJewelry
{
- public IIcon gem;
- private double amplifier;
- int index = 0;
-
+ public IIcon gem;
public ItemNecklace()
{
- super();
- this.setMaxStackSize(1);
- }
+ }
public void registerIcons(IIconRegister iconRegister)
{
@@ -45,238 +18,10 @@ public class ItemNecklace extends Item
gem = iconRegister.registerIcon("jewelrycraft:jewelNecklace");
}
- @Override
- public boolean requiresMultipleRenderPasses()
- {
- return true;
- }
-
- @SideOnly(Side.CLIENT)
- public int getColorFromItemStack(ItemStack stack, int pass)
- {
- try
- {
- return ItemRing.color(stack, pass);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return 16777215;
- }
-
public IIcon getIcon(ItemStack stack, int pass)
{
if (pass == 0) return itemIcon;
if (pass == 1 && JewelryNBT.gem(stack) != null) return gem;
return itemIcon;
}
-
- public String getItemStackDisplayName(ItemStack stack)
- {
- if (JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) return JewelryNBT.ingot(stack).getDisplayName().replace("Ingot", " ").trim() + " " + ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
- return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
- }
-
- @SuppressWarnings(
- { "rawtypes" })
- public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
- {
- if (!world.isRemote)
- {
- List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(player.posX - 1.5D, player.posY, player.posZ - 1.5D, player.posX + 1.5D, player.posY + 2D, player.posZ + 1.5D));
- if (JewelryNBT.playerPosX(stack) != -1 && JewelryNBT.playerPosY(stack) != -1 && JewelryNBT.playerPosZ(stack) != -1)
- {
- double posX = JewelryNBT.playerPosX(stack), posY = JewelryNBT.playerPosY(stack), posZ = JewelryNBT.playerPosZ(stack);
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.bed)) && JewelryNBT.dimension(stack) != -2 && JewelryNBT.dimName(stack) != null)
- {
- int dimension = JewelryNBT.dimension(stack);
- for (int i = 1; i <= 20; i++)
- world.spawnParticle("largesmoke", player.posX - 0.5D + Math.random(), player.posY - 1.5D + Math.random(), player.posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- if (!JewelryNBT.isDimensionX(stack, player.dimension)) player.travelToDimension(dimension);
- for (int i = 0; i < entities.size(); i++)
- ((EntityLivingBase) entities.get(i)).setPositionAndUpdate(posX, posY, posZ);
- for (int i = 1; i <= 300; i++)
- world.spawnParticle("portal", posX - 0.5D + Math.random(), posY + Math.random(), posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- }
- else if (JewelryNBT.isDimensionX(stack, player.dimension))
- {
- for (int i = 1; i <= 20; i++)
- world.spawnParticle("largesmoke", player.posX - 0.5D + Math.random(), player.posY - 1.5D + Math.random(), player.posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- for (int i = 0; i < entities.size(); i++)
- ((EntityLivingBase) entities.get(i)).setPositionAndUpdate(posX, posY, posZ);
- for (int i = 1; i <= 300; i++)
- world.spawnParticle("portal", posX - 0.5D + Math.random(), posY + Math.random(), posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- }
- else player.addChatMessage(new ChatComponentText("You can't teleport to these coordonates! You need to be in the same dimension they were set!"));
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.bed)) && JewelryNBT.dimension(stack) == -2 && JewelryNBT.playerPosX(stack) == -1 && JewelryNBT.playerPosY(stack) == -1 && JewelryNBT.playerPosZ(stack) == -1)
- {
- JewelryNBT.addCoordonatesAndDimension(stack, player.posX, player.posY, player.posZ, world.provider.dimensionId, world.provider.getDimensionName());
- JewelryNBT.addFakeEnchantment(stack);
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && !JewelryNBT.hasTag(stack, "modifier") && JewelryNBT.playerPosX(stack) == -1 && JewelryNBT.playerPosY(stack) == -1 && JewelryNBT.playerPosZ(stack) == -1)
- {
- JewelryNBT.addCoordonatesAndDimension(stack, player.posX, player.posY, player.posZ, world.provider.dimensionId, world.provider.getDimensionName());
- JewelryNBT.addFakeEnchantment(stack);
- }
-
- if (JewelryNBT.hasTag(stack, "mode"))
- {
- String mode = "";
- if (JewelryNBT.isModeX(stack, "Activated")) mode = "Deactivated";
- else if (JewelryNBT.isModeX(stack, "Deactivated")) mode = "Activated";
- if (mode != "")
- {
- player.addChatMessage(new ChatComponentText("The Necklace has been " + mode));
- JewelryNBT.addMode(stack, mode);
- }
- }
- }
- return stack;
- }
-
- // @Override
- // public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer
- // player, EntityLivingBase entity)
- // {
- // if (!player.worldObj.isRemote && entity instanceof EntityLivingBase &&
- // JewelryNBT.isGemX(stack, new ItemStack(Item.netherStar)) &&
- // JewelryNBT.isModifierX(stack, new ItemStack(Block.chest)) &&
- // JewelryNBT.entity(stack, player) == null){
- // JewelryNBT.addEntity(stack, entity);
- // JewelryNBT.addEntityID(stack, entity);
- // entity.setDead();
- // JewelryNBT.addFakeEnchantment(stack);
- // }
- // return true;
- // }
-
- /**
- * allows items to add custom lines of information to the mouseover
- * description
- */
- public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4)
- {
- if (stack.hasTagCompound() && par4)
- {
- ItemStack ingot = JewelryNBT.ingot(stack);
- if (ingot != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) list.add("Ingot: " + EnumChatFormatting.YELLOW + ingot.getDisplayName());
-
- ItemStack gem = JewelryNBT.gem(stack);
- if (gem != null) list.add("Gem: " + EnumChatFormatting.BLUE + gem.getDisplayName());
-
- ArrayList<ItemStack> modifier = JewelryNBT.modifier(stack);
- if(!modifier.isEmpty()) list.add("Modifiers: ");
- for(int i = 0; i < modifier.size(); i++) list.add(EnumChatFormatting.DARK_PURPLE + modifier.get(i).getDisplayName() + " x" + modifier.get(i).stackSize);
-
- double playerPosX = JewelryNBT.playerPosX(stack), playerPosY = JewelryNBT.playerPosY(stack), playerPosZ = JewelryNBT.playerPosZ(stack);
- if (playerPosX != -1 && playerPosY != -1 && playerPosZ != -1) list.add(EnumChatFormatting.YELLOW + "X: " + EnumChatFormatting.GRAY + (int) playerPosX + EnumChatFormatting.YELLOW + " Y: " + EnumChatFormatting.GRAY + (int) playerPosY + EnumChatFormatting.YELLOW + " Z: " + EnumChatFormatting.GRAY + (int) playerPosZ);
-
- int posX = JewelryNBT.blockCoordX(stack), posY = JewelryNBT.blockCoordY(stack), posZ = JewelryNBT.blockCoordZ(stack);
- if (posX != -1 && posY != -1 && posZ != -1) list.add(EnumChatFormatting.YELLOW + "X: " + EnumChatFormatting.GRAY + (int) posX + EnumChatFormatting.YELLOW + " Y: " + EnumChatFormatting.GRAY + (int) posY + EnumChatFormatting.YELLOW + " Z: " + EnumChatFormatting.GRAY + (int) posZ);
-
- String name = JewelryNBT.dimName(stack);
- if (name != null) list.add("Dimension: " + EnumChatFormatting.DARK_GREEN + name);
-
- EntityLivingBase entity = JewelryNBT.entity(stack, player);
- if (entity != null) list.add("Entity: " + EnumChatFormatting.GOLD + entity.getCommandSenderName());
-
- String modeN = JewelryNBT.modeName(stack);
- if (modeN != null) list.add("Mode: " + modeN);
-
- int block = JewelryNBT.blockID(stack);
- if (block != -1) list.add("Block: " + StatCollector.translateToLocalFormatted(Block.getBlockById(block).getUnlocalizedName()));
-
- int blockmeta = JewelryNBT.blockMetadata(stack);
- if (blockmeta != -1) list.add("Block Metadata: " + blockmeta);
-
- TileEntity tile = JewelryNBT.tileEntity(stack);
- if (tile != null) list.add(EnumChatFormatting.RED + "Contains a tile entity");
-
- int blockX = JewelryNBT.blockCoordX(stack);
- if (blockX != -1) list.add("Block Coords X: " + blockX);
-
- int blockY = JewelryNBT.blockCoordY(stack);
- if (blockY != -1) list.add("Block Coords Y: " + blockY);
-
- int blockZ = JewelryNBT.blockCoordZ(stack);
- if (blockZ != -1) list.add("Block Coords Z: " + blockZ);
-
- // int colorI = JewelryNBT.ingotColor(stack);
- // if(colorI != -1) list.add("Ingot Color: " + colorI);
- //
- // int colorJ = JewelryNBT.gemColor(stack);
- // if(colorJ != -1) list.add("gem Color: " + colorJ);
- }
- }
-
- public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int i, int j, int k, int side, float par8, float par9, float par10)
- {
- amplifier = 0;
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.diamond))) amplifier = 1D;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.emerald))) amplifier = 2D;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star))) amplifier = 5D;
-
- if (!world.isRemote)
- {
- onItemRightClick(stack, world, player);
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.dye, 1, 15))) for (int x = (int) -amplifier; x <= amplifier; x++)
- for (int z = (int) -amplifier; z <= amplifier; z++)
- world.scheduleBlockUpdate(i + x, j, k + z, world.getBlock(i + x, j, k + z), 7 - (int) amplifier);
-
- for (int x = (int) -1; x <= 1; x++)
- for (int z = (int) -1; z <= 1; z++)
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.diamond_pickaxe)) && JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star)) && JewelryNBT.isIngotX(stack, new ItemStack(ItemList.shadowIngot))) if ((side == 0 || side == 1) && j > 0 && world.getBlock(i, j + x, k + z) != Blocks.air && world.getBlock(i + x, j, k + z).getBlockHardness(world, i + x, j, k + z) > 0F) world.func_147480_a(i + x, j, k + z, true);
- else if ((side == 2 || side == 3) && j + x > 0 && world.getBlock(i, j + x, k + z) != Blocks.air && world.getBlock(i + z, j + x, k).getBlockHardness(world, i + z, j + x, k) > 0F) world.func_147480_a(i + z, j + x, k, true);
- else if ((side == 4 || side == 5) && j + x > 0 && world.getBlock(i, j + x, k + z) != Blocks.air && world.getBlock(i, j + x, k + z).getBlockHardness(world, i, j + x, k + z) > 0F) world.func_147480_a(i, j + x, k + z, true);
- }
- return true;
- }
-
- public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
- {
- amplifier = 0D;
- if (!world.isRemote)
- {
- EntityPlayer entityplayer = (EntityPlayer) entity;
- int posX = (int) Math.floor(entityplayer.posX), posY = (int) Math.floor(entityplayer.posY), posZ = (int) Math.floor(entityplayer.posZ);
-
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.diamond))) amplifier = 1D;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.emerald))) amplifier = 2D;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star))) amplifier = 5D;
-
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.dye, 1, 15)) && world.getBlock(posX, posY - 1, posZ) == Blocks.farmland) for (int i = (int) -amplifier; i <= amplifier; i++)
- for (int j = (int) -amplifier; j <= amplifier; j++)
- world.setBlockMetadataWithNotify(posX + i, posY - 1, posZ + j, 1, 7);
-
- List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(entityplayer.posX - amplifier, entityplayer.posY - amplifier, entityplayer.posZ - amplifier, entityplayer.posX + amplifier, entityplayer.posY + 2 * amplifier, entityplayer.posZ + amplifier));
- if (JewelryNBT.isModeX(stack, "Activated"))
- {
- for (int i = 0; i < entities.size(); i++)
- {
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.blaze_powder))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.fireResistance.id, 4, 0, true));
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.sugar))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 4, 0, true));
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.iron_pickaxe)) && !JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.digSpeed.id, 4, 0, true));
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.feather)))
- {
- ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.jump.id, 4, 0, true));
- entityplayer.fallDistance = 0;
- }
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.potionitem, 1, 8270))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.invisibility.id, 4, 0, true));
- }
- }
- }
- }
-
- public ItemStack getModifiedItemStack(ItemStack ingot, ItemStack modifier, ItemStack gem)
- {
- ItemStack itemstack = new ItemStack(this);
- JewelryNBT.addMetal(itemstack, ingot);
- JewelryNBT.addModifiers(itemstack, JewelrycraftUtil.addRandomModifiers());
- JewelryNBT.addGem(itemstack, gem);
-// if (JewelryNBT.isModifierEffectType(itemstack) && !(JewelryNBT.isGemX(itemstack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Items.iron_pickaxe)))) JewelryNBT.addMode(itemstack, "Activated");
- if (JewelryNBT.isGemX(itemstack, new ItemStack(Items.nether_star)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Items.book))) JewelryNBT.addMode(itemstack, "Disenchant");
- return itemstack;
- }
}
diff --git a/java/darkknight/jewelrycraft/item/ItemRing.java b/java/darkknight/jewelrycraft/item/ItemRing.java
index ac05e73..af546fe 100644
--- a/java/darkknight/jewelrycraft/item/ItemRing.java
+++ b/java/darkknight/jewelrycraft/item/ItemRing.java
@@ -1,64 +1,16 @@
package darkknight.jewelrycraft.item;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import javax.imageio.ImageIO;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockChest;
-import net.minecraft.block.BlockSkull;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.client.renderer.texture.TextureManager;
-import net.minecraft.client.resources.IResourceManager;
-import net.minecraft.enchantment.Enchantment;
-import net.minecraft.enchantment.EnchantmentHelper;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.monster.EntityIronGolem;
-import net.minecraft.entity.monster.EntitySnowman;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.inventory.InventoryEnderChest;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityChest;
-import net.minecraft.tileentity.TileEntitySkull;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
-import net.minecraft.util.MathHelper;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-import net.minecraft.world.World;
-import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-import darkknight.jewelrycraft.JewelrycraftMod;
-import darkknight.jewelrycraft.block.BlockList;
import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
-public class ItemRing extends Item
+public class ItemRing extends ItemBaseJewelry
{
- public IIcon gem;
- private int amplifier, cooldown = 0;
- int index = 0;
-
+ public IIcon gem;
public ItemRing()
{
super();
- this.setMaxStackSize(1);
}
public void registerIcons(IIconRegister iconRegister)
@@ -67,559 +19,10 @@ public class ItemRing extends Item
gem = iconRegister.registerIcon("jewelrycraft:jewelRing");
}
- @Override
- public boolean requiresMultipleRenderPasses()
- {
- return true;
- }
-
- @SideOnly(Side.CLIENT)
- public int getColorFromItemStack(ItemStack stack, int pass)
- {
- try
- {
- return color(stack, pass);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return 16777215;
- }
-
public IIcon getIcon(ItemStack stack, int pass)
{
if (pass == 0) return itemIcon;
if (pass == 1 && JewelryNBT.gem(stack) != null) return gem;
return itemIcon;
}
-
- public static int color(ItemStack stack, int pass) throws IOException
- {
- String domain = "", texture;
- IResourceManager rm = Minecraft.getMinecraft().getResourceManager();
- BufferedImage icon;
- int x = 0, y = 0, ok = 0, red, green, blue;
- if (pass == 0 && stack != null && JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0 && JewelryNBT.ingot(stack).getIconIndex() != null && JewelryNBT.ingotColor(stack) == 16777215)
- {
- IIcon itemIcon = JewelryNBT.ingot(stack).getItem().getIcon(JewelryNBT.ingot(stack), 0);
- String ingotIconName = itemIcon.getIconName();
-
- if (ingotIconName.substring(0, ingotIconName.indexOf(":") + 1) != "") domain = ingotIconName.substring(0, ingotIconName.indexOf(":") + 1).replace(":", " ").trim();
- else domain = "minecraft";
-
- texture = ingotIconName.substring(ingotIconName.lastIndexOf(":") + 1) + ".png";
- ResourceLocation ingot = null;
- TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager();
-
- if (texturemanager.getResourceLocation(JewelryNBT.ingot(stack).getItemSpriteNumber()).toString().contains("items")) ingot = new ResourceLocation(domain.toLowerCase(), "textures/items/" + texture);
- else ingot = new ResourceLocation(domain.toLowerCase(), "textures/blocks/" + texture);
-
- icon = ImageIO.read(rm.getResource(ingot).getInputStream());
- while (ok == 0)
- {
- red = (icon.getRGB(x, y) >> 16) & 0xFF;
- green = (icon.getRGB(x, y) >> 8) & 0xFF;
- blue = icon.getRGB(x, y) & 0xFF;
- if (!isColorPretty(red, green, blue))
- {
- if (x < icon.getTileWidth() - 1) x++;
- if (x >= icon.getTileWidth() - 1 && y < icon.getTileWidth() - 1)
- {
- x = 0;
- y++;
- }
- if (x == icon.getTileWidth() - 1 && y == icon.getTileWidth() - 1) ok = 1;
- }
- else ok = 1;
- }
- JewelryNBT.addIngotColor(stack, icon.getRGB(x, y));
- }
- else if (pass == 1 && stack != null && JewelryNBT.gem(stack) != null && JewelryNBT.gem(stack).getIconIndex() != null && JewelryNBT.gem(stack) != null)
- {
- IIcon itemIcon = JewelryNBT.gem(stack).getItem().getIconFromDamage(JewelryNBT.gem(stack).getItemDamage());
- String jewelIconName = itemIcon.getIconName();
- x = 0;
- y = 0;
- ok = 0;
-
- if (jewelIconName.substring(0, jewelIconName.indexOf(":") + 1) != "") domain = jewelIconName.substring(0, jewelIconName.indexOf(":") + 1).replace(":", " ").trim();
- else domain = "minecraft";
-
- texture = jewelIconName.substring(jewelIconName.lastIndexOf(":") + 1) + ".png";
- ResourceLocation jewelLoc = null;
-
- if (JewelryNBT.gem(stack).getUnlocalizedName().contains("item")) jewelLoc = new ResourceLocation(domain, "textures/items/" + texture);
- else jewelLoc = new ResourceLocation(domain, "textures/blocks/" + texture);
-
- icon = ImageIO.read(rm.getResource(jewelLoc).getInputStream());
- while (ok == 0)
- {
- red = (icon.getRGB(x, y) >> 16) & 0xFF;
- green = (icon.getRGB(x, y) >> 8) & 0xFF;
- blue = icon.getRGB(x, y) & 0xFF;
- if (!isColorPretty(red, green, blue))
- {
- if (x < icon.getTileWidth() - 1) x++;
- if (x >= icon.getTileWidth() - 1 && y < icon.getTileWidth() - 1)
- {
- x = 0;
- y++;
- }
- if (x == icon.getTileWidth() - 1 && y == icon.getTileWidth() - 1) ok = 1;
- }
- else ok = 1;
- }
- if (JewelryNBT.gem(stack).getItem().getColorFromItemStack(JewelryNBT.gem(stack), 1) == 16777215) JewelryNBT.addGemColor(stack, icon.getRGB(x, y));
- else JewelryNBT.addGemColor(stack, JewelryNBT.gem(stack).getItem().getColorFromItemStack(JewelryNBT.gem(stack), 1));
- }
- if (pass == 0 && JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
- if (pass == 1 && JewelryNBT.gem(stack) != null) return JewelryNBT.gemColor(stack);
- else if (JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
- return 16777215;
- }
-
- public static boolean isColorPretty(int r, int g, int b)
- {
- if ((r >= 100 && g >= 100 && b >= 100 && r < 230 && b < 230 && g < 230) || ((r >= 100 && (g < 100 || b < 100)) || (g >= 100 && (r < 100 || b < 100)) || (b >= 100 && (g < 100 || r < 100)))) return true;
- else return false;
- }
-
- public String getItemStackDisplayName(ItemStack stack)
- {
- if (JewelryNBT.ingot(stack) != null && JewelryNBT.gem(stack) != null && JewelryNBT.modifier(stack) == null && JewelryNBT.isGemX(stack, new ItemStack(Items.diamond)) && JewelryNBT.isIngotX(stack, new ItemStack(Items.gold_ingot))) return "Wedding Ring";
- else if (JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) return JewelryNBT.ingot(stack).getDisplayName().replace("Ingot", " ").trim() + " " + ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
- return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim();
- }
-
- public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
- {
- if (!world.isRemote)
- {
- if (JewelryNBT.playerPosX(stack) != -1 && JewelryNBT.playerPosY(stack) != -1 && JewelryNBT.playerPosZ(stack) != -1)
- {
- double posX = JewelryNBT.playerPosX(stack), posY = JewelryNBT.playerPosY(stack), posZ = JewelryNBT.playerPosZ(stack);
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.bed)) && JewelryNBT.dimension(stack) != -2 && JewelryNBT.dimName(stack) != null)
- {
- int dimension = JewelryNBT.dimension(stack);
- for (int i = 1; i <= 20; i++)
- world.spawnParticle("largesmoke", player.posX - 0.5D + Math.random(), player.posY - 1.5D + Math.random(), player.posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- if (!JewelryNBT.isDimensionX(stack, player.dimension)) player.travelToDimension(dimension);
- player.setPositionAndUpdate(posX, posY, posZ);
- for (int i = 1; i <= 300; i++)
- world.spawnParticle("portal", posX - 0.5D + Math.random(), posY + Math.random(), posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- }
- else if (JewelryNBT.isDimensionX(stack, player.dimension))
- {
- for (int i = 1; i <= 20; i++)
- world.spawnParticle("largesmoke", player.posX - 0.5D + Math.random(), player.posY - 1.5D + Math.random(), player.posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- player.setPositionAndUpdate(posX, posY, posZ);
- for (int i = 1; i <= 300; i++)
- world.spawnParticle("portal", posX - 0.5D + Math.random(), posY + Math.random(), posZ - 0.5D + Math.random(), 0.0D, 0.0D, 0.0D);
- }
- else player.addChatMessage(new ChatComponentText("You can't teleport to these coordonates! You need to be in the same dimension they were set!"));
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.bed)) && JewelryNBT.dimension(stack) == -2 && JewelryNBT.playerPosX(stack) == -1 && JewelryNBT.playerPosY(stack) == -1 && JewelryNBT.playerPosZ(stack) == -1)
- {
- JewelryNBT.addCoordonatesAndDimension(stack, player.posX, player.posY, player.posZ, world.provider.dimensionId, world.provider.getDimensionName());
- JewelryNBT.addFakeEnchantment(stack);
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Blocks.obsidian)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.ender_eye)))
- {
- InventoryEnderChest inventoryenderchest = player.getInventoryEnderChest();
- player.displayGUIChest(inventoryenderchest);
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Blocks.chest)))
- {
- int i = JewelryNBT.blockCoordX(stack), j = JewelryNBT.blockCoordY(stack), k = JewelryNBT.blockCoordZ(stack);
- if (player.getDistance(i + 0.5F, j + 0.5F, k + 0.5F) <= 128 && i != -1 && j != -1 && k != -1)
- {
- Block block = world.getBlock(i, j, k);
- if (!block.isAir(world, i, j, k) && block instanceof BlockChest)
- {
- TileEntity tile = world.getTileEntity(i, j, k);
- if (tile != null && tile instanceof TileEntityChest) FMLNetworkHandler.openGui(player, JewelrycraftMod.instance, 0, world, i, j, k);
- }
- }
- else if (i != -1 && j != -1 && k != -1) player.addChatMessage(new ChatComponentText("Chest out of range! You need to be " + ((int) player.getDistance(i + 0.5F, j + 0.5F, k + 0.5F) - 127) + " blocks closer."));
- else player.addChatMessage(new ChatComponentText("You need to link the ring with a chest first, before using it!"));
- }
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && !JewelryNBT.hasTag(stack, "modifier") && JewelryNBT.playerPosX(stack) == -1 && JewelryNBT.playerPosY(stack) == -1 && JewelryNBT.playerPosZ(stack) == -1)
- {
- JewelryNBT.addCoordonatesAndDimension(stack, player.posX, player.posY, player.posZ, world.provider.dimensionId, world.provider.getDimensionName());
- JewelryNBT.addFakeEnchantment(stack);
- }
-
- if (JewelryNBT.hasTag(stack, "mode"))
- {
- String mode = "";
- if (JewelryNBT.isModeX(stack, "Disenchant")) mode = "Transfer";
- else if (JewelryNBT.isModeX(stack, "Transfer")) mode = "Enchant";
- else if (JewelryNBT.isModeX(stack, "Enchant")) mode = "Disenchant";
- if (mode != "")
- {
- player.addChatMessage(new ChatComponentText("Switched to " + mode + " mode"));
- JewelryNBT.addMode(stack, mode);
- }
- if (JewelryNBT.isModeX(stack, "Activated")) mode = "Deactivated";
- else if (JewelryNBT.isModeX(stack, "Deactivated")) mode = "Activated";
- if (mode != "" && mode != "Transfer" && mode != "Enchant" && mode != "Disenchant")
- {
- player.addChatMessage(new ChatComponentText("The Ring has been " + mode));
- JewelryNBT.addMode(stack, mode);
- }
- }
- }
- return stack;
- }
-
- @Override
- public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
- {
- if (!player.worldObj.isRemote && entity instanceof EntityLivingBase && JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star)) && JewelryNBT.isModifierX(stack, new ItemStack(Blocks.chest)) && JewelryNBT.entity(stack, player) == null)
- {
- JewelryNBT.addEntity(stack, entity);
- JewelryNBT.addEntityID(stack, entity);
- entity.setDead();
- JewelryNBT.addFakeEnchantment(stack);
- }
- return true;
- }
-
- /**
- * allows items to add custom lines of information to the mouseover
- * description
- */
- public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4)
- {
- if (stack.hasTagCompound() && par4 && stack.getDisplayName() != "Wedding Ring")
- {
- ItemStack ingot = JewelryNBT.ingot(stack);
- if (ingot != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0) list.add("Ingot: " + EnumChatFormatting.YELLOW + ingot.getDisplayName());
-
- ItemStack gem = JewelryNBT.gem(stack);
- if (gem != null) list.add("Gem: " + EnumChatFormatting.BLUE + gem.getDisplayName());
-
- ArrayList<ItemStack> modifier = JewelryNBT.modifier(stack);
- if(!modifier.isEmpty()) list.add("Modifiers: ");
- for(int i = 0; i < modifier.size(); i++) list.add(EnumChatFormatting.DARK_PURPLE + modifier.get(i).getDisplayName() + " x" + modifier.get(i).stackSize);
-
- double playerPosX = JewelryNBT.playerPosX(stack), playerPosY = JewelryNBT.playerPosY(stack), playerPosZ = JewelryNBT.playerPosZ(stack);
- if (playerPosX != -1 && playerPosY != -1 && playerPosZ != -1) list.add(EnumChatFormatting.YELLOW + "X: " + EnumChatFormatting.GRAY + (int) playerPosX + EnumChatFormatting.YELLOW + " Y: " + EnumChatFormatting.GRAY + (int) playerPosY + EnumChatFormatting.YELLOW + " Z: " + EnumChatFormatting.GRAY + (int) playerPosZ);
-
- int posX = JewelryNBT.blockCoordX(stack), posY = JewelryNBT.blockCoordY(stack), posZ = JewelryNBT.blockCoordZ(stack);
- if (posX != -1 && posY != -1 && posZ != -1) list.add(EnumChatFormatting.YELLOW + "X: " + EnumChatFormatting.GRAY + (int) posX + EnumChatFormatting.YELLOW + " Y: " + EnumChatFormatting.GRAY + (int) posY + EnumChatFormatting.YELLOW + " Z: " + EnumChatFormatting.GRAY + (int) posZ);
-
- String name = JewelryNBT.dimName(stack);
- if (name != null) list.add("Dimension: " + EnumChatFormatting.DARK_GREEN + name);
-
- EntityLivingBase entity = JewelryNBT.entity(stack, player);
- if (entity != null) list.add("Entity: " + EnumChatFormatting.GOLD + entity.getCommandSenderName());
-
- String modeN = JewelryNBT.modeName(stack);
- if (modeN != null) list.add("Mode: " + modeN);
-
- int block = JewelryNBT.blockID(stack);
- if (block != -1) list.add("Block: " + StatCollector.translateToLocalFormatted(Block.getBlockById(block).getUnlocalizedName()));
-
- int blockmeta = JewelryNBT.blockMetadata(stack);
- if (blockmeta != -1) list.add("Block Metadata: " + blockmeta);
-
- TileEntity tile = JewelryNBT.tileEntity(stack);
- if (tile != null) list.add(EnumChatFormatting.RED + "Contains a tile entity");
-
- int blockX = JewelryNBT.blockCoordX(stack);
- if (blockX != -1) list.add("Block Coords X: " + blockX);
-
- int blockY = JewelryNBT.blockCoordY(stack);
- if (blockY != -1) list.add("Block Coords Y: " + blockY);
-
- int blockZ = JewelryNBT.blockCoordZ(stack);
- if (blockZ != -1) list.add("Block Coords Z: " + blockZ);
-
- // int colorI = JewelryNBT.ingotColor(stack);
- // if(colorI != -1) list.add("Ingot Color: " + colorI);
- //
- // int colorJ = JewelryNBT.gemColor(stack);
- // if(colorJ != -1) list.add("Jewel Color: " + colorJ);
- }
- }
-
- public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int i, int j, int k, int side, float par8, float par9, float par10)
- {
- amplifier = 0;
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.diamond))) amplifier = 1;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.emerald))) amplifier = 2;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star))) amplifier = 7;
-
- if (!world.isRemote)
- {
- EntityLivingBase entity = JewelryNBT.entity(stack, player);
- boolean used = false;
- if (entity != null && entity instanceof EntityLivingBase)
- {
- entity.setLocationAndAngles(i + 0.5D, j + 1D, k + 0.5D, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F);
- world.spawnEntityInWorld(entity);
- JewelryNBT.removeEntity(stack);
- }
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Blocks.chest)) && world.getBlock(i, j, k) == Blocks.chest) JewelryNBT.addBlockCoordonates(stack, i, j, k);
- onItemRightClick(stack, world, player);
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.dye, 1, 15))) world.scheduleBlockUpdate(i, j, k, world.getBlock(i, j, k), 7 - amplifier);
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.diamond_pickaxe)) && JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl)))
- {
- if (JewelryNBT.hasTag(stack, "blockID") && !used)
- {
- int shiftX = 0, shiftY = 0, shiftZ = 0;
- if (side == 0) shiftY = -1;
- else if (side == 1) shiftY = 1;
- else if (side == 2) shiftZ = -1;
- else if (side == 3) shiftZ = 1;
- else if (side == 4) shiftX = -1;
- else if (side == 5) shiftX = 1;
- world.setBlock(i + shiftX, j + shiftY, k + shiftZ, Block.getBlockById(JewelryNBT.blockID(stack)));
- world.setBlockMetadataWithNotify(i + shiftX, j + shiftY, k + shiftZ, JewelryNBT.blockMetadata(stack), 2);
- if (JewelryNBT.hasTag(stack, "tile")) world.setTileEntity(i + shiftX, j + shiftY, k + shiftZ, JewelryNBT.tileEntity(stack));
- if (JewelryNBT.tileEntity(stack) instanceof TileEntitySkull) ((BlockSkull) Blocks.skull).func_149965_a(world, i + shiftX, j + shiftY, k + shiftZ, (TileEntitySkull) JewelryNBT.tileEntity(stack));
- if (Block.getBlockById(JewelryNBT.blockID(stack)) == Blocks.pumpkin || Block.getBlockById(JewelryNBT.blockID(stack)) == Blocks.lit_pumpkin) createGolems(world, i + shiftX, j + shiftY, k + shiftZ);
- JewelryNBT.removeBlock(stack);
- used = true;
- }
-
- if (!JewelryNBT.hasTag(stack, "tile") && world.getTileEntity(i, j, k) != null && !used && world.getBlock(i, j, k).getBlockHardness(world, i, j, k) > 0F)
- {
- JewelryNBT.addTileEntityBlock(stack, world, i, j, k);
- world.removeTileEntity(i, j, k);
- world.setBlock(i, j, k, Block.getBlockById(0));
- }
- else if (!JewelryNBT.hasTag(stack, "blockID") && !used && world.getBlock(i, j, k).getBlockHardness(world, i, j, k) > 0F)
- {
- JewelryNBT.addBlock(stack, Block.getIdFromBlock(world.getBlock(i, j, k)), world.getBlockMetadata(i, j, k));
- JewelryNBT.addBlockCoordonates(stack, i, j, k);
- world.setBlock(i, j, k, Block.getBlockById(0));
- }
- }
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.diamond_pickaxe)) && JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star)) && JewelryNBT.isIngotX(stack, new ItemStack(ItemList.shadowIngot)) && j > 0 && world.getBlock(i, j, k).getBlockHardness(world, i, j, k) > 0F) world.func_147480_a(i, j, k, true);
- }
- return true;
- }
-
- public boolean canDisenchant(EntityPlayer player)
- {
- if (player.capabilities.isCreativeMode) return true;
- else if (player.experienceLevel >= 2) return true;
- return false;
- }
-
- public void dynamicLight(World world, EntityPlayer player)
- {
- world.setBlock((int) player.prevPosX, (int) player.prevPosY, (int) player.prevPosZ, Block.getBlockById(0));
- world.setBlock((int) player.posX, (int) player.posY, (int) player.posZ, BlockList.glow);
- }
-
- @SuppressWarnings(
- { "unchecked", "rawtypes" })
- @Override
- public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
- {
- amplifier = 0;
- if (cooldown > 0) cooldown--;
- if (!world.isRemote)
- {
- EntityPlayer entityplayer = (EntityPlayer) entity;
- int posX = (int) Math.floor(entityplayer.posX), posY = (int) Math.floor(entityplayer.posY), posZ = (int) Math.floor(entityplayer.posZ);
-
- if (JewelryNBT.isGemX(stack, new ItemStack(Items.diamond))) amplifier = 1;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.emerald))) amplifier = 2;
- else if (JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star))) amplifier = 7;
-
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.dye, 1, 15)) && world.getBlock(posX, posY - 1, posZ) == Blocks.farmland) world.setBlockMetadataWithNotify(posX, posY - 1, posZ, 1, 7);
-
- if (JewelryNBT.isModeX(stack, "Activated"))
- {
- if (JewelryNBT.isModifierX(stack, new ItemStack(Items.blaze_powder)) && entityplayer != null) entityplayer.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 4, amplifier, true));
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.sugar)) && entityplayer != null)
- {
- entityplayer.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 4, amplifier, true));
- entityplayer.addExhaustion(0.05f * amplifier);
- }
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.iron_pickaxe)) && entityplayer != null && !JewelryNBT.isGemX(stack, new ItemStack(Items.ender_pearl))) entityplayer.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 4, amplifier, true));
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.feather)) && entityplayer != null)
- {
- entityplayer.addPotionEffect(new PotionEffect(Potion.jump.id, 4, amplifier, true));
- if (entityplayer.inventory.armorInventory[0] != null)
- {
- int damage = entityplayer.inventory.armorInventory[0].getMaxDamage() - entityplayer.inventory.armorInventory[0].getItemDamage();
- if (damage - entityplayer.fallDistance > 0)
- {
- entityplayer.inventory.armorInventory[0].damageItem((int) entityplayer.fallDistance, entityplayer);
- entityplayer.fallDistance = 0;
- }
- else
- {
- --entityplayer.inventory.armorInventory[0].stackSize;
- entityplayer.fallDistance -= damage;
- }
- }
- }
- else if (JewelryNBT.isModifierX(stack, new ItemStack(Items.potionitem, 1, 8270)) && entityplayer != null) entityplayer.addPotionEffect(new PotionEffect(Potion.invisibility.id, 4, amplifier, true));
- }
- if (entityplayer.inventory.getCurrentItem() != null && JewelryNBT.isGemX(stack, new ItemStack(Items.nether_star)) && JewelryNBT.isModifierX(stack, new ItemStack(Items.book)) && entityplayer.inventory.getCurrentItem().getItem() == stack.getItem())
- {
- ItemStack item = null;
- if (entityplayer.inventory.currentItem + 1 <= 8 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1) != null && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1).isItemEnchanted()) item = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1);
- if (entityplayer.inventory.currentItem - 1 >= 0 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1) != null && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1).isItemEnchanted()) item = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1);
- if (item != null && JewelryNBT.isModeX(stack, "Disenchant"))
- {
- ItemStack enchBook = new ItemStack(Items.enchanted_book);
- Map enchItem = EnchantmentHelper.getEnchantments(item);
- Map book = EnchantmentHelper.getEnchantments(enchBook);
- Iterator iterator = enchItem.keySet().iterator();
- int e;
-
- if (iterator.hasNext() && canDisenchant(entityplayer))
- {
- e = ((Integer) iterator.next()).intValue();
- book.put(Integer.valueOf(e), Integer.valueOf(((Integer) enchItem.get(Integer.valueOf(e))).intValue()));
- EnchantmentHelper.setEnchantments(book, enchBook);
- if (entityplayer.inventory.addItemStackToInventory(enchBook))
- {
- if (!entityplayer.capabilities.isCreativeMode)
- {
- entityplayer.addExperienceLevel(-2);
- entityplayer.heal(-1f);
- }
- enchItem.remove(Integer.valueOf(e));
- if (item.isItemStackDamageable() && (item.getMaxDamage() - item.getItemDamage()) / 3 > 0) item.damageItem((item.getMaxDamage() - item.getItemDamage()) / 3, entityplayer);
- EnchantmentHelper.setEnchantments(enchItem, item);
- }
- }
- }
- if (entityplayer.inventory.currentItem + 1 <= 8 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1) != null && entityplayer.inventory.currentItem - 1 >= 0 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1) != null && JewelryNBT.isModeX(stack, "Transfer"))
- {
- if (cooldown > 0) entityplayer.addChatMessage(new ChatComponentText("Ring is currently cooling down!"));
- ItemStack enchantedItem = null, enchantableItem = null;
- if (entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1).isItemEnchanted() && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1) != null)
- {
- enchantedItem = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1);
- enchantableItem = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1);
-
- }
- if (enchantedItem != null && enchantableItem != null)
- {
- Map enchItem = EnchantmentHelper.getEnchantments(enchantedItem);
- Map resultItem = EnchantmentHelper.getEnchantments(enchantableItem);
- Iterator iterator = enchItem.keySet().iterator();
- int e;
-
- if (iterator.hasNext() && cooldown == 0)
- {
- e = ((Integer) iterator.next()).intValue();
- if (!EnchantmentHelper.getEnchantments(enchantableItem).containsKey(Integer.valueOf(e)))
- {
- resultItem.put(Integer.valueOf(e), Integer.valueOf(((Integer) enchItem.get(Integer.valueOf(e))).intValue()));
- EnchantmentHelper.setEnchantments(resultItem, enchantableItem);
- enchItem.remove(Integer.valueOf(e));
- EnchantmentHelper.setEnchantments(enchItem, enchantedItem);
- cooldown = 50000;
- }
- }
- }
- }
- if (entityplayer.inventory.currentItem + 1 <= 8 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1) != null) item = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem + 1);
- else if (entityplayer.inventory.currentItem - 1 >= 0 && entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1) != null) item = entityplayer.inventory.getStackInSlot(entityplayer.inventory.currentItem - 1);
- if (item != null && !item.isItemEnchanted() && item.isItemEnchantable() && entityplayer.experienceLevel > 0 && JewelryNBT.isModeX(stack, "Enchant"))
- {
- Map enchItem = EnchantmentHelper.getEnchantments(item);
- int level = entityplayer.experienceLevel;
- if (entityplayer.experienceLevel > 6) level = 6;
- if (!entityplayer.capabilities.isCreativeMode) entityplayer.addExperienceLevel(-level);
- enchItem.put(Enchantment.enchantmentsBookList[new Random().nextInt(Enchantment.enchantmentsBookList.length)].effectId, level);
- EnchantmentHelper.setEnchantments(enchItem, item);
- }
- }
- }
- }
-
- public ItemStack getModifiedItemStack(ItemStack ingot, ItemStack modifier, ItemStack gem)
- {
- ItemStack itemstack = new ItemStack(this);
- JewelryNBT.addMetal(itemstack, ingot);
- JewelryNBT.addModifiers(itemstack, JewelrycraftUtil.addRandomModifiers());
- JewelryNBT.addGem(itemstack, gem);
-// if (JewelryNBT.isModifierEffectType(itemstack) && !(JewelryNBT.isGemX(itemstack, new ItemStack(Items.ender_pearl)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Items.iron_pickaxe)))) JewelryNBT.addMode(itemstack, "Activated");
- if (JewelryNBT.isGemX(itemstack, new ItemStack(Items.nether_star)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Items.book))) JewelryNBT.addMode(itemstack, "Disenchant");
- return itemstack;
- }
-
- public void createGolems(World world, int i, int j, int k)
- {
- if (world.getBlock(i, j - 1, k) == Blocks.snow && world.getBlock(i, j - 2, k) == Blocks.snow)
- {
- if (!world.isRemote)
- {
- world.setBlock(i, j, k, Block.getBlockById(0), 0, 2);
- world.setBlock(i, j - 1, k, Block.getBlockById(0), 0, 2);
- world.setBlock(i, j - 2, k, Block.getBlockById(0), 0, 2);
- EntitySnowman entitysnowman = new EntitySnowman(world);
- entitysnowman.setLocationAndAngles((double) i + 0.5D, (double) j - 1.95D, (double) k + 0.5D, 0.0F, 0.0F);
- world.spawnEntityInWorld(entitysnowman);
- world.notifyBlockChange(i, j, k, Block.getBlockById(0));
- world.notifyBlockChange(i, j - 1, k, Block.getBlockById(0));
- world.notifyBlockChange(i, j - 2, k, Block.getBlockById(0));
- }
-
- for (int l = 0; l < 120; ++l)
- {
- world.spawnParticle("snowshovel", (double) i + world.rand.nextDouble(), (double) (j - 2) + world.rand.nextDouble() * 2.5D, (double) k + world.rand.nextDouble(), 0.0D, 0.0D, 0.0D);
- }
- }
- else if (world.getBlock(i, j - 1, k) == Blocks.iron_block && world.getBlock(i, j - 2, k) == Blocks.iron_block)
- {
- boolean flag = world.getBlock(i - 1, j - 1, k) == Blocks.iron_block && world.getBlock(i + 1, j - 1, k) == Blocks.iron_block;
- boolean flag1 = world.getBlock(i, j - 1, k - 1) == Blocks.iron_block && world.getBlock(i, j - 1, k + 1) == Blocks.iron_block;
-
- if (flag || flag1)
- {
- world.setBlock(i, j, k, Block.getBlockById(0), 0, 2);
- world.setBlock(i, j - 1, k, Block.getBlockById(0), 0, 2);
- world.setBlock(i, j - 2, k, Block.getBlockById(0), 0, 2);
-
- if (flag)
- {
- world.setBlock(i - 1, j - 1, k, Block.getBlockById(0), 0, 2);
- world.setBlock(i + 1, j - 1, k, Block.getBlockById(0), 0, 2);
- }
- else
- {
- world.setBlock(i, j - 1, k - 1, Block.getBlockById(0), 0, 2);
- world.setBlock(i, j - 1, k + 1, Block.getBlockById(0), 0, 2);
- }
-
- EntityIronGolem entityirongolem = new EntityIronGolem(world);
- entityirongolem.setPlayerCreated(true);
- entityirongolem.setLocationAndAngles((double) i + 0.5D, (double) j - 1.95D, (double) k + 0.5D, 0.0F, 0.0F);
- world.spawnEntityInWorld(entityirongolem);
-
- for (int i1 = 0; i1 < 120; ++i1)
- {
- world.spawnParticle("snowballpoof", (double) i + world.rand.nextDouble(), (double) (j - 2) + world.rand.nextDouble() * 3.9D, (double) k + world.rand.nextDouble(), 0.0D, 0.0D, 0.0D);
- }
-
- world.notifyBlockChange(i, j, k, Block.getBlockById(0));
- world.notifyBlockChange(i, j - 1, k, Block.getBlockById(0));
- world.notifyBlockChange(i, j - 2, k, Block.getBlockById(0));
-
- if (flag)
- {
- world.notifyBlockChange(i - 1, j - 1, k, Block.getBlockById(0));
- world.notifyBlockChange(i + 1, j - 1, k, Block.getBlockById(0));
- }
- else
- {
- world.notifyBlockChange(i, j - 1, k - 1, Block.getBlockById(0));
- world.notifyBlockChange(i, j - 1, k + 1, Block.getBlockById(0));
- }
- }
- }
- }
}
diff --git a/java/darkknight/jewelrycraft/item/ItemThiefGloves.java b/java/darkknight/jewelrycraft/item/ItemThiefGloves.java
index 344f9a6..658e9cc 100644
--- a/java/darkknight/jewelrycraft/item/ItemThiefGloves.java
+++ b/java/darkknight/jewelrycraft/item/ItemThiefGloves.java
@@ -11,6 +11,9 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.Potion;
+import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.village.MerchantRecipe;
@@ -21,10 +24,11 @@ import org.lwjgl.input.Keyboard;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.ReflectionHelper;
import cpw.mods.fml.relauncher.Side;
+import darkknight.jewelrycraft.util.PlayerUtils;
public class ItemThiefGloves extends Item
{
- public Random rand;
+ public Random rand = new Random();
public ItemThiefGloves()
{
@@ -35,43 +39,91 @@ public class ItemThiefGloves extends Item
}
@Override
- public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer par2EntityPlayer, EntityLivingBase par3EntityLivingBase)
+ public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
{
- if (par3EntityLivingBase instanceof EntityVillager)
+ if (entity instanceof EntityVillager)
{
- EntityVillager villager = (EntityVillager) par3EntityLivingBase;
+ EntityVillager villager = (EntityVillager) entity;
int wealth = (Integer) ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "wealth", "field_70956_bz");
MerchantRecipeList buyingList = (MerchantRecipeList) ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "buyingList", "field_70963_i");
+ int chance = 5;
+ boolean areOtherVillagersAround = false, canTheySeeYou = false;
+ AxisAlignedBB axisalignedbb = villager.boundingBox.expand(4.0D, 4.0D, 4.0D);
+ List entities = villager.worldObj.getEntitiesWithinAABBExcludingEntity(villager, axisalignedbb);
+ for (Object s : entities)
+ if (s instanceof EntityVillager)
+ {
+ areOtherVillagersAround = true;
+ chance += rand.nextInt(2);
+ if (((EntityVillager) s).canEntityBeSeen(player))
+ {
+ chance += 2;
+ canTheySeeYou = true;
+ }
+ }
+ if (villager.canEntityBeSeen(player)) chance += 5;
+ if (player.isPotionActive(Potion.invisibility)) chance -= (0.8 * chance);
+ if (player.capabilities.isCreativeMode) chance = 1;
+ int steal = rand.nextInt(chance);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft");
if (buyingList != null)
{
Iterator<?> iterator = buyingList.iterator();
- while (iterator.hasNext())
+ if (steal == 0)
+ {
+ while (iterator.hasNext())
+ {
+ MerchantRecipe recipe = (MerchantRecipe) iterator.next();
+ int toolUses = (Integer) ReflectionHelper.getPrivateValue(MerchantRecipe.class, recipe, "toolUses", "field_77400_d");
+ int quantity;
+ if (recipe.getItemToSell().isStackable()) quantity = recipe.getItemToSell().stackSize * (7 - toolUses);
+ else quantity = recipe.getItemToSell().stackSize;
+ ItemStack s = new ItemStack(recipe.getItemToSell().getItem(), quantity, recipe.getItemToSell().getItemDamage());
+ s.setTagCompound(recipe.getItemToSell().getTagCompound());
+ if (player.inventory.addItemStackToInventory(s))
+ ;
+ else villager.entityDropItem(s, 0);
+ if (playerInfo.hasKey("cursePoints")) playerInfo.setInteger("cursePoints", playerInfo.getInteger("cursePoints") + 5);
+ else playerInfo.setInteger("cursePoints", 5);
+ player.addChatMessage(new ChatComponentText("Villager #" + villager.getProfession() + ": Hmmm... I seem to have lost my " + s.getDisplayName() + "!"));
+ stack.damageItem(1, player);
+ }
+ buyingList.clear();
+ ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 300, "timeUntilReset", "field_70961_j");
+ ReflectionHelper.setPrivateValue(EntityVillager.class, villager, true, "needsInitilization", "field_70959_by");
+ player.addChatMessage(new ChatComponentText("You hear a faint whisper in your ear: "));
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "Those who steal but don't get caught get rewarded and do not."));
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "Embrace the path you have gone, for the darkness will not"));
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "dwell on."));
+ }
+ else
{
- MerchantRecipe recipe = (MerchantRecipe) iterator.next();
- int toolUses = (Integer) ReflectionHelper.getPrivateValue(MerchantRecipe.class, recipe, "toolUses", "field_77400_d");
- int quantity;
- if (recipe.getItemToSell().isStackable()) quantity = recipe.getItemToSell().stackSize * (7 - toolUses);
- else quantity = 1;
- ItemStack s = new ItemStack(recipe.getItemToSell().getItem(), quantity, recipe.getItemToSell().getItemDamage());
- s.setTagCompound(recipe.getItemToSell().getTagCompound());
- if (par2EntityPlayer.inventory.addItemStackToInventory(s))
- ;
- else villager.entityDropItem(s, 0);
- par2EntityPlayer.addChatMessage(new ChatComponentText("Villager #" + villager.getProfession() + ": Hmmm... I seem to have lost my " + s.getDisplayName() + "!"));
- stack.damageItem(1, par2EntityPlayer);
+ if (player.isPotionActive(Potion.invisibility)) player.addChatMessage(new ChatComponentText("Villager #" + villager.getProfession() + " sensed a strange presence around him, making him cling on to his items. You didn't get anything."));
+ else
+ {
+ if (areOtherVillagersAround)
+ {
+ if (!canTheySeeYou) player.addChatMessage(new ChatComponentText("As he was passing by, a random villager caught you trying to steal from Villager #" + villager.getProfession() + "."));
+ else player.addChatMessage(new ChatComponentText("A villager nearby saw you trying to steal from Villager #" + villager.getProfession() + "."));
+ }
+ else player.addChatMessage(new ChatComponentText("Villager #" + villager.getProfession() + " caught you trying to steal from him."));
+ player.addChatMessage(new ChatComponentText("Villager #" + villager.getProfession() + " curses you for the attempt."));
+ }
+ stack.damageItem(1, player);
+ if (playerInfo.hasKey("cursePoints")) playerInfo.setInteger("cursePoints", playerInfo.getInteger("cursePoints") + 25);
+ else playerInfo.setInteger("cursePoints", 25);
}
- buyingList.clear();
- ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 300, "timeUntilReset", "field_70961_j");
- ReflectionHelper.setPrivateValue(EntityVillager.class, villager, true, "needsInitilization", "field_70959_by");
}
-
- villager.dropItem(Items.emerald, wealth);
- ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 0, "wealth", "field_70956_bz");
+ if (steal == 0)
+ {
+ villager.dropItem(Items.emerald, wealth);
+ ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 0, "wealth", "field_70956_bz");
+ }
return true;
}
else
{
- return super.itemInteractionForEntity(stack, par2EntityPlayer, par3EntityLivingBase);
+ return super.itemInteractionForEntity(stack, player, entity);
}
}