瀏覽代碼

Account for Unbreaking enchantment when using abilities

TfT_02 11 年之前
父節點
當前提交
c31f5b5782

+ 1 - 0
Changelog.txt

@@ -17,6 +17,7 @@ Version 1.4.08-dev
  = Fixed IllegalArgumentException caused by an empty Fishing treasure category
  = Fixed bug with Salvage not reading the config value for the anvil material.
  = Fixed exploit where you could receive smelting XP for improper items
+ = Fixed bug where the Unbreaking enchantment was ignored when using "Super Breaker" or "Giga Drill Breaker"
 
 Version 1.4.07
  + Added XP boost to Acrobatics when wearing Boots of Feather Falling

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java

@@ -55,6 +55,6 @@ public class ExcavationManager extends SkillManager {
         excavationBlockCheck(blockState);
         excavationBlockCheck(blockState);
 
-        SkillUtils.handleDurabilityChange(getPlayer().getItemInHand(), Config.getInstance().getAbilityToolDamage());
+        SkillUtils.handleDurabilityChange(getPlayer().getItemInHand(), Config.getInstance().getAbilityToolDamage(), true);
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java

@@ -67,7 +67,7 @@ public class MiningManager extends SkillManager {
         Material material = blockState.getType();
 
         if (mcMMOPlayer.getAbilityMode(skill.getAbility())) {
-            SkillUtils.handleDurabilityChange(getPlayer().getItemInHand(), Config.getInstance().getAbilityToolDamage());
+            SkillUtils.handleDurabilityChange(getPlayer().getItemInHand(), Config.getInstance().getAbilityToolDamage(), true);
         }
 
         if ((ModUtils.isCustomMiningBlock(blockState) && !ModUtils.getCustomBlock(blockState).isDoubleDropEnabled()) || material != Material.GLOWING_REDSTONE_ORE && !Config.getInstance().getDoubleDropsEnabled(skill, material)) {

+ 9 - 0
src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java

@@ -167,6 +167,15 @@ public class SkillUtils {
         }
     }
 
+    public static void handleDurabilityChange(ItemStack itemStack, int durabilityModifier, boolean handleUnbreaking) {
+        if (handleUnbreaking) {
+            double modifier = 1 / (itemStack.getEnchantmentLevel(Enchantment.DURABILITY) + 1);
+            durabilityModifier = (int) (durabilityModifier * modifier);
+        }
+
+        handleDurabilityChange(itemStack, durabilityModifier);
+    }
+
     /**
      * Modify the durability of an ItemStack.
      *