diff --git a/src/main/java/tconstruct/library/crafting/ToolBuilder.java b/src/main/java/tconstruct/library/crafting/ToolBuilder.java index eb82b6ac..bd791498 100644 --- a/src/main/java/tconstruct/library/crafting/ToolBuilder.java +++ b/src/main/java/tconstruct/library/crafting/ToolBuilder.java @@ -307,15 +307,7 @@ public class ToolBuilder compound.getCompoundTag("InfiTool").setInteger("Unbreaking", buildReinforced(headMat, handleMat, accessoryMat, extraMat)); compound.getCompoundTag("InfiTool").setFloat("Shoddy", buildShoddy(headMat, handleMat, accessoryMat, extraMat)); - int modifiers = item.getModifierAmount(); - if (accessory == -1) - modifiers += (head == 9 ? 2 : 0); - else - modifiers += (head == 9 ? 1 : 0) + (accessory == 9 ? 1 : 0); - modifiers += +(handle == 9 ? 1 : 0); - modifiers += +(extra == 9 ? 1 : 0); - - compound.getCompoundTag("InfiTool").setInteger("Modifiers", modifiers); + compound.getCompoundTag("InfiTool").setInteger("Modifiers", item.getModifierAmount()); if (name != null && !name.equals("")) { diff --git a/src/main/java/tconstruct/tools/TinkerToolEvents.java b/src/main/java/tconstruct/tools/TinkerToolEvents.java index ee4f8d48..391a647f 100644 --- a/src/main/java/tconstruct/tools/TinkerToolEvents.java +++ b/src/main/java/tconstruct/tools/TinkerToolEvents.java @@ -89,28 +89,9 @@ public class TinkerToolEvents } } - int thaum = 0; - if (toolTag.getInteger("Head") == 31) - thaum++; - if (toolTag.getInteger("Handle") == 31) - thaum++; - if (toolTag.getInteger("Accessory") == 31) - thaum++; - if (toolTag.getInteger("Extra") == 31) - thaum++; - - if ((thaum >= 3) || (!toolTag.hasKey("Accessory") && thaum >= 2)) - { - int modifiers = toolTag.getInteger("Modifiers"); - modifiers += 2; - toolTag.setInteger("Modifiers", modifiers); - } - else if (thaum >= 1) - { - int modifiers = toolTag.getInteger("Modifiers"); - modifiers += 1; - toolTag.setInteger("Modifiers", modifiers); - } + // bonus modifiers + handlePaper(toolTag, event.tool); + handleThaumium(toolTag, event.tool); if (event.tool == TinkerTools.shortbow) { @@ -171,6 +152,50 @@ public class TinkerToolEvents } } + private void handlePaper(NBTTagCompound toolTag, ToolCore tool) + { + int modifiers = toolTag.getInteger("Modifiers"); + if (toolTag.getInteger("Head") == TinkerTools.MaterialID.Paper) + modifiers++; + if (toolTag.getInteger("Handle") == TinkerTools.MaterialID.Paper) + modifiers++; + if (toolTag.getInteger("Accessory") == TinkerTools.MaterialID.Paper) + modifiers++; + if (toolTag.getInteger("Extra") == TinkerTools.MaterialID.Paper) + modifiers++; + + // 2 part tools gain 2 modifiers for the head + if(tool.getPartAmount() == 2 && toolTag.getInteger("Head") == TinkerTools.MaterialID.Paper) + modifiers++; + + toolTag.setInteger("Modifiers", modifiers); + } + + private void handleThaumium(NBTTagCompound toolTag, ToolCore tool) + { + // count thaumic parts + int thaum = 0; + if (toolTag.getInteger("Head") == TinkerTools.MaterialID.Thaumium) + thaum++; + if (toolTag.getInteger("Handle") == TinkerTools.MaterialID.Thaumium) + thaum++; + if (toolTag.getInteger("Accessory") == TinkerTools.MaterialID.Thaumium) + thaum++; + if (toolTag.getInteger("Extra") == TinkerTools.MaterialID.Thaumium) + thaum++; + + // each part gives 0.5 modifiers, rounded up + int bonusModifiers = (int) Math.ceil((double)thaum/2d); + + // 2-part tools get 1 modifier per part + if(tool.getPartAmount() == 2) + bonusModifiers = thaum; + + int modifiers = toolTag.getInteger("Modifiers"); + modifiers += bonusModifiers; + toolTag.setInteger("Modifiers", modifiers); + } + private boolean allowCrafting (int head, int handle, int accessory) { int[] nonMetals = { 0, 1, 3, 4, 5, 6, 7, 8, 9, 17 };