| 
					
				 | 
			
			
				@@ -19,97 +19,97 @@ import com.gmail.nossr50.util.Users; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class Salvage { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static Config configInstance = Config.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static Permissions permInstance = Permissions.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static Config configInstance = Config.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static Permissions permInstance = Permissions.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static void handleSalvage(final Player player, final Location location, final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!permInstance.salvage(player) || !configInstance.getSalvageEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void handleSalvage(final Player player, final Location location, final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!permInstance.salvage(player) || !configInstance.getSalvageEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		final PlayerProfile profile = Users.getProfile(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		final int skillLevel = profile.getSkillLevel(SkillType.REPAIR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		final int unlockLevel = configInstance.getSalvageUnlockLevel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final PlayerProfile profile = Users.getProfile(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final int skillLevel = profile.getSkillLevel(SkillType.REPAIR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final int unlockLevel = configInstance.getSalvageUnlockLevel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (skillLevel >= unlockLevel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			final World world = player.getWorld(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			final float currentdura = inHand.getDurability(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (skillLevel >= unlockLevel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            final World world = player.getWorld(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            final float currentdura = inHand.getDurability(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (currentdura == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				final int salvagedAmount = getSalvagedAmount(inHand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				final int itemID = getSalvagedItemID(inHand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (currentdura == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                final int salvagedAmount = getSalvagedAmount(inHand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                final int itemID = getSalvagedItemID(inHand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				player.setItemInHand(new ItemStack(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				location.setY(location.getY() + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				world.dropItem(location, new ItemStack(itemID, salvagedAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                player.setItemInHand(new ItemStack(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                location.setY(location.getY() + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                world.dropItem(location, new ItemStack(itemID, salvagedAmount)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 player.sendMessage(LocaleLoader.getString("Repair.Skills.SalvageSuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 player.sendMessage(LocaleLoader.getString("Repair.Skills.NotFullDurability")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             player.sendMessage(LocaleLoader.getString("Repair.Skills.AdeptSalvage")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Handles notifications for placing an anvil. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param player The player placing the anvil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param anvilID The item ID of the anvil block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static void placedAnvilCheck(final Player player, final int anvilID) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		final PlayerProfile profile = Users.getProfile(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Handles notifications for placing an anvil. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param player The player placing the anvil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param anvilID The item ID of the anvil block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void placedAnvilCheck(final Player player, final int anvilID) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final PlayerProfile profile = Users.getProfile(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!profile.getPlacedSalvageAnvil()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (mcMMO.spoutEnabled) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				final SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!profile.getPlacedSalvageAnvil()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (mcMMO.spoutEnabled) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                final SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (spoutPlayer.isSpoutCraftEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					spoutPlayer.sendNotification("[mcMMO] Anvil Placed", "Right click to salvage!", Material.getMaterial(anvilID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (spoutPlayer.isSpoutCraftEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    spoutPlayer.sendNotification("[mcMMO] Anvil Placed", "Right click to salvage!", Material.getMaterial(anvilID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 player.sendMessage(LocaleLoader.getString("Repair.Listener.Anvil2")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			profile.togglePlacedSalvageAnvil(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            profile.togglePlacedSalvageAnvil(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static int getSalvagedItemID(final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		int salvagedItem = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (ItemChecks.isDiamondTool(inHand) || ItemChecks.isDiamondArmor(inHand)) salvagedItem = 264; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isGoldTool(inHand) || ItemChecks.isGoldArmor(inHand)) salvagedItem = 266; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isIronTool(inHand) || ItemChecks.isIronArmor(inHand)) salvagedItem = 265; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isStoneTool(inHand)) salvagedItem = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isWoodTool(inHand)) salvagedItem = 5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if ( ItemChecks.isLeatherArmor(inHand)) salvagedItem = 334; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return salvagedItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static int getSalvagedItemID(final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int salvagedItem = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ItemChecks.isDiamondTool(inHand) || ItemChecks.isDiamondArmor(inHand)) salvagedItem = 264; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isGoldTool(inHand) || ItemChecks.isGoldArmor(inHand)) salvagedItem = 266; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isIronTool(inHand) || ItemChecks.isIronArmor(inHand)) salvagedItem = 265; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isStoneTool(inHand)) salvagedItem = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isWoodTool(inHand)) salvagedItem = 5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if ( ItemChecks.isLeatherArmor(inHand)) salvagedItem = 334; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return salvagedItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static int getSalvagedAmount(final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		int salvagedAmount = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (ItemChecks.isPickaxe(inHand) || ItemChecks.isAxe(inHand)) salvagedAmount = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isShovel(inHand)) salvagedAmount = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isSword(inHand) || ItemChecks.isHoe(inHand)) salvagedAmount = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isHelmet(inHand)) salvagedAmount = 5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isChestplate(inHand)) salvagedAmount = 8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isPants(inHand)) salvagedAmount = 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else if (ItemChecks.isBoots(inHand)) salvagedAmount = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return salvagedAmount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Checks if the item is salvageable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param is Item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @return true if the item is salvageable, false otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public static boolean isSalvageable(final ItemStack is) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (configInstance.getSalvageTools() && ItemChecks.isTool(is)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (configInstance.getSalvageArmor() && ItemChecks.isArmor(is)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static int getSalvagedAmount(final ItemStack inHand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int salvagedAmount = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ItemChecks.isPickaxe(inHand) || ItemChecks.isAxe(inHand)) salvagedAmount = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isShovel(inHand)) salvagedAmount = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isSword(inHand) || ItemChecks.isHoe(inHand)) salvagedAmount = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isHelmet(inHand)) salvagedAmount = 5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isChestplate(inHand)) salvagedAmount = 8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isPants(inHand)) salvagedAmount = 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if (ItemChecks.isBoots(inHand)) salvagedAmount = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return salvagedAmount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Checks if the item is salvageable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param is Item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return true if the item is salvageable, false otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static boolean isSalvageable(final ItemStack is) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (configInstance.getSalvageTools() && ItemChecks.isTool(is)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (configInstance.getSalvageArmor() && ItemChecks.isArmor(is)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |