package minefantasy.item.tool; import java.awt.Color; import java.util.List; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import minefantasy.MineFantasyBase; import minefantasy.api.MineFantasyAPI; import minefantasy.api.anvil.ITongs; import minefantasy.api.forge.HeatableItem; import minefantasy.api.forge.IHotItem; import minefantasy.api.forge.TongsHelper; import minefantasy.api.weapon.IWeaponSpecial; import minefantasy.item.ToolMaterialMedieval; import minefantasy.system.cfg; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.Icon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; public class ItemTongs extends Item implements ITongs, IWeaponSpecial{ private EnumToolMaterial material; public ItemTongs(int id, EnumToolMaterial mat) { super(id); material = mat; this.setFull3D(); setMaxDamage(mat.getMaxUses()); this.setMaxStackSize(1); } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean fullInfo) { super.addInformation(stack, player, list, fullInfo); ItemStack held = TongsHelper.getHeldItem(stack); if(held != null) { list.add(""); list.add(held.getItem().getItemDisplayName(held)); held.getItem().addInformation(held, player, list, fullInfo); } } public Icon getIcon(ItemStack stack, int renderPass) { ItemStack item = TongsHelper.getHeldItem(stack); if(renderPass == 0 && item != null) { return item.getItem().getIcon(item, renderPass); } return itemIcon; } public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) { MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true); if (movingobjectposition == null) { return item; } else { if (movingobjectposition.typeOfHit == EnumMovingObjectType.TILE) { int i = movingobjectposition.blockX; int j = movingobjectposition.blockY; int k = movingobjectposition.blockZ; if (!world.canMineBlock(player, i, j, k)) { return item; } if (!player.canPlayerEdit(i, j, k, movingobjectposition.sideHit, item)) { return item; } if (isWaterSource(world, i, j, k) && TongsHelper.getHeldItem(item) != null) { ItemStack drop = TongsHelper.getHeldItem(item).copy(); if(TongsHelper.isCoolableItem(drop)) { drop = TongsHelper.getHotItem(drop); player.playSound("random.splash", 1.0F, 1.0F); player.playSound("random.fizz", 2.0F, 0.5F); for(int a = 0; a < 5 ; a ++) { world.spawnParticle("largesmoke", i+0.5F, j+1, k+0.5F, 0, 0.065F, 0); } } drop.stackSize = item.stackSize; if(drop != null) { player.dropPlayerItem(drop); } return TongsHelper.clearHeldItem(item, player); } } return item; } } private boolean isWaterSource(World world, int i, int j, int k) { if(world.getBlockMaterial(i, j, k) == Material.water) { return true; } if(isCauldron(world, i, j, k)) { return true; } return false; } public boolean isCauldron(World world, int x, int y, int z) { return world.getBlockId(x, y, z) == Block.cauldron.blockID && world.getBlockMetadata(x, y, z)>0; } @Override public Item setUnlocalizedName(String name) { this.setTextureName("minefantasy:Tool/"+name); return super.setUnlocalizedName(name); } @SideOnly(Side.CLIENT) public boolean requiresMultipleRenderPasses() { return true; } @Override public int getColorFromItemStack(ItemStack item, int renderPass) { if(renderPass == 1) { return Color.WHITE.getRGB(); } ItemStack held = TongsHelper.getHeldItem(item); if(held != null) { return held.getItem().getColorFromItemStack(held, 0); } return Color.WHITE.getRGB(); } @Override public EnumRarity getRarity(ItemStack itemStack) { if (getMaterial() == ToolMaterialMedieval.DRAGONFORGE) { return rarity(itemStack, 1); } if (getMaterial() == ToolMaterialMedieval.IGNOTUMITE) { return rarity(itemStack, 2); } return super.getRarity(itemStack); } public EnumToolMaterial getMaterial() { return material; } private EnumRarity rarity(ItemStack item, int lvl) { EnumRarity[] rarity = new EnumRarity[]{EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic}; if(item.isItemEnchanted()) { if(lvl == 0) { lvl++; } lvl ++; } if(lvl >= rarity.length) { lvl = rarity.length-1; } return rarity[lvl]; } @Override public void onHit(float damage, ItemStack weapon, EntityLivingBase target, EntityLivingBase attacker) { if (getMaterial() == ToolMaterialMedieval.DRAGONFORGE) { target.setFire(20); } if (getMaterial() == ToolMaterialMedieval.IGNOTUMITE) { attacker.heal(1F); } } }