|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  package com.gmail.nossr50.listeners;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import org.bukkit.ChatColor;
 | 
	
		
			
				|  |  |  import org.bukkit.GameMode;
 | 
	
		
			
				|  |  |  import org.bukkit.Material;
 | 
	
		
			
				|  |  |  import org.bukkit.Sound;
 | 
	
	
		
			
				|  | @@ -41,6 +42,7 @@ import com.gmail.nossr50.skills.fishing.FishingManager;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.skills.herbalism.HerbalismManager;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.skills.mining.MiningManager;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.skills.repair.Repair;
 | 
	
		
			
				|  |  | +import com.gmail.nossr50.skills.repair.RepairManager;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.skills.taming.TamingManager;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.skills.unarmed.Unarmed;
 | 
	
		
			
				|  |  |  import com.gmail.nossr50.util.BlockUtils;
 | 
	
	
		
			
				|  | @@ -306,6 +308,9 @@ public class PlayerListener implements Listener {
 | 
	
		
			
				|  |  |      @EventHandler(priority = EventPriority.LOWEST)
 | 
	
		
			
				|  |  |      public void onPlayerInteractLowest(PlayerInteractEvent event) {
 | 
	
		
			
				|  |  |          Player player = event.getPlayer();
 | 
	
		
			
				|  |  | +        Block block = event.getClickedBlock();
 | 
	
		
			
				|  |  | +        int blockID = block.getTypeId();
 | 
	
		
			
				|  |  | +        ItemStack heldItem = player.getItemInHand();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -315,21 +320,27 @@ public class PlayerListener implements Listener {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          switch (event.getAction()) {
 | 
	
		
			
				|  |  |              case RIGHT_CLICK_BLOCK:
 | 
	
		
			
				|  |  | -                Block block = event.getClickedBlock();
 | 
	
		
			
				|  |  | -                int blockID = block.getTypeId();
 | 
	
		
			
				|  |  | -                ItemStack heldItem = player.getItemInHand();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  /* REPAIR CHECKS */
 | 
	
		
			
				|  |  |                  if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
 | 
	
		
			
				|  |  | -                    UserManager.getPlayer(player).getRepairManager().handleRepair(heldItem);
 | 
	
		
			
				|  |  | +                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
 | 
	
		
			
				|  |  |                      event.setCancelled(true);
 | 
	
		
			
				|  |  | -                    player.updateInventory();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // Make sure the player knows what he's doing when trying to repair an enchanted item
 | 
	
		
			
				|  |  | +                    if (!(heldItem.getEnchantments().size() > 0) || repairManager.checkConfirmation(blockID, true)) {
 | 
	
		
			
				|  |  | +                        repairManager.handleRepair(heldItem);
 | 
	
		
			
				|  |  | +                        player.updateInventory();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  /* SALVAGE CHECKS */
 | 
	
		
			
				|  |  |                  else if (blockID == Repair.salvageAnvilId && Permissions.salvage(player) && Repair.isSalvageable(heldItem)) {
 | 
	
		
			
				|  |  | -                    UserManager.getPlayer(player).getRepairManager().handleSalvage(block.getLocation(), heldItem);
 | 
	
		
			
				|  |  | +                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
 | 
	
		
			
				|  |  |                      event.setCancelled(true);
 | 
	
		
			
				|  |  | -                    player.updateInventory();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // Make sure the player knows what he's doing when trying to salvage an enchanted item
 | 
	
		
			
				|  |  | +                    if (!(heldItem.getEnchantments().size() > 0) || repairManager.checkConfirmation(blockID, true)) {
 | 
	
		
			
				|  |  | +                        repairManager.handleSalvage(block.getLocation(), heldItem);
 | 
	
		
			
				|  |  | +                        player.updateInventory();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  /* BLAST MINING CHECK */
 | 
	
		
			
				|  |  |                  else if (miningManager.canDetonate()) {
 | 
	
	
		
			
				|  | @@ -343,6 +354,20 @@ public class PlayerListener implements Listener {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            case LEFT_CLICK_BLOCK:
 | 
	
		
			
				|  |  | +                /* REPAIR CHECKS */
 | 
	
		
			
				|  |  | +                if (blockID == Repair.repairAnvilId && Permissions.skillEnabled(player, SkillType.REPAIR) && mcMMO.getRepairableManager().isRepairable(heldItem)) {
 | 
	
		
			
				|  |  | +                    RepairManager repairManager = UserManager.getPlayer(player).getRepairManager();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // Cancel repairing an enchanted item
 | 
	
		
			
				|  |  | +                    if (repairManager.checkConfirmation(blockID, false) && Config.getInstance().getRepairConfirmRequired()) {
 | 
	
		
			
				|  |  | +                        UserManager.getPlayer(player).setLastAnvilUse(Repair.repairAnvilId, 0);
 | 
	
		
			
				|  |  | +                        player.sendMessage(ChatColor.RED + "Repair cancelled!"); //TODO Locale!
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              case RIGHT_CLICK_AIR:
 | 
	
		
			
				|  |  |                  /* BLAST MINING CHECK */
 | 
	
		
			
				|  |  |                  if (miningManager.canDetonate()) {
 |