Browse Source

Fixed bug with repairing wooden tools.

GJ 13 years ago
parent
commit
6fffe10c32

+ 2 - 1
Changelog.txt

@@ -8,7 +8,8 @@ Key:
   - Removal
 
 Version 1.3.05-dev
- +
+ = Fixed bug with repairing wooden tools
+ ! Changed Tree Feller to account for ability durability loss but not leaves.
 
 Version 1.3.04
  + Added McMMOPlayerRepairEvent for API usage - fires after completion of a repair.

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/HUDmmo.java

@@ -206,7 +206,7 @@ public class HUDmmo {
      *
      * @param sPlayer Player to initialize XP bar for
      */
-    private void initializeXpBarDisplayStandard(SpoutPlayer sPlayer) {
+    public void initializeXpBarDisplayStandard(SpoutPlayer sPlayer) {
         if (LoadProperties.xpbar) {
             xpbar = new GenericTexture();
 

+ 19 - 1
src/main/java/com/gmail/nossr50/skills/Repair.java

@@ -426,6 +426,7 @@ public class Repair {
     public static void repairItem(Player player, ItemStack item, ItemStack repairMaterial) {
         short initialDurability = item.getDurability();
         short newDurability = getRepairAmount(item, player);
+        PlayerInventory inventory = player.getInventory();
 
         McMMOPlayerRepairCheckEvent preEvent = new McMMOPlayerRepairCheckEvent(player, (short) (initialDurability - newDurability), repairMaterial, item);
         Bukkit.getPluginManager().callEvent(preEvent);
@@ -434,7 +435,12 @@ public class Repair {
             return;
         }
 
-        player.getInventory().removeItem(repairMaterial);
+        if (repairMaterial.getType().equals(Material.WOOD)) {
+            removeWood(inventory);
+        }
+        else {
+            inventory.removeItem(repairMaterial);
+        }
 
         /* Handle the enchants */
         if (LoadProperties.mayLoseEnchants && !mcPermissions.getInstance().arcaneBypass(player)) {
@@ -472,4 +478,16 @@ public class Repair {
             PP.togglePlacedAnvil();
         }
     }
+
+    /**
+     * Removes wood from a player's inventory on repair. Needed due to wood having multiple possible data values.
+     *
+     * @param inventory The inventory to remove wood from
+     */
+    private static void removeWood(PlayerInventory inventory) {
+        //TODO: Make this less hackish once there's a better way to do it...
+        int slot = inventory.first(Material.WOOD);
+        ItemStack item = inventory.getItem(slot);
+        item.setAmount(item.getAmount() - 1);
+    }
 }