summaryrefslogtreecommitdiff
path: root/src/main/java/gmail/Lance5057/items/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gmail/Lance5057/items/tools')
-rw-r--r--src/main/java/gmail/Lance5057/items/tools/HeaterShield.java249
-rw-r--r--src/main/java/gmail/Lance5057/items/tools/RoundShield.java244
-rw-r--r--src/main/java/gmail/Lance5057/items/tools/Shield.java214
-rw-r--r--src/main/java/gmail/Lance5057/items/tools/TinkerWrench.java118
4 files changed, 825 insertions, 0 deletions
diff --git a/src/main/java/gmail/Lance5057/items/tools/HeaterShield.java b/src/main/java/gmail/Lance5057/items/tools/HeaterShield.java
new file mode 100644
index 0000000..9d6395e
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/tools/HeaterShield.java
@@ -0,0 +1,249 @@
+package gmail.Lance5057.items.tools;
+
+import java.util.List;
+
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import tconstruct.library.tools.AbilityHelper;
+import tconstruct.library.tools.HarvestTool;
+import tconstruct.tools.TinkerTools;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+
+public class HeaterShield extends Shield
+{
+ int induceDamage = 0;
+public HeaterShield()
+{
+super(0);
+this.setUnlocalizedName("heatershield");
+}
+@Override
+public Item getHeadItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getHandleItem ()
+{
+return TinkerTools.toughRod;
+}
+@Override
+public Item getAccessoryItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getExtraItem ()
+{
+ return TinkerTools.toughBinding;
+}
+@Override
+public int durabilityTypeAccessory ()
+{
+return 2;
+}
+@Override
+public float getRepairCost ()
+{
+return 4.0f;
+}
+@Override
+public float getDurabilityModifier ()
+{
+return 2.5f;
+}
+@Override
+public float breakSpeedModifier ()
+{
+return 0.4f;
+}
+@Override
+public float getDamageModifier ()
+{
+return 1.4f;
+}
+@SideOnly(Side.CLIENT)
+@Override
+public int getPartAmount ()
+{
+return 4;
+}
+@Override
+public String getIconSuffix (int partType)
+{
+switch (partType)
+{
+case 0:
+return "_shield_face";
+case 1:
+return "_shield_face_broken";
+case 2:
+return "_shield_edge";
+case 3:
+return "_shield_face_other";
+case 4:
+return "_shield_binding";
+default:
+return "";
+}
+}
+@Override
+public String getEffectSuffix ()
+{
+return "_shield_effect";
+}
+@Override
+public String getDefaultFolder ()
+{
+return "heatershield";
+}
+/* tool_TinkerShield specific */
+@Override
+public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity)
+{
+if (AbilityHelper.onLeftClickEntity(stack, player, entity, this))
+{
+entity.hurtResistantTime += 7;
+/*
+* if (entity instanceof EntityLiving) { EntityLiving living =
+* (EntityLiving) entity; if (living.getHealth() <= 0) {
+*
+* } }
+*/
+// if (entity.getHealth() <= 0)
+}
+return true;
+}
+@Override
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+
+}
+
+@Override
+public int getArrowCount(ItemStack stack)
+{
+ if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows"))
+ {
+ return stack.getTagCompound().getShort("arrows");
+ }
+ else
+ return 0;
+}
+@Override
+public void setArrowCount(ItemStack stack, int count)
+{
+ if(!stack.hasTagCompound()){
+ stack.setTagCompound(new NBTTagCompound());
+ }
+ //Should never happen, you would need A LOT of arrows for this to happen
+ if(count > Short.MAX_VALUE){
+ count = Short.MAX_VALUE;
+ }
+ stack.getTagCompound().setShort("arrows", (short)count);
+}
+@Override
+public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow)
+{
+ if(arrow instanceof EntityArrow)
+ {
+ setArrowCount(shield, getArrowCount(shield)+1);
+ player.setArrowCountInEntity(player.getArrowCountInEntity() - 1);
+ ((EntityArrow)arrow).setDead();
+ return true;
+ }
+ return false;
+}
+@Override
+public boolean sheatheOnBack(ItemStack arg0) {
+ return true;
+}
+@Override
+public void blockAnimation(EntityPlayer player, float dmg)
+{
+ player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1);
+}
+@Override
+public boolean canBlock(ItemStack shield, DamageSource source) {
+ return !source.isUnblockable();
+}
+@Override
+public int getBashTimer(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 10;
+}
+@Override
+public float getBlockAngle(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 60;
+}
+@Override
+public float getDamageDecayRate(ItemStack shield, float amount)
+{
+ return 0;
+}
+@Override
+public float getDamageReduction(ItemStack arg0, DamageSource arg1) {
+ return 1f;
+}
+@Override
+public float getDecayRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f;
+ return 10f / recovery;
+}
+@Override
+public float getRecoveryRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f;
+ return 10f / recovery;
+}
+
+@Override
+@SideOnly(Side.CLIENT)
+public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+{
+ NBTTagCompound tags = par1ItemStack.getTagCompound();
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ par3List.add("");
+ par3List.add(EnumChatFormatting.DARK_GREEN+
+ ItemStack.field_111284_a.format( 1F / (10f / (tags.getCompoundTag("InfiTool").getInteger("MiningSpeed")/1.5f)) / 20F)+
+ StatCollector.translateToLocal("attribute.shield.block.time"));
+ int arrowCount = getArrowCount(par1ItemStack);
+ if(arrowCount > 0)
+ {
+ par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count")));
+ }
+}
+@Override
+protected Material[] getEffectiveMaterials ()
+{
+ return materials;
+}
+ static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits };
+
+@Override
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return "pickaxe";
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/items/tools/RoundShield.java b/src/main/java/gmail/Lance5057/items/tools/RoundShield.java
new file mode 100644
index 0000000..17aec1c
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/tools/RoundShield.java
@@ -0,0 +1,244 @@
+package gmail.Lance5057.items.tools;
+
+import java.util.List;
+import java.util.Random;
+
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import mods.battlegear2.api.shield.ShieldType;
+import mods.battlegear2.utils.BattlegearConfig;
+import cpw.mods.fml.relauncher.*;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.*;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.*;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import tconstruct.library.tools.*;
+import tconstruct.tools.TinkerTools;
+public class RoundShield extends Shield
+{
+ int induceDamage = 0;
+public RoundShield()
+{
+super(0);
+this.setUnlocalizedName("roundshield");
+}
+@Override
+public Item getHeadItem ()
+{
+return TinkerTools.largePlate;
+}
+@Override
+public Item getHandleItem ()
+{
+return TinkerTools.toolRod;
+}
+@Override
+public Item getAccessoryItem ()
+{
+return TinkerTools.frypanHead;
+}
+@Override
+public int durabilityTypeAccessory ()
+{
+return 2;
+}
+@Override
+public float getRepairCost ()
+{
+return 4.0f;
+}
+@Override
+public float getDurabilityModifier ()
+{
+return 2.5f;
+}
+@Override
+public float breakSpeedModifier ()
+{
+return 0.4f;
+}
+@Override
+public float getDamageModifier ()
+{
+return 1.4f;
+}
+@SideOnly(Side.CLIENT)
+@Override
+public int getPartAmount ()
+{
+return 3;
+}
+@Override
+public String getIconSuffix (int partType)
+{
+switch (partType)
+{
+case 0:
+return "_shield_face";
+case 1:
+return "_shield_face_broken";
+case 2:
+return "_shield_edge";
+case 3:
+return "_shield_boss";
+default:
+return "";
+}
+}
+@Override
+public String getEffectSuffix ()
+{
+return "_shield_effect";
+}
+@Override
+public String getDefaultFolder ()
+{
+return "shield";
+}
+/* tool_TinkerShield specific */
+@Override
+public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity)
+{
+if (AbilityHelper.onLeftClickEntity(stack, player, entity, this))
+{
+entity.hurtResistantTime += 7;
+/*
+* if (entity instanceof EntityLiving) { EntityLiving living =
+* (EntityLiving) entity; if (living.getHealth() <= 0) {
+*
+* } }
+*/
+// if (entity.getHealth() <= 0)
+}
+return true;
+}
+@Override
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+
+}
+
+@Override
+public int getArrowCount(ItemStack stack)
+{
+ if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows"))
+ {
+ return stack.getTagCompound().getShort("arrows");
+ }
+ else
+ return 0;
+}
+@Override
+public void setArrowCount(ItemStack stack, int count)
+{
+ if(!stack.hasTagCompound()){
+ stack.setTagCompound(new NBTTagCompound());
+ }
+ //Should never happen, you would need A LOT of arrows for this to happen
+ if(count > Short.MAX_VALUE){
+ count = Short.MAX_VALUE;
+ }
+ stack.getTagCompound().setShort("arrows", (short)count);
+}
+@Override
+public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow)
+{
+ if(arrow instanceof EntityArrow)
+ {
+ setArrowCount(shield, getArrowCount(shield)+1);
+ player.setArrowCountInEntity(player.getArrowCountInEntity() - 1);
+ ((EntityArrow)arrow).setDead();
+ return true;
+ }
+ return false;
+}
+@Override
+public boolean sheatheOnBack(ItemStack arg0) {
+ return true;
+}
+@Override
+public void blockAnimation(EntityPlayer player, float dmg)
+{
+ player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1);
+}
+@Override
+public boolean canBlock(ItemStack shield, DamageSource source) {
+ return !source.isUnblockable();
+}
+@Override
+public int getBashTimer(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 10;
+}
+@Override
+public float getBlockAngle(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 60;
+}
+@Override
+public float getDamageDecayRate(ItemStack shield, float amount)
+{
+ return 2;
+}
+@Override
+public float getDamageReduction(ItemStack arg0, DamageSource arg1) {
+ return 1f;
+}
+@Override
+public float getDecayRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed");
+ return 10f / recovery * 2;
+}
+@Override
+public float getRecoveryRate(ItemStack stack)
+{
+ NBTTagCompound tags = stack.getTagCompound();
+ float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed");
+ return 10f / recovery * 2;
+}
+
+@Override
+@SideOnly(Side.CLIENT)
+public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+{
+ NBTTagCompound tags = par1ItemStack.getTagCompound();
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ par3List.add("");
+ par3List.add(EnumChatFormatting.DARK_GREEN+
+ ItemStack.field_111284_a.format( 1F / (10f / tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") * 2) / 20F)+
+ StatCollector.translateToLocal("attribute.shield.block.time"));
+ int arrowCount = getArrowCount(par1ItemStack);
+ if(arrowCount > 0)
+ {
+ par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count")));
+ }
+}
+@Override
+protected Material[] getEffectiveMaterials ()
+{
+ return materials;
+}
+ static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits };
+
+@Override
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return "pickaxe";
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/items/tools/Shield.java b/src/main/java/gmail/Lance5057/items/tools/Shield.java
new file mode 100644
index 0000000..479c28c
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/tools/Shield.java
@@ -0,0 +1,214 @@
+package gmail.Lance5057.items.tools;
+
+import tconstruct.library.tools.ToolCore;
+import cpw.mods.fml.relauncher.*;
+import mods.battlegear2.api.IEnchantable;
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.*;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.World;
+
+public class Shield extends ToolCore implements IShield, ISheathed, IArrowCatcher, IArrowDisplay
+{
+public Shield(int baseDamage)
+{
+super(baseDamage);
+}
+protected float baseSpeed ()
+{
+return 1.5f;
+}
+protected float effectiveSpeed ()
+{
+return 15f;
+}
+public float breakSpeedModifier ()
+{
+return 1.0f;
+}
+@Override
+public float getDigSpeed (ItemStack stack, Block block, int meta)
+{
+if (stack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Broken"))
+return 0.1f;
+for (int i = 0; i < web.length; i++)
+{
+if (web[i] == block.getMaterial())
+{
+return effectiveSpeed();
+}
+}
+return baseSpeed();
+}
+/**
+* returns the action that specifies what animation to play when the items
+* is being used
+*/
+@Override
+public EnumAction getItemUseAction (ItemStack par1ItemStack)
+{
+return EnumAction.block;
+}
+/**
+* How long it takes to use or consume an item
+*/
+@Override
+public int getMaxItemUseDuration (ItemStack par1ItemStack)
+{
+return 72000;
+}
+/**
+* Called whenever this item is equipped and the right mouse button is
+* pressed. Args: itemStack, world, entityPlayer
+*/
+@Override
+public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
+{
+player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
+return stack;
+}
+@Override
+public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
+{
+return false;
+}
+/**
+* Returns if the item (tool) can harvest results from the block type.
+*/
+@Override
+public boolean canHarvestBlock (Block block, ItemStack is)
+{
+for (int i = 0; i < web.length; i++)
+{
+if (block.getMaterial() == web[i])
+return true;
+}
+return super.canHarvestBlock(block, is);
+}
+protected Material[] getEffectiveMaterials ()
+{
+return web;
+}
+@Override
+@SideOnly(Side.CLIENT)
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+ super.onUpdate(stack, world, entity, par4, par5);
+ if (entity instanceof EntityPlayerSP)
+ {
+ EntityPlayerSP player = (EntityPlayerSP) entity;
+ ItemStack usingItem = player.getItemInUse();
+ if (usingItem != null && usingItem.getItem() == this)
+ {
+ player.movementInput.moveForward *= 2.5F;
+ player.movementInput.moveStrafe *= 2.5F;
+ }
+ }
+}
+@Override
+public String[] getTraits ()
+{
+return new String[] { "shield", "melee" };
+}
+public static Material[] web = new Material[] { Material.web, Material.cloth, Material.coral, Material.cake };
+public static Material[] none = new Material[0];
+
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return null;
+}
+@Override
+public int getArrowCount(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public void setArrowCount(ItemStack arg0, int arg1) {
+ // TODO Auto-generated method stub
+
+}
+@Override
+public boolean catchArrow(ItemStack arg0, EntityPlayer arg1, IProjectile arg2) {
+ // TODO Auto-generated method stub
+ return false;
+}
+@Override
+public boolean sheatheOnBack(ItemStack item) {
+ // TODO Auto-generated method stub
+ return false;
+}
+@Override
+public void blockAnimation(EntityPlayer arg0, float arg1) {
+ // TODO Auto-generated method stub
+
+}
+@Override
+public boolean canBlock(ItemStack arg0, DamageSource arg1) {
+ // TODO Auto-generated method stub
+ return false;
+}
+@Override
+public int getBashTimer(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public float getBlockAngle(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public float getDamageDecayRate(ItemStack arg0, float arg1) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public float getDamageReduction(ItemStack arg0, DamageSource arg1) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public float getDecayRate(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public float getRecoveryRate(ItemStack arg0) {
+ // TODO Auto-generated method stub
+ return 0;
+}
+@Override
+public Item getAccessoryItem() {
+ // TODO Auto-generated method stub
+ return null;
+}
+@Override
+public String getDefaultFolder() {
+ // TODO Auto-generated method stub
+ return null;
+}
+@Override
+public String getEffectSuffix() {
+ // TODO Auto-generated method stub
+ return null;
+}
+@Override
+public Item getHeadItem() {
+ // TODO Auto-generated method stub
+ return null;
+}
+@Override
+public String getIconSuffix(int arg0) {
+ // TODO Auto-generated method stub
+ return null;
+}
+} \ No newline at end of file
diff --git a/src/main/java/gmail/Lance5057/items/tools/TinkerWrench.java b/src/main/java/gmail/Lance5057/items/tools/TinkerWrench.java
new file mode 100644
index 0000000..bf541a5
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/items/tools/TinkerWrench.java
@@ -0,0 +1,118 @@
+package gmail.Lance5057.items.tools;
+
+import java.util.List;
+
+import buildcraft.api.tools.IToolWrench;
+import mods.battlegear2.api.ISheathed;
+import mods.battlegear2.api.shield.IArrowCatcher;
+import mods.battlegear2.api.shield.IArrowDisplay;
+import mods.battlegear2.api.shield.IShield;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IProjectile;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import tconstruct.library.tools.AbilityHelper;
+import tconstruct.library.tools.HarvestTool;
+import tconstruct.library.tools.Weapon;
+import tconstruct.tools.TinkerTools;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+
+public class TinkerWrench extends Weapon implements IToolWrench
+{
+ int induceDamage = 0;
+
+ public TinkerWrench()
+ {
+ super(0);
+ this.setUnlocalizedName("tinkerwrench");
+ }
+ @Override
+ public Item getHeadItem ()
+ {
+ return TinkerTools.handGuard;
+ }
+ @Override
+ public Item getHandleItem ()
+ {
+ return TinkerTools.toolRod;
+ }
+ @Override
+ public Item getAccessoryItem ()
+ {
+ return TinkerTools.binding;
+ }
+ @Override
+ public int durabilityTypeAccessory ()
+ {
+ return 2;
+ }
+ @Override
+ public float getRepairCost ()
+ {
+ return 1.0f;
+ }
+ @Override
+ public float getDurabilityModifier ()
+ {
+ return 2.5f;
+ }
+ @Override
+ public float getDamageModifier ()
+ {
+ return 0.4f;
+ }
+ @SideOnly(Side.CLIENT)
+ @Override
+ public int getPartAmount ()
+ {
+ return 3;
+ }
+ @Override
+ public String getIconSuffix (int partType)
+ {
+ switch (partType)
+ {
+ case 0:
+ return "_wrench_head";
+ case 1:
+ return "_wrench_head_broken";
+ case 2:
+ return "_wrench_handle";
+ case 3:
+ return "_wrench_binding";
+ default:
+ return "";
+ }
+ }
+ @Override
+ public String getEffectSuffix ()
+ {
+ return "_wrench_effect";
+ }
+ @Override
+ public String getDefaultFolder ()
+ {
+ return "wrench";
+ }
+ @Override
+ public boolean canWrench(EntityPlayer player, int x, int y, int z)
+ {
+ return true;
+ }
+ @Override
+ public void wrenchUsed(EntityPlayer player, int x, int y, int z)
+ {
+ player.swingItem();
+ AbilityHelper.damageTool(player.getCurrentEquippedItem(), 1, player, false);
+ }
+} \ No newline at end of file