diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2013-12-24 21:01:41 +0200 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2013-12-24 21:01:41 +0200 |
| commit | 1997f4547812121223836dcacfcb31ea63acdda6 (patch) | |
| tree | c6962617e7c2374b9d7393846d94bc99c21f940c /common/darkknight/jewelrycraft/item/ItemRing.java | |
| parent | 198677e5b01009a65d243da1d25a14f879df659c (diff) | |
Fixed some bugs with tile entities, fixed rings rendering issue, added interdimensional teleporting rings and ender chest ring
Diffstat (limited to 'common/darkknight/jewelrycraft/item/ItemRing.java')
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemRing.java | 205 |
1 files changed, 171 insertions, 34 deletions
diff --git a/common/darkknight/jewelrycraft/item/ItemRing.java b/common/darkknight/jewelrycraft/item/ItemRing.java index 268a6aa..6f31c4d 100644 --- a/common/darkknight/jewelrycraft/item/ItemRing.java +++ b/common/darkknight/jewelrycraft/item/ItemRing.java @@ -10,11 +10,15 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import darkknight.jewelrycraft.util.JewelryNBT; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.client.resources.ResourceManager; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.InventoryEnderChest; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -22,6 +26,7 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Icon; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; @@ -43,18 +48,6 @@ public class ItemRing extends ItemBase jewel = iconRegister.registerIcon("jewelrycraft:jewel"); } - public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.hasTagCompound() && stack.getTagCompound().hasKey("jewel")) return getIcon(stack, 1); - return getIcon(stack, 0); - } - - @Override - public Icon getIconFromDamageForRenderPass(int damage, int pass) - { - return pass == 0 ? super.getIconFromDamageForRenderPass(damage, pass) : jewel; - } - @Override public boolean requiresMultipleRenderPasses() { @@ -66,7 +59,7 @@ public class ItemRing extends ItemBase { try { - if(par1ItemStack != null) return color(par1ItemStack, pass); + return color(par1ItemStack, pass); } catch (IOException e) { @@ -75,9 +68,25 @@ public class ItemRing extends ItemBase return 16777215; } + public Icon getIcon(ItemStack stack, int pass) + { + if (stack.hasTagCompound()) + { + if (stack.getTagCompound().hasKey("jewel")) + { + NBTTagCompound ingotNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); + ItemStack ingotStack = new ItemStack(0, 0, 0); + ingotStack.readFromNBT(ingotNBT); + if(pass == 0) return itemIcon; + if(pass == 1) return jewel; + } + } + return itemIcon; + } + public static int color(ItemStack stack, int pass) throws IOException { - if (pass == 0 && stack.hasTagCompound() && stack.getTagCompound().hasKey("ingot")) + if (stack.hasTagCompound() && stack.getTagCompound().hasKey("ingot") && !stack.getTagCompound().hasKey("jewel") && pass == 1) { NBTTagCompound ingotNBT = (NBTTagCompound) stack.getTagCompound().getTag("ingot"); ItemStack ingotStack = new ItemStack(0, 0, 0); @@ -98,12 +107,33 @@ public class ItemRing extends ItemBase return bufferedimage.getRGB(9, 9); } } - if (pass == 1 && stack.hasTagCompound() && stack.getTagCompound().hasKey("jewel")) + if (stack.hasTagCompound() && stack.getTagCompound().hasKey("jewel")) { - NBTTagCompound ingotNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); + if(pass == 1) + { + NBTTagCompound jewelNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); + ItemStack jewel = new ItemStack(0, 0, 0); + jewel.readFromNBT(jewelNBT); + if(jewel != null && jewel != new ItemStack(0, 0, 0) && jewel.getIconIndex().getIconName() != "") + { + String domain = ""; + if(jewel.getIconIndex().getIconName().substring(0, jewel.getIconIndex().getIconName().indexOf(":") + 1) != "") + domain = jewel.getIconIndex().getIconName().substring(0, jewel.getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim(); + else + domain = "minecraft"; + String texture = jewel.getIconIndex().getIconName().substring(jewel.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + ResourceLocation jewelLoc = null; + if(jewel.getUnlocalizedName().contains("item")) jewelLoc = new ResourceLocation(domain, "textures/items/" + texture); + else jewelLoc = new ResourceLocation(domain, "textures/blocks/" + texture); + ResourceManager rm = Minecraft.getMinecraft().getResourceManager(); + BufferedImage bufferedimage = ImageIO.read(rm.getResource(jewelLoc).getInputStream()); + return bufferedimage.getRGB(9, 4); + } + } + NBTTagCompound ingotNBT = (NBTTagCompound) stack.getTagCompound().getTag("ingot"); ItemStack ingotStack = new ItemStack(0, 0, 0); ingotStack.readFromNBT(ingotNBT); - if(ingotStack != null && ingotStack != new ItemStack(0, 0, 0) && ingotStack.getIconIndex().getIconName() != "") + if(ingotStack.getIconIndex().getIconName() != "") { String domain = ""; if(ingotStack.getIconIndex().getIconName().substring(0, ingotStack.getIconIndex().getIconName().indexOf(":") + 1) != "") @@ -111,12 +141,12 @@ public class ItemRing extends ItemBase else domain = "minecraft"; String texture = ingotStack.getIconIndex().getIconName().substring(ingotStack.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; - ResourceLocation jewel = null; - if(ingotStack.getUnlocalizedName().contains("item")) jewel = new ResourceLocation(domain, "textures/items/" + texture); - else jewel = new ResourceLocation(domain, "textures/blocks/" + texture); + ResourceLocation ingot = null; + if(ingotStack.getUnlocalizedName().contains("item")) ingot = new ResourceLocation(domain, "textures/items/" + texture); + else ingot = new ResourceLocation(domain, "textures/blocks/" + texture); ResourceManager rm = Minecraft.getMinecraft().getResourceManager(); - BufferedImage bufferedimage = ImageIO.read(rm.getResource(jewel).getInputStream()); - return bufferedimage.getRGB(9, 4); + BufferedImage bufferedimage = ImageIO.read(rm.getResource(ingot).getInputStream()); + return bufferedimage.getRGB(9, 9); } } return 16777215; @@ -131,6 +161,13 @@ public class ItemRing extends ItemBase NBTTagCompound ingotNBT = (NBTTagCompound) stack.getTagCompound().getTag("ingot"); ItemStack ingotStack = new ItemStack(0, 0, 0); ingotStack.readFromNBT(ingotNBT); + if (stack.getTagCompound().hasKey("jewel")) + { + NBTTagCompound jewelNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); + ItemStack jewel = new ItemStack(0, 0, 0); + jewel.readFromNBT(jewelNBT); + if(jewel.itemID == Item.diamond.itemID && ingotStack.itemID == Item.ingotGold.itemID) return "Wedding Ring"; + } return ingotStack.getDisplayName().replace("Ingot", " ").trim() + " " + ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); } } @@ -139,7 +176,7 @@ public class ItemRing extends ItemBase public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if (stack.hasTagCompound()) + if (!world.isRemote && stack.hasTagCompound()) { if(stack.getTagCompound().hasKey("x") && stack.getTagCompound().hasKey("y") && stack.getTagCompound().hasKey("z")) { @@ -150,24 +187,83 @@ public class ItemRing extends ItemBase posX = x.getDouble("x"); posY = y.getDouble("y"); posZ = z.getDouble("z"); - 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); + if(stack.getTagCompound().hasKey("dimension") && stack.getTagCompound().hasKey("dimName")) + { + NBTTagCompound dim = (NBTTagCompound) stack.getTagCompound().getTag("dimension"); + int dimension = 0; + dimension = dim.getInteger("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); + if(player.dimension != 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 + { + 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); + } } if(stack.getTagCompound().hasKey("jewel")) { NBTTagCompound jewelNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); ItemStack jewel = new ItemStack(0, 0, 0); jewel.readFromNBT(jewelNBT); - if(jewel.itemID == Item.enderPearl.itemID && !stack.getTagCompound().hasKey("x") && !stack.getTagCompound().hasKey("y") && !stack.getTagCompound().hasKey("z")) + if(stack.getTagCompound().hasKey("modifier")) + { + NBTTagCompound modifierNBT = (NBTTagCompound) stack.getTagCompound().getTag("modifier"); + ItemStack modifier = new ItemStack(0, 0, 0); + modifier.readFromNBT(modifierNBT); + if(jewel.itemID == Item.enderPearl.itemID && modifier.itemID == Item.bed.itemID && !stack.getTagCompound().hasKey("x") && !stack.getTagCompound().hasKey("y") && !stack.getTagCompound().hasKey("z") && !stack.getTagCompound().hasKey("dimension")) + { + JewelryNBT.addCoordonatesAndDimension(stack, player.posX, player.posY, player.posZ, world.provider.dimensionId, world.provider.getDimensionName()); + JewelryNBT.addEnchantment(stack); + } + if(jewel.itemID == Block.obsidian.blockID && modifier.itemID == Item.eyeOfEnder.itemID) + { + InventoryEnderChest inventoryenderchest = player.getInventoryEnderChest(); + player.displayGUIChest(inventoryenderchest); + } + } + else if(jewel.itemID == Item.enderPearl.itemID && !stack.getTagCompound().hasKey("x") && !stack.getTagCompound().hasKey("y") && !stack.getTagCompound().hasKey("z")) + { JewelryNBT.addCoordonates(stack, player.posX, player.posY, player.posZ); + JewelryNBT.addEnchantment(stack); + } } } return stack; } + @Override + public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) + { + if (!player.worldObj.isRemote && stack.hasTagCompound()) + { + if(stack.getTagCompound().hasKey("jewel") && stack.getTagCompound().hasKey("modifier") && !stack.getTagCompound().hasKey("entityID") && !stack.getTagCompound().hasKey("entity")) + { + NBTTagCompound jewelNBT = (NBTTagCompound) stack.getTagCompound().getTag("jewel"); + NBTTagCompound modifierNBT = (NBTTagCompound) stack.getTagCompound().getTag("modifier"); + ItemStack jewel = new ItemStack(0, 0, 0); + ItemStack modifier = new ItemStack(0, 0, 0); + jewel.readFromNBT(jewelNBT); + modifier.readFromNBT(modifierNBT); + if(jewel.itemID == Item.netherStar.itemID && modifier.itemID == Block.chest.blockID) + { + JewelryNBT.addEntity(stack, entity); + JewelryNBT.addEntityID(stack, entity); + entity.setDead(); + JewelryNBT.addEnchantment(stack); + } + } + } + return true; + } + /** * allows items to add custom lines of information to the mouseover description */ @@ -175,7 +271,7 @@ public class ItemRing extends ItemBase @SuppressWarnings({ "rawtypes", "unchecked"}) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { - if (stack.hasTagCompound()) + if (stack.hasTagCompound() && stack.getDisplayName() != "Wedding Ring") { if (stack != null && stack != new ItemStack(0, 0, 0) && stack.getTagCompound().hasKey("ingot")) { @@ -215,14 +311,55 @@ public class ItemRing extends ItemBase posZ = z.getDouble("z"); list.add(EnumChatFormatting.YELLOW + "X: " + EnumChatFormatting.GRAY + (int)posX + EnumChatFormatting.YELLOW + " Y: " + EnumChatFormatting.GRAY + (int)posY + EnumChatFormatting.YELLOW + " Z: " + EnumChatFormatting.GRAY + (int)posZ); } + + if (stack != null && stack != new ItemStack(0, 0, 0) && stack.getTagCompound().hasKey("dimName")) + { + NBTTagCompound dim = (NBTTagCompound) stack.getTagCompound().getTag("dimName"); + String name = ""; + name = dim.getString("dimName"); + list.add("Dimension: " + EnumChatFormatting.DARK_GREEN + name); + } + + if (stack != null && stack != new ItemStack(0, 0, 0) && stack.getTagCompound().hasKey("entityID") && stack.getTagCompound().hasKey("entity")) + { + NBTTagCompound enID = (NBTTagCompound) stack.getTagCompound().getTag("entityID"); + NBTTagCompound en = (NBTTagCompound) stack.getTagCompound().getTag("entity"); + int entityID = 0; + entityID = enID.getInteger("entityID"); + EntityLivingBase entity = (EntityLivingBase) EntityList.createEntityByID(entityID, player.worldObj); + entity.readFromNBT(en); + list.add("Entity: " + EnumChatFormatting.GOLD + entity.getEntityName()); + } } } + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int i, int j, int k, int side, float par8, float par9, float par10) + { + if (!world.isRemote && stack.hasTagCompound()) + { + if (stack != null && stack != new ItemStack(0, 0, 0) && stack.getTagCompound().hasKey("entityID") && stack.getTagCompound().hasKey("entity")) + { + NBTTagCompound enID = (NBTTagCompound) stack.getTagCompound().getTag("entityID"); + NBTTagCompound en = (NBTTagCompound) stack.getTagCompound().getTag("entity"); + int entityID = 0; + entityID = enID.getInteger("entityID"); + EntityLivingBase entity = (EntityLivingBase) EntityList.createEntityByID(entityID, player.worldObj); + entity.readFromNBT(en); + entity.setLocationAndAngles(i + 0.5D, j + 1D, k + 0.5D, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F); + world.spawnEntityInWorld(entity); + JewelryNBT.removeNBT(stack, "entityID"); + JewelryNBT.removeNBT(stack, "entity"); + JewelryNBT.removeNBT(stack, "ench"); + } + } + return true; + } + @Override - public void onUpdate(ItemStack stack, World par2World, Entity par3Entity, int par4, boolean par5) + public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) { amplifier = 0; - if (stack.hasTagCompound()) + if (!world.isRemote && stack.hasTagCompound()) { if(stack.getTagCompound().hasKey("jewel")) { @@ -234,9 +371,9 @@ public class ItemRing extends ItemBase } if(stack.getTagCompound().hasKey("modifier")) { - if (par3Entity instanceof EntityPlayer) + if (entity instanceof EntityPlayer) { - EntityPlayer entityplayer = (EntityPlayer)par3Entity; + EntityPlayer entityplayer = (EntityPlayer)entity; NBTTagCompound modifierNBT = (NBTTagCompound) stack.getTagCompound().getTag("modifier"); ItemStack modifier = new ItemStack(0, 0, 0); modifier.readFromNBT(modifierNBT); |
