diff --git a/resources/assets/tinker/textures/items/javelin/_javelin_head_broken.png b/resources/assets/tinker/textures/items/javelin/_javelin_head_broken.png new file mode 100644 index 00000000..116f7485 Binary files /dev/null and b/resources/assets/tinker/textures/items/javelin/_javelin_head_broken.png differ diff --git a/src/main/java/tconstruct/weaponry/TinkerWeaponry.java b/src/main/java/tconstruct/weaponry/TinkerWeaponry.java index ebd34087..974d5c3e 100644 --- a/src/main/java/tconstruct/weaponry/TinkerWeaponry.java +++ b/src/main/java/tconstruct/weaponry/TinkerWeaponry.java @@ -106,6 +106,8 @@ public class TinkerWeaponry { ItemStack redstoneBlock = new ItemStack(Blocks.redstone_block); ModifyBuilder.registerModifier(new ModWindup(2, new ItemStack[] { redstoneItem, redstoneBlock }, new int[] { 1, 9 })); ModifyBuilder.registerModifier(new ModAmmoRestock()); + + TConstructRegistry.registerActiveToolMod(new WeaponryActiveToolMod()); } @Handler diff --git a/src/main/java/tconstruct/weaponry/WeaponryActiveToolMod.java b/src/main/java/tconstruct/weaponry/WeaponryActiveToolMod.java new file mode 100644 index 00000000..90d72532 --- /dev/null +++ b/src/main/java/tconstruct/weaponry/WeaponryActiveToolMod.java @@ -0,0 +1,35 @@ +package tconstruct.weaponry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import tconstruct.library.ActiveToolMod; +import tconstruct.library.weaponry.IAmmo; + +public class WeaponryActiveToolMod extends ActiveToolMod { + @Override + public boolean damageTool(ItemStack stack, int damage, EntityLivingBase entity) { + if(stack.getItem() == TinkerWeaponry.javelin && stack.hasTagCompound()) { + NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + IAmmo ammo =(IAmmo)stack.getItem(); + if(tags.getInteger("Damage") == 0) + { + int rem = ammo.consumeAmmo(1, stack); + if(rem > 0) + return true; + } + else if(ammo.getAmmoCount(stack) > 0) + { + int d = tags.getInteger("Damage") + damage; + int max = tags.getInteger("TotalDurability"); + if(d > max) + { + tags.setInteger("Damage", 0); + return true; + } + } + } + + return false; + } +} diff --git a/src/main/java/tconstruct/weaponry/weapons/Javelin.java b/src/main/java/tconstruct/weaponry/weapons/Javelin.java index 448e596f..92e8de56 100644 --- a/src/main/java/tconstruct/weaponry/weapons/Javelin.java +++ b/src/main/java/tconstruct/weaponry/weapons/Javelin.java @@ -123,7 +123,7 @@ public class Javelin extends AmmoWeapon { case 0: return "_javelin_head"; case 1: - return ""; // no broken, since it runs out of ammo + return "_javelin_head_broken"; // no broken, since it runs out of ammo case 2: return "_javelin_handle"; case 3: @@ -145,7 +145,12 @@ public class Javelin extends AmmoWeapon { @Override public float getAmmoModifier() { - return 0.02f; + return 0.2f; + } + + @Override + public float getDurabilityModifier() { + return 0.1f; } @Override