Fixed bug with repairing wooden tools.

This commit is contained in:
GJ 2012-03-28 15:53:55 -04:00
parent a2d5b97467
commit 6fffe10c32
3 changed files with 22 additions and 3 deletions

View File

@ -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.

View File

@ -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();

View File

@ -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);
}
}