summaryrefslogtreecommitdiff
path: root/common/darkknight/jewelrycraft/item
diff options
context:
space:
mode:
Diffstat (limited to 'common/darkknight/jewelrycraft/item')
-rw-r--r--common/darkknight/jewelrycraft/item/ItemCrystal.java59
-rw-r--r--common/darkknight/jewelrycraft/item/ItemList.java7
-rw-r--r--common/darkknight/jewelrycraft/item/ItemRing.java94
3 files changed, 132 insertions, 28 deletions
diff --git a/common/darkknight/jewelrycraft/item/ItemCrystal.java b/common/darkknight/jewelrycraft/item/ItemCrystal.java
new file mode 100644
index 0000000..325c2ce
--- /dev/null
+++ b/common/darkknight/jewelrycraft/item/ItemCrystal.java
@@ -0,0 +1,59 @@
+package darkknight.jewelrycraft.item;
+
+import java.util.List;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+import net.minecraft.client.renderer.texture.IconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.Icon;
+
+public class ItemCrystal extends Item
+{
+ public Icon overlay;
+ public static final int[] dyeColors = new int[] {1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320};
+
+ public ItemCrystal(int par1)
+ {
+ super(par1);
+ this.setHasSubtypes(true);
+ this.setMaxDamage(0);
+ }
+
+ public void registerIcons(IconRegister iconRegister)
+ {
+ itemIcon = iconRegister.registerIcon("jewelrycraft:crystal");
+ overlay = iconRegister.registerIcon("jewelrycraft:crystalOverlay");
+ }
+
+ @Override
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public int getColorFromItemStack(ItemStack stack, int pass)
+ {
+ if(pass == 1 && this.getDamage(stack) != 16) return dyeColors[this.getDamage(stack)];
+ return 16777215;
+ }
+
+ public Icon getIcon(ItemStack stack, int pass)
+ {
+ return pass == 0 ? itemIcon : overlay;
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
+ {
+ for (int j = 0; j < 16; ++j)
+ {
+ par3List.add(new ItemStack(par1, 1, j));
+ }
+ }
+
+}
diff --git a/common/darkknight/jewelrycraft/item/ItemList.java b/common/darkknight/jewelrycraft/item/ItemList.java
index 83bf91b..027f0a6 100644
--- a/common/darkknight/jewelrycraft/item/ItemList.java
+++ b/common/darkknight/jewelrycraft/item/ItemList.java
@@ -12,7 +12,8 @@ public class ItemList
public static Item shadowIngot;
public static Item molds;
public static Item clayMolds;
- public static Item ring;
+ public static Item crystal;
+ public static ItemRing ring;
private static boolean isInitialized = false;
@@ -24,13 +25,15 @@ public class ItemList
shadowIngot = new Item(ConfigHandler.idShadowIngot - 256).setUnlocalizedName("Jewelrycraft.ingotShadow").setTextureName("jewelrycraft:ingotShadow").setCreativeTab(JewelrycraftMod.jewelrycraft);
molds = new ItemMolds(ConfigHandler.idMolds - 256).setUnlocalizedName("Jewelrycraft.mold").setTextureName("Mold").setCreativeTab(JewelrycraftMod.jewelrycraft);
clayMolds = new ItemClayMolds(ConfigHandler.idClayMolds - 256).setUnlocalizedName("Jewelrycraft.mold").setTextureName("Mold").setCreativeTab(JewelrycraftMod.jewelrycraft);
- ring = new ItemRing(ConfigHandler.idRing - 256).setUnlocalizedName("Jewelrycraft.ring").setTextureName("jewelrycraft:ring").setCreativeTab(JewelrycraftMod.jewelrycraft);
+ ring = (ItemRing) new ItemRing(ConfigHandler.idRing - 256).setUnlocalizedName("Jewelrycraft.ring").setTextureName("jewelrycraft:ring");
+ crystal = new ItemCrystal(ConfigHandler.idCrystal - 256).setUnlocalizedName("Jewelrycraft.crystal").setTextureName("jewelrycraft:crystal").setCreativeTab(JewelrycraftMod.jewelrycraft);
GameRegistry.registerItem(thiefGloves, "thiefGloves");
GameRegistry.registerItem(shadowIngot, "shadowIngot");
GameRegistry.registerItem(molds, "molds");
GameRegistry.registerItem(clayMolds, "clayMolds");
GameRegistry.registerItem(ring, "ring");
+ GameRegistry.registerItem(crystal, "crystal");
isInitialized = true;
}
diff --git a/common/darkknight/jewelrycraft/item/ItemRing.java b/common/darkknight/jewelrycraft/item/ItemRing.java
index 184d3f3..bb09d69 100644
--- a/common/darkknight/jewelrycraft/item/ItemRing.java
+++ b/common/darkknight/jewelrycraft/item/ItemRing.java
@@ -64,11 +64,11 @@ public class ItemRing extends Item
}
@SideOnly(Side.CLIENT)
- public int getColorFromItemStack(ItemStack par1ItemStack, int pass)
+ public int getColorFromItemStack(ItemStack stack, int pass)
{
try
{
- return color(par1ItemStack, pass);
+ return color(stack, pass);
}
catch (IOException e)
{
@@ -79,7 +79,8 @@ public class ItemRing extends Item
public Icon getIcon(ItemStack stack, int pass)
{
- if (JewelryNBT.jewel(stack) != null) return pass == 0 ? itemIcon : jewel;
+ if(pass == 0) return itemIcon;
+ if(pass == 1 && JewelryNBT.jewel(stack) != null) return jewel;
return itemIcon;
}
@@ -87,7 +88,8 @@ public class ItemRing extends Item
{
String domain = "", texture;
ResourceManager rm = Minecraft.getMinecraft().getResourceManager();
- if (pass == 1 && JewelryNBT.ingot(stack) != null && JewelryNBT.jewel(stack) == null)
+ int x=0, y=0, ok = 0;
+ if (pass == 0 && JewelryNBT.ingot(stack) != null)
{
if (JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(0, JewelryNBT.ingot(stack).getIconIndex().getIconName().indexOf(":") + 1) != "") domain = JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(0, JewelryNBT.ingot(stack).getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim();
else domain = "minecraft";
@@ -96,30 +98,52 @@ public class ItemRing extends Item
if (JewelryNBT.ingot(stack).getUnlocalizedName().contains("item")) ingot = new ResourceLocation(domain, "textures/items/" + texture);
else ingot = new ResourceLocation(domain, "textures/blocks/" + texture);
BufferedImage bufferedimage = ImageIO.read(rm.getResource(ingot).getInputStream());
- return bufferedimage.getRGB(9, 9);
+ while(ok == 0){
+ int red = (bufferedimage.getRGB(x, y) >> 16) & 0xFF;
+ int green = (bufferedimage.getRGB(x, y) >> 8) & 0xFF;
+ int blue = bufferedimage.getRGB(x, y) & 0xFF;
+ if((red <= 80 && green <=80 && blue <= 80) || (red >= 180 && green >= 180 && blue >= 180)){
+ if(x<bufferedimage.getTileWidth()-1) x++;
+ if(x>=bufferedimage.getTileWidth()-1 && y<bufferedimage.getTileWidth()-1){
+ x=0;
+ y++;
+ }
+ if(x == bufferedimage.getTileWidth()-1 && y==bufferedimage.getTileWidth()-1)ok=1;
+ }
+ else ok=1;
+ }
+ JewelryNBT.addIngotColor(stack, bufferedimage.getRGB(x, y));
}
- else if (JewelryNBT.ingot(stack) != null && JewelryNBT.jewel(stack) != null)
+ else if (pass == 1 && JewelryNBT.jewel(stack) != null)
{
- if (pass == 1)
- {
- if (JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(0, JewelryNBT.jewel(stack).getIconIndex().getIconName().indexOf(":") + 1) != "") domain = JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(0, JewelryNBT.jewel(stack).getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim();
- else domain = "minecraft";
- texture = JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(JewelryNBT.jewel(stack).getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png";
- ResourceLocation jewelLoc = null;
- if (JewelryNBT.jewel(stack).getUnlocalizedName().contains("item")) jewelLoc = new ResourceLocation(domain, "textures/items/" + texture);
- else jewelLoc = new ResourceLocation(domain, "textures/blocks/" + texture);
- BufferedImage bufferedimage = ImageIO.read(rm.getResource(jewelLoc).getInputStream());
- return bufferedimage.getRGB(9, 4);
- }
- if (JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(0, JewelryNBT.ingot(stack).getIconIndex().getIconName().indexOf(":") + 1) != "") domain = JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(0, JewelryNBT.ingot(stack).getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim();
+ x = 0; y = 0; ok=0;
+ if (JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(0, JewelryNBT.jewel(stack).getIconIndex().getIconName().indexOf(":") + 1) != "") domain = JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(0, JewelryNBT.jewel(stack).getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim();
else domain = "minecraft";
- texture = JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(JewelryNBT.ingot(stack).getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png";
- ResourceLocation ingot = null;
- if (JewelryNBT.ingot(stack).getUnlocalizedName().contains("item")) ingot = new ResourceLocation(domain, "textures/items/" + texture);
- else ingot = new ResourceLocation(domain, "textures/blocks/" + texture);
- BufferedImage bufferedimage = ImageIO.read(rm.getResource(ingot).getInputStream());
- return bufferedimage.getRGB(9, 9);
+ texture = JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(JewelryNBT.jewel(stack).getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png";
+ ResourceLocation jewelLoc = null;
+ if (JewelryNBT.jewel(stack).getUnlocalizedName().contains("item")) jewelLoc = new ResourceLocation(domain, "textures/items/" + texture);
+ else jewelLoc = new ResourceLocation(domain, "textures/blocks/" + texture);
+ BufferedImage bufferedimage = ImageIO.read(rm.getResource(jewelLoc).getInputStream());
+ while(ok == 0){
+ int red = (bufferedimage.getRGB(x, y) >> 16) & 0xFF;
+ int green = (bufferedimage.getRGB(x, y) >> 8) & 0xFF;
+ int blue = bufferedimage.getRGB(x, y) & 0xFF;
+ if((red <= 80 && green <=80 && blue <= 80) || (red >= 180 && green >= 180 && blue >= 180)){
+ if(x<bufferedimage.getTileWidth()-1) x++;
+ if(x>=bufferedimage.getTileWidth()-1 && y<bufferedimage.getTileWidth()-1){
+ x=0;
+ y++;
+ }
+ if(x == bufferedimage.getTileWidth()-1 && y==bufferedimage.getTileWidth()-1)ok=1;
+ }
+ else ok=1;
+ }
+ if(JewelryNBT.jewel(stack).getItem().getColorFromItemStack(JewelryNBT.jewel(stack), 1) == 16777215) JewelryNBT.addJewelColor(stack, bufferedimage.getRGB(x, y));
+ else JewelryNBT.addJewelColor(stack, JewelryNBT.jewel(stack).getItem().getColorFromItemStack(JewelryNBT.jewel(stack), 1));
}
+ if(pass == 0 && JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
+ if(pass == 1 && JewelryNBT.jewel(stack) != null) return JewelryNBT.jewelColor(stack);
+ else if(JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
return 16777215;
}
@@ -204,7 +228,7 @@ public class ItemRing extends Item
@Override
public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
{
- if (!player.worldObj.isRemote && JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar)) && JewelryNBT.isModifierX(stack, new ItemStack(Block.chest)) && JewelryNBT.entity(stack, player) == null){
+ if (!player.worldObj.isRemote && entity instanceof EntityLivingBase && JewelryNBT.isJewelX(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();
@@ -247,6 +271,12 @@ public class ItemRing extends Item
String modeN = JewelryNBT.modeName(stack);
if(modeN != null) list.add("Mode: " + modeN);
+
+// int colorI = JewelryNBT.ingotColor(stack);
+// if(colorI != -1) list.add("Ingot Color: " + colorI);
+//
+// int colorJ = JewelryNBT.jewelColor(stack);
+// if(colorJ != -1) list.add("Jewel Color: " + colorJ);
}
}
@@ -255,7 +285,7 @@ public class ItemRing extends Item
if (!world.isRemote)
{
EntityLivingBase entity = JewelryNBT.entity(stack, player);
- if(entity != null){
+ 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);
@@ -403,4 +433,16 @@ public class ItemRing extends Item
}
}
}
+
+ public ItemStack getModifiedItemStack(ItemStack ingot, ItemStack modifier, ItemStack jewel)
+ {
+ ItemStack itemstack = new ItemStack(this);
+ JewelryNBT.addMetal(itemstack, ingot);
+ JewelryNBT.addModifier(itemstack, modifier);
+ JewelryNBT.addJewel(itemstack, jewel);
+ if(JewelryNBT.isModifierEffectType(itemstack)) JewelryNBT.addMode(itemstack, "Activated");
+ if(JewelryNBT.isJewelX(itemstack, new ItemStack(Item.netherStar)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Item.book)))
+ JewelryNBT.addMode(itemstack, "Disenchant");
+ return itemstack;
+ }
}