From 527934d277cceab18fac3483f658fd3e8a92fbc8 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Wed, 30 Jul 2014 13:31:13 +0200 Subject: [PATCH] Bugfix: It was possible to add more than to redstone/lapis/... modifiers if they were exactly at a lvlup threshold --- src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java | 3 +++ src/main/java/tconstruct/modifiers/tools/ModAttack.java | 3 +++ src/main/java/tconstruct/modifiers/tools/ModBlaze.java | 3 +++ src/main/java/tconstruct/modifiers/tools/ModLapis.java | 3 +++ src/main/java/tconstruct/modifiers/tools/ModPiston.java | 3 +++ src/main/java/tconstruct/modifiers/tools/ModRedstone.java | 5 ++++- src/main/java/tconstruct/modifiers/tools/ModSmite.java | 3 +++ 7 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java b/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java index b1108a7987b..7e1e0c792b3 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java +++ b/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java @@ -24,6 +24,9 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; + if(matchingAmount(input) > max) + return false; + int keyPair[] = tags.getIntArray(key); if (keyPair[0] + matchingAmount(input) <= keyPair[1]) return true; diff --git a/src/main/java/tconstruct/modifiers/tools/ModAttack.java b/src/main/java/tconstruct/modifiers/tools/ModAttack.java index d3751d94d2d..b2caff6e93a 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModAttack.java +++ b/src/main/java/tconstruct/modifiers/tools/ModAttack.java @@ -45,6 +45,9 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag(toolItem.getBaseTagName()); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModBlaze.java b/src/main/java/tconstruct/modifiers/tools/ModBlaze.java index 03f1d09a6ff..b1b390a12f8 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModBlaze.java +++ b/src/main/java/tconstruct/modifiers/tools/ModBlaze.java @@ -28,6 +28,9 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModLapis.java b/src/main/java/tconstruct/modifiers/tools/ModLapis.java index 175a2cd4f14..a959907a706 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModLapis.java +++ b/src/main/java/tconstruct/modifiers/tools/ModLapis.java @@ -33,6 +33,9 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (tags.getBoolean("Silk Touch")) diff --git a/src/main/java/tconstruct/modifiers/tools/ModPiston.java b/src/main/java/tconstruct/modifiers/tools/ModPiston.java index 799b88bed9b..ce4adcf73df 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModPiston.java +++ b/src/main/java/tconstruct/modifiers/tools/ModPiston.java @@ -29,6 +29,9 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModRedstone.java b/src/main/java/tconstruct/modifiers/tools/ModRedstone.java index 0abdc61461e..481bb570d8d 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModRedstone.java +++ b/src/main/java/tconstruct/modifiers/tools/ModRedstone.java @@ -28,14 +28,17 @@ protected boolean canModify (ItemStack tool, ItemStack[] input) if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; int keyPair[] = tags.getIntArray(key); + if (keyPair[0] + matchingAmount(input) <= keyPair[1]) return true; - else if (keyPair[0] == keyPair[1]) return tags.getInteger("Modifiers") > 0; } diff --git a/src/main/java/tconstruct/modifiers/tools/ModSmite.java b/src/main/java/tconstruct/modifiers/tools/ModSmite.java index aa733b24f8d..9d6c829fdcc 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModSmite.java +++ b/src/main/java/tconstruct/modifiers/tools/ModSmite.java @@ -19,6 +19,9 @@ public ModSmite(String type, int effect, ItemStack[] items, int[] values) @Override protected boolean canModify (ItemStack tool, ItemStack[] input) { + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max;