diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2014-03-23 19:01:47 +0200 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2014-03-23 19:01:47 +0200 |
| commit | 5fce447142b3c0f4a214ca7eb208d9e5c25e6377 (patch) | |
| tree | 2b29a935e47c8ba65d753b4161cfc51d053a23e6 /common/darkknight/jewelrycraft/item | |
| parent | 3e0556ee7aadfbb7695f87063662a9ca0d28175f (diff) | |
Added necklaces, Altar Block, new stuff, better Shadow Ingot texture
Diffstat (limited to 'common/darkknight/jewelrycraft/item')
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemClayMolds.java | 2 | ||||
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemList.java | 11 | ||||
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemMolds.java | 2 | ||||
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemNecklace.java | 268 | ||||
| -rw-r--r-- | common/darkknight/jewelrycraft/item/ItemRing.java | 262 |
5 files changed, 478 insertions, 67 deletions
diff --git a/common/darkknight/jewelrycraft/item/ItemClayMolds.java b/common/darkknight/jewelrycraft/item/ItemClayMolds.java index 184db0d..05a684c 100644 --- a/common/darkknight/jewelrycraft/item/ItemClayMolds.java +++ b/common/darkknight/jewelrycraft/item/ItemClayMolds.java @@ -14,7 +14,7 @@ import net.minecraft.util.MathHelper; public class ItemClayMolds extends Item { /** List of molds color names */ - public static final String[] moldsItemNames = new String[] { "clayIngot", "clayRing" }; + public static final String[] moldsItemNames = new String[] { "clayIngot", "clayRing", "clayNecklace" }; @SideOnly(Side.CLIENT) private Icon[] moldsIcons; diff --git a/common/darkknight/jewelrycraft/item/ItemList.java b/common/darkknight/jewelrycraft/item/ItemList.java index 027f0a6..c45909b 100644 --- a/common/darkknight/jewelrycraft/item/ItemList.java +++ b/common/darkknight/jewelrycraft/item/ItemList.java @@ -14,9 +14,10 @@ public class ItemList public static Item clayMolds; public static Item crystal; public static ItemRing ring; - + public static ItemNecklace necklace; + private static boolean isInitialized = false; - + public static void preInit(FMLPreInitializationEvent e) { if (!isInitialized) @@ -27,14 +28,16 @@ public class ItemList clayMolds = new ItemClayMolds(ConfigHandler.idClayMolds - 256).setUnlocalizedName("Jewelrycraft.mold").setTextureName("Mold").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); - + necklace = (ItemNecklace) new ItemNecklace(ConfigHandler.idNecklace - 256).setUnlocalizedName("Jewelrycraft.necklace").setTextureName("jewelrycraft:necklace"); + GameRegistry.registerItem(thiefGloves, "thiefGloves"); GameRegistry.registerItem(shadowIngot, "shadowIngot"); GameRegistry.registerItem(molds, "molds"); GameRegistry.registerItem(clayMolds, "clayMolds"); GameRegistry.registerItem(ring, "ring"); + GameRegistry.registerItem(necklace, "necklace"); GameRegistry.registerItem(crystal, "crystal"); - + isInitialized = true; } } diff --git a/common/darkknight/jewelrycraft/item/ItemMolds.java b/common/darkknight/jewelrycraft/item/ItemMolds.java index e82d539..a62d193 100644 --- a/common/darkknight/jewelrycraft/item/ItemMolds.java +++ b/common/darkknight/jewelrycraft/item/ItemMolds.java @@ -14,7 +14,7 @@ import net.minecraft.util.MathHelper; public class ItemMolds extends Item { /** List of molds color names */ - public static final String[] moldsItemNames = new String[] { "ingot", "ring" }; + public static final String[] moldsItemNames = new String[] { "ingot", "ring", "necklace" }; @SideOnly(Side.CLIENT) private Icon[] moldsIcons; diff --git a/common/darkknight/jewelrycraft/item/ItemNecklace.java b/common/darkknight/jewelrycraft/item/ItemNecklace.java new file mode 100644 index 0000000..7559f53 --- /dev/null +++ b/common/darkknight/jewelrycraft/item/ItemNecklace.java @@ -0,0 +1,268 @@ +package darkknight.jewelrycraft.item; + +import java.io.IOException; +import java.util.List; + +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.entity.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.*; +import net.minecraft.potion.*; +import net.minecraft.tileentity.*; +import net.minecraft.util.*; +import net.minecraft.world.World; + +public class ItemNecklace extends Item +{ + public Icon jewel; + private double amplifier; + int index = 0; + + public ItemNecklace(int par1) + { + super(par1); + this.setMaxStackSize(1); + } + + public void registerIcons(IconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon("jewelrycraft:necklace"); + jewel = 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 Icon getIcon(ItemStack stack, int pass) + { + if(pass == 0) return itemIcon; + if(pass == 1 && JewelryNBT.jewel(stack) != null) return jewel; + return itemIcon; + } + + public String getItemDisplayName(ItemStack stack) + { + if(JewelryNBT.ingot(stack) != null) 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.isJewelX(stack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Item.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("You can't teleport to these coordonates! You need to be in the same dimension they were set!"); + } + else if(JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Item.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.isJewelX(stack, new ItemStack(Item.enderPearl)) && !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("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.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(); + JewelryNBT.addFakeEnchantment(stack); + } + return true; + } + + /** + * allows items to add custom lines of information to the mouseover + * description + */ + @Override + @SuppressWarnings( + { "rawtypes", "unchecked" }) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + { + if (stack.hasTagCompound() && Minecraft.getMinecraft().gameSettings.advancedItemTooltips) + { + ItemStack ingot = JewelryNBT.ingot(stack); + if (ingot != null) list.add("Ingot: " + EnumChatFormatting.YELLOW + ingot.getDisplayName()); + + ItemStack jewel = JewelryNBT.jewel(stack); + if (jewel != null) list.add("Jewel: " + EnumChatFormatting.BLUE + jewel.getDisplayName()); + + ItemStack modifier = JewelryNBT.modifier(stack); + if(modifier != null) list.add("Modifier: " + EnumChatFormatting.DARK_PURPLE + modifier.getDisplayName()); + + 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.getEntityName()); + + 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.blocksList[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.jewelColor(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.isJewelX(stack, new ItemStack(Item.diamond))) amplifier = 1D; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.emerald))) amplifier = 2D; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar))) amplifier = 5D; + + if (!world.isRemote) + { + onItemRightClick(stack, world, player); + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.dyePowder, 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.getBlockId(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(Item.pickaxeDiamond)) && JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar)) && JewelryNBT.isIngotX(stack, new ItemStack(ItemList.shadowIngot))) + if((side == 0 || side == 1) && j > 0 && world.getBlockId(i + x, j, k + z) != Block.bedrock.blockID) world.destroyBlock(i + x, j, k + z, true); + else if((side == 2 || side == 3) && j + x > 0 && world.getBlockId(i + z, j + x, k) != Block.bedrock.blockID) world.destroyBlock(i + z, j + x, k, true); + else if((side == 4 || side == 5) && j + x > 0 && world.getBlockId(i, j + x, k + z) != Block.bedrock.blockID) world.destroyBlock(i, j + x, k + z, true); + } + return true; + } + + @SuppressWarnings({"rawtypes" }) + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) + { + amplifier = 1D; + 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.isJewelX(stack, new ItemStack(Item.diamond))) amplifier = 2D; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.emerald))) amplifier = 3D; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar))) amplifier = 5D; + + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.dyePowder, 1, 15)) && world.getBlockId(posX, posY - 1, posZ) == Block.tilledField.blockID) + 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(Item.blazePowder))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.fireResistance.id, 4, 0, true)); + else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.sugar))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 4, 0, true)); + else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.pickaxeIron)) && !JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.digSpeed.id, 4, 0, true)); + else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.feather))) + { + ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.jump.id, 4, 0, true)); + entityplayer.fallDistance = 0; + } + else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.potion, 1, 8270))) ((EntityLivingBase) entities.get(i)).addPotionEffect(new PotionEffect(Potion.invisibility.id, 4, 0, true)); + } + } + } + } + + 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.isJewelX(itemstack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Item.pickaxeIron)))) 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; + } +} diff --git a/common/darkknight/jewelrycraft/item/ItemRing.java b/common/darkknight/jewelrycraft/item/ItemRing.java index bb09d69..368cde3 100644 --- a/common/darkknight/jewelrycraft/item/ItemRing.java +++ b/common/darkknight/jewelrycraft/item/ItemRing.java @@ -17,26 +17,20 @@ import darkknight.jewelrycraft.block.BlockList; import darkknight.jewelrycraft.util.JewelryNBT; import net.minecraft.block.Block; +import net.minecraft.block.BlockSkull; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.client.resources.ResourceManager; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; +import net.minecraft.enchantment.*; +import net.minecraft.entity.*; +import net.minecraft.entity.monster.EntityIronGolem; +import net.minecraft.entity.monster.EntitySnowman; import net.minecraft.entity.player.EntityPlayer; 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.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.item.*; +import net.minecraft.potion.*; +import net.minecraft.tileentity.*; +import net.minecraft.util.*; import net.minecraft.world.World; public class ItemRing extends Item @@ -54,7 +48,7 @@ public class ItemRing extends Item public void registerIcons(IconRegister iconRegister) { itemIcon = iconRegister.registerIcon("jewelrycraft:ring"); - jewel = iconRegister.registerIcon("jewelrycraft:jewel"); + jewel = iconRegister.registerIcon("jewelrycraft:jewelRing"); } @Override @@ -88,57 +82,74 @@ public class ItemRing extends Item { String domain = "", texture; ResourceManager rm = Minecraft.getMinecraft().getResourceManager(); - int x=0, y=0, ok = 0; - if (pass == 0 && JewelryNBT.ingot(stack) != null) + BufferedImage icon; + int x=0, y=0, ok = 0, red, green, blue; + if (pass == 0 && JewelryNBT.ingot(stack) != null && JewelryNBT.ingotColor(stack) == 16777215) { - 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(); + String ingotIconName = JewelryNBT.ingot(stack).getIconIndex().getIconName(); + + if (ingotIconName.substring(0, ingotIconName.indexOf(":") + 1) != "") domain = ingotIconName.substring(0, ingotIconName.indexOf(":") + 1).replace(":", " ").trim(); else domain = "minecraft"; - texture = JewelryNBT.ingot(stack).getIconIndex().getIconName().substring(JewelryNBT.ingot(stack).getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + + texture = ingotIconName.substring(ingotIconName.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()); - 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){ + + 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((red <= 80 && green <=80 && blue <= 80) || (red >= 180 && green >= 180 && blue >= 180)) + { + if(x<icon.getTileWidth()-1) x++; + if(x>=icon.getTileWidth()-1 && y<icon.getTileWidth()-1) + { x=0; y++; } - if(x == bufferedimage.getTileWidth()-1 && y==bufferedimage.getTileWidth()-1)ok=1; + if(x == icon.getTileWidth()-1 && y==icon.getTileWidth()-1) ok=1; } else ok=1; } - JewelryNBT.addIngotColor(stack, bufferedimage.getRGB(x, y)); + JewelryNBT.addIngotColor(stack, icon.getRGB(x, y)); } - else if (pass == 1 && JewelryNBT.jewel(stack) != null) + else if (pass == 1 && JewelryNBT.jewel(stack) != null && JewelryNBT.jewelColor(stack) == 16777215) { 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(); + String jewelIconName = JewelryNBT.jewel(stack).getIconIndex().getIconName(); + + if (jewelIconName.substring(0, jewelIconName.indexOf(":") + 1) != "") domain = jewelIconName.substring(0, jewelIconName.indexOf(":") + 1).replace(":", " ").trim(); else domain = "minecraft"; - texture = JewelryNBT.jewel(stack).getIconIndex().getIconName().substring(JewelryNBT.jewel(stack).getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + + texture = jewelIconName.substring(jewelIconName.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){ + + 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((red <= 80 && green <=80 && blue <= 80) || (red >= 180 && green >= 180 && blue >= 180)) + { + if(x<icon.getTileWidth()-1) x++; + if(x>=icon.getTileWidth()-1 && y<icon.getTileWidth()-1) + { x=0; y++; } - if(x == bufferedimage.getTileWidth()-1 && y==bufferedimage.getTileWidth()-1)ok=1; + if(x == icon.getTileWidth()-1 && y==icon.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)); + if(JewelryNBT.jewel(stack).getItem().getColorFromItemStack(JewelryNBT.jewel(stack), 1) == 16777215) JewelryNBT.addJewelColor(stack, icon.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); @@ -157,7 +168,8 @@ public class ItemRing extends Item 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){ + 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.isJewelX(stack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Item.bed)) && JewelryNBT.dimension(stack) != -2 && JewelryNBT.dimName(stack) != null) { @@ -196,7 +208,7 @@ public class ItemRing extends Item else if(i != -1 && j != -1 && k != -1) player.addChatMessage("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("You need to link the ring with a chest first, before using it!"); } - else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl)) && JewelryNBT.playerPosX(stack) == -1 && JewelryNBT.playerPosY(stack) == -1 && JewelryNBT.playerPosZ(stack) == -1){ + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl)) && !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); } @@ -220,7 +232,6 @@ public class ItemRing extends Item JewelryNBT.addMode(stack, mode); } } - else if(JewelryNBT.hasTag(stack, "modifier") && JewelryNBT.isModifierEffectType(stack)) JewelryNBT.addMode(stack, "Activated"); } return stack; } @@ -246,7 +257,7 @@ public class ItemRing extends Item { "rawtypes", "unchecked" }) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { - if (stack.hasTagCompound() && stack.getDisplayName() != "Wedding Ring") + if (stack.hasTagCompound() && stack.getDisplayName() != "Wedding Ring" && Minecraft.getMinecraft().gameSettings.advancedItemTooltips) { ItemStack ingot = JewelryNBT.ingot(stack); if (ingot != null) list.add("Ingot: " + EnumChatFormatting.YELLOW + ingot.getDisplayName()); @@ -271,20 +282,44 @@ 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); + + int block = JewelryNBT.blockID(stack); + if(block != -1) list.add("Block: " + StatCollector.translateToLocalFormatted(Block.blocksList[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.jewelColor(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.isJewelX(stack, new ItemStack(Item.diamond))) amplifier = 1; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.emerald))) amplifier = 2; + else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar))) 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); @@ -292,6 +327,40 @@ public class ItemRing extends Item } if (JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(stack, new ItemStack(Block.chest)) && world.getBlockId(i, j, k) == Block.chest.blockID) JewelryNBT.addBlockCoordonates(stack, i, j, k); onItemRightClick(stack, world, player); + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.dyePowder, 1, 15))) world.scheduleBlockUpdate(i, j, k, world.getBlockId(i, j, k), 7 - amplifier); + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.pickaxeDiamond)) && JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl))) + { + 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, JewelryNBT.blockID(stack)); + world.setBlockMetadataWithNotify(i + shiftX, j + shiftY, k + shiftZ, JewelryNBT.blockMetadata(stack), 2); + if(JewelryNBT.hasTag(stack, "tile")) world.setBlockTileEntity(i + shiftX, j + shiftY, k + shiftZ, JewelryNBT.tileEntity(stack)); + if(JewelryNBT.tileEntity(stack) instanceof TileEntitySkull) ((BlockSkull)Block.skull).makeWither(world, i + shiftX, j + shiftY, k + shiftZ, (TileEntitySkull)JewelryNBT.tileEntity(stack)); + if(JewelryNBT.blockID(stack) == Block.pumpkin.blockID || JewelryNBT.blockID(stack) == Block.pumpkinLantern.blockID) createGolems(world, i + shiftX, j + shiftY, k + shiftZ); + JewelryNBT.removeBlock(stack); + used = true; + } + + if(!JewelryNBT.hasTag(stack, "tile") && world.getBlockTileEntity(i, j, k) != null && !used){ + JewelryNBT.addTileEntityBlock(stack, world, i, j, k); + world.removeBlockTileEntity(i, j, k); + world.setBlock(i, j, k, 0); + } + else if(!JewelryNBT.hasTag(stack, "blockID") && !used){ + JewelryNBT.addBlock(stack, world.getBlockId(i, j, k), world.getBlockMetadata(i, j, k)); + JewelryNBT.addBlockCoordonates(stack, i, j, k); + world.setBlock(i, j, k, 0); + } + } + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.pickaxeDiamond)) && JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar)) && JewelryNBT.isIngotX(stack, new ItemStack(ItemList.shadowIngot)) && j > 0 && world.getBlockId(i, j, k) != Block.bedrock.blockID) + world.destroyBlock(i, j, k, true); } return true; } @@ -317,27 +386,26 @@ public class ItemRing extends Item 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.isJewelX(stack, new ItemStack(Item.diamond))) amplifier = 1; else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.emerald))) amplifier = 2; else if (JewelryNBT.isJewelX(stack, new ItemStack(Item.netherStar))) amplifier = 7; + if(JewelryNBT.isModifierX(stack, new ItemStack(Item.dyePowder, 1, 15)) && world.getBlockId(posX, posY - 1, posZ) == Block.tilledField.blockID) + world.setBlockMetadataWithNotify(posX, posY - 1, posZ, 1, 2); + if(JewelryNBT.isModeX(stack, "Activated")) { if (JewelryNBT.isModifierX(stack, new ItemStack(Item.blazePowder)) && entityplayer != null) - { entityplayer.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 4, amplifier, true)); - entityplayer.addPotionEffect(new PotionEffect(Potion.weakness.id, 4, amplifier, true)); - } else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.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(Item.pickaxeIron)) && entityplayer != null) - { + else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.pickaxeIron)) && entityplayer != null && !JewelryNBT.isJewelX(stack, new ItemStack(Item.enderPearl))) entityplayer.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 4, amplifier, true)); - entityplayer.addPotionEffect(new PotionEffect(Potion.resistance.id, 4, -2*amplifier, true)); - } else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.feather)) && entityplayer != null) { entityplayer.addPotionEffect(new PotionEffect(Potion.jump.id, 4, amplifier, true)); @@ -440,9 +508,81 @@ public class ItemRing extends Item JewelryNBT.addMetal(itemstack, ingot); JewelryNBT.addModifier(itemstack, modifier); JewelryNBT.addJewel(itemstack, jewel); - if(JewelryNBT.isModifierEffectType(itemstack)) JewelryNBT.addMode(itemstack, "Activated"); + if(JewelryNBT.isModifierEffectType(itemstack) && !(JewelryNBT.isJewelX(itemstack, new ItemStack(Item.enderPearl)) && JewelryNBT.isModifierX(itemstack, new ItemStack(Item.pickaxeIron)))) 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; } + + public void createGolems(World world, int i, int j, int k) + { + if (world.getBlockId(i, j - 1, k) == Block.blockSnow.blockID && world.getBlockId(i, j - 2, k) == Block.blockSnow.blockID) + { + if (!world.isRemote) + { + world.setBlock(i, j, k, 0, 0, 2); + world.setBlock(i, j - 1, k, 0, 0, 2); + world.setBlock(i, j - 2, k, 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, 0); + world.notifyBlockChange(i, j - 1, k, 0); + world.notifyBlockChange(i, j - 2, k, 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.getBlockId(i, j - 1, k) == Block.blockIron.blockID && world.getBlockId(i, j - 2, k) == Block.blockIron.blockID) + { + boolean flag = world.getBlockId(i - 1, j - 1, k) == Block.blockIron.blockID && world.getBlockId(i + 1, j - 1, k) == Block.blockIron.blockID; + boolean flag1 = world.getBlockId(i, j - 1, k - 1) == Block.blockIron.blockID && world.getBlockId(i, j - 1, k + 1) == Block.blockIron.blockID; + + if (flag || flag1) + { + world.setBlock(i, j, k, 0, 0, 2); + world.setBlock(i, j - 1, k, 0, 0, 2); + world.setBlock(i, j - 2, k, 0, 0, 2); + + if (flag) + { + world.setBlock(i - 1, j - 1, k, 0, 0, 2); + world.setBlock(i + 1, j - 1, k, 0, 0, 2); + } + else + { + world.setBlock(i, j - 1, k - 1, 0, 0, 2); + world.setBlock(i, j - 1, k + 1, 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, 0); + world.notifyBlockChange(i, j - 1, k, 0); + world.notifyBlockChange(i, j - 2, k, 0); + + if (flag) + { + world.notifyBlockChange(i - 1, j - 1, k, 0); + world.notifyBlockChange(i + 1, j - 1, k, 0); + } + else + { + world.notifyBlockChange(i, j - 1, k - 1, 0); + world.notifyBlockChange(i, j - 1, k + 1, 0); + } + } + } + } } |
