| 
					
				 | 
			
			
				@@ -1,275 +1,275 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-package com.gmail.nossr50.util; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.config.mods.CustomArmorLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.config.mods.CustomBlockLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.config.mods.CustomEntityLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.config.mods.CustomToolLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.datatypes.mods.CustomBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.datatypes.mods.CustomEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.datatypes.mods.CustomTool; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.mcMMO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.gmail.nossr50.skills.repair.repairables.Repairable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.bukkit.Material; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.bukkit.block.BlockState; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.bukkit.configuration.file.YamlConfiguration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.bukkit.entity.Entity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.bukkit.inventory.ItemStack; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class ModManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Repairable> repairables = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Armor Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customBoots       = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customChestplates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customHelmets     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customLeggings    = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Block Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customExcavationBlocks  = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customHerbalismBlocks   = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customMiningBlocks      = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customOres              = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customLogs              = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customLeaves            = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customAbilityBlocks     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final HashMap<Material, CustomBlock> customBlockMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Entity Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final HashMap<String, CustomEntity> customEntityClassMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final HashMap<String, CustomEntity> customEntityTypeMap  = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Tool Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customAxes     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customBows     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customHoes     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customPickaxes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customShovels  = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final List<Material> customSwords   = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private final HashMap<Material, CustomTool> customToolMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void registerCustomArmor(CustomArmorLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customBoots.addAll(config.customBoots); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customChestplates.addAll(config.customChestplates); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customHelmets.addAll(config.customHelmets); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customLeggings.addAll(config.customLeggings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        repairables.addAll(config.repairables); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void registerCustomBlocks(CustomBlockLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customExcavationBlocks.addAll(config.customExcavationBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customHerbalismBlocks.addAll(config.customHerbalismBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customMiningBlocks.addAll(config.customMiningBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customOres.addAll(config.customOres); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customLogs.addAll(config.customLogs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customLeaves.addAll(config.customLeaves); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customAbilityBlocks.addAll(config.customAbilityBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customBlockMap.putAll(config.customBlockMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void registerCustomEntities(CustomEntityLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customEntityClassMap.putAll(config.customEntityClassMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customEntityTypeMap.putAll(config.customEntityTypeMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void registerCustomTools(CustomToolLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customAxes.addAll(config.customAxes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customBows.addAll(config.customBows); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customHoes.addAll(config.customHoes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customPickaxes.addAll(config.customPickaxes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customShovels.addAll(config.customShovels); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customSwords.addAll(config.customSwords); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customToolMap.putAll(config.customToolMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        repairables.addAll(config.repairables); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomBoots(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customBoots.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomChestplate(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customChestplates.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomHelmet(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customHelmets.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomLeggings(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customLeggings.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomAxe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customAxes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomBow(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customBows.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomHoe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customHoes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomPickaxe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customPickaxes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomShovel(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customShovels.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomSword(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customSwords.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomOre(Material data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customOres.contains(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomLog(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customLogs.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomAbilityBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customAbilityBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomExcavationBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customExcavationBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomHerbalismBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customHerbalismBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomMiningBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customMiningBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public CustomBlock getBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return customBlockMap.get(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public CustomBlock getBlock(Material data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return customBlockMap.get(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * Checks to see if an item is a custom tool. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param item Item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return true if the item is a custom tool, false otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomTool(ItemStack item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && item != null && customToolMap.containsKey(item.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * Get the custom tool associated with an item. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param item The item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @return the tool if it exists, null otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public CustomTool getTool(ItemStack item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return item == null ? null : customToolMap.get(item.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public List<Repairable> getLoadedRepairables() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return repairables; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean isCustomEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!mcMMO.p.getGeneralConfig().getEntityModsEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (customEntityTypeMap.containsKey(entity.getType().toString())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return customEntityClassMap.containsKey(((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return customEntityClassMap.containsKey(entity.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public CustomEntity getEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        CustomEntity customEntity = customEntityTypeMap.get(entity.getType().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (customEntity == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                customEntity = customEntityClassMap.get(((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    customEntity = customEntityClassMap.get(entity.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return customEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void addCustomEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!mcMMO.p.getGeneralConfig().getEntityModsEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        File entityFile = new File(mcMMO.p.getDataFolder(), "mods" + File.separator + "entities.default.yml"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        YamlConfiguration entitiesFile = YamlConfiguration.loadConfiguration(entityFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String entityName = entity.getType().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String sanitizedEntityName = entityName.replace(".", "_"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (entitiesFile.getKeys(false).contains(sanitizedEntityName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".XP_Multiplier", 1.0D); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".Tameable", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".Taming_XP", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".CanBeSummoned", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".COTW_Material", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".COTW_Material_Data", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        entitiesFile.set(sanitizedEntityName + ".COTW_Material_Amount", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String className = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            className = ((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                className = entity.getClass().getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        CustomEntity customEntity = new CustomEntity(1.0D, false, 0, false, null, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customEntityTypeMap.put(entityName, customEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        customEntityClassMap.put(className, customEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            entitiesFile.save(entityFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LogUtils.debug(mcMMO.p.getLogger(), entity.getType().toString() + " was added to the custom entities file!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//package com.gmail.nossr50.util; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.config.mods.CustomArmorLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.config.mods.CustomBlockLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.config.mods.CustomEntityLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.config.mods.CustomToolLegacyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.datatypes.mods.CustomBlock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.datatypes.mods.CustomEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.datatypes.mods.CustomTool; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.mcMMO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import com.gmail.nossr50.skills.repair.repairables.Repairable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.bukkit.Material; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.bukkit.block.BlockState; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.bukkit.configuration.file.YamlConfiguration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.bukkit.entity.Entity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.bukkit.inventory.ItemStack; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//public class ModManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Repairable> repairables = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    // Armor Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customBoots       = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customChestplates = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customHelmets     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customLeggings    = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    // Block Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customExcavationBlocks  = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customHerbalismBlocks   = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customMiningBlocks      = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customOres              = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customLogs              = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customLeaves            = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customAbilityBlocks     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final HashMap<Material, CustomBlock> customBlockMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    // Entity Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final HashMap<String, CustomEntity> customEntityClassMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final HashMap<String, CustomEntity> customEntityTypeMap  = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    // Tool Mods 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customAxes     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customBows     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customHoes     = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customPickaxes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customShovels  = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final List<Material> customSwords   = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    private final HashMap<Material, CustomTool> customToolMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void registerCustomArmor(CustomArmorLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customBoots.addAll(config.customBoots); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customChestplates.addAll(config.customChestplates); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customHelmets.addAll(config.customHelmets); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customLeggings.addAll(config.customLeggings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        repairables.addAll(config.repairables); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void registerCustomBlocks(CustomBlockLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customExcavationBlocks.addAll(config.customExcavationBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customHerbalismBlocks.addAll(config.customHerbalismBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customMiningBlocks.addAll(config.customMiningBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customOres.addAll(config.customOres); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customLogs.addAll(config.customLogs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customLeaves.addAll(config.customLeaves); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customAbilityBlocks.addAll(config.customAbilityBlocks); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customBlockMap.putAll(config.customBlockMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void registerCustomEntities(CustomEntityLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customEntityClassMap.putAll(config.customEntityClassMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customEntityTypeMap.putAll(config.customEntityTypeMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void registerCustomTools(CustomToolLegacyConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customAxes.addAll(config.customAxes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customBows.addAll(config.customBows); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customHoes.addAll(config.customHoes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customPickaxes.addAll(config.customPickaxes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customShovels.addAll(config.customShovels); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customSwords.addAll(config.customSwords); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customToolMap.putAll(config.customToolMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        repairables.addAll(config.repairables); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomBoots(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customBoots.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomChestplate(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customChestplates.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomHelmet(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customHelmets.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomLeggings(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getArmorModsEnabled() && customLeggings.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomAxe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customAxes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomBow(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customBows.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomHoe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customHoes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomPickaxe(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customPickaxes.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomShovel(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customShovels.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomSword(Material material) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && customSwords.contains(material); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomOre(Material data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customOres.contains(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomLog(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customLogs.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomAbilityBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customAbilityBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomExcavationBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customExcavationBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomHerbalismBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customHerbalismBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomMiningBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getBlockModsEnabled() && customMiningBlocks.contains(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public CustomBlock getBlock(BlockState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return customBlockMap.get(state.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public CustomBlock getBlock(Material data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return customBlockMap.get(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * Checks to see if an item is a custom tool. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * @param item Item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * @return true if the item is a custom tool, false otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomTool(ItemStack item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return mcMMO.p.getGeneralConfig().getToolModsEnabled() && item != null && customToolMap.containsKey(item.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * Get the custom tool associated with an item. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * @param item The item to check 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     * @return the tool if it exists, null otherwise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public CustomTool getTool(ItemStack item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return item == null ? null : customToolMap.get(item.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public List<Repairable> getLoadedRepairables() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return repairables; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public boolean isCustomEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (!mcMMO.p.getGeneralConfig().getEntityModsEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (customEntityTypeMap.containsKey(entity.getType().toString())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return customEntityClassMap.containsKey(((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                return customEntityClassMap.containsKey(entity.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public CustomEntity getEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        CustomEntity customEntity = customEntityTypeMap.get(entity.getType().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (customEntity == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                customEntity = customEntityClassMap.get(((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    customEntity = customEntityClassMap.get(entity.getClass().getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        return customEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void addCustomEntity(Entity entity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (!mcMMO.p.getGeneralConfig().getEntityModsEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        File entityFile = new File(mcMMO.p.getDataFolder(), "mods" + File.separator + "entities.default.yml"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        YamlConfiguration entitiesFile = YamlConfiguration.loadConfiguration(entityFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String entityName = entity.getType().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String sanitizedEntityName = entityName.replace(".", "_"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (entitiesFile.getKeys(false).contains(sanitizedEntityName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".XP_Multiplier", 1.0D); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".Tameable", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".Taming_XP", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".CanBeSummoned", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".COTW_Material", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".COTW_Material_Data", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        entitiesFile.set(sanitizedEntityName + ".COTW_Material_Amount", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        String className = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            className = ((Class<?>) entity.getClass().getDeclaredField("entityClass").get(entity)).getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (e instanceof NoSuchFieldException || e instanceof IllegalArgumentException || e instanceof IllegalAccessException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                className = entity.getClass().getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        CustomEntity customEntity = new CustomEntity(1.0D, false, 0, false, null, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customEntityTypeMap.put(entityName, customEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        customEntityClassMap.put(className, customEntity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            entitiesFile.save(entityFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            LogUtils.debug(mcMMO.p.getLogger(), entity.getType().toString() + " was added to the custom entities file!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//} 
			 |