package com.gmail.nossr50.util; import org.bukkit.Material; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.HashSet; import java.util.Locale; /** * Stores hash tables for item and block names * This allows for better support across multiple versions of Minecraft */ public class MaterialMapStore { private final @NotNull HashSet abilityBlackList; private final @NotNull HashSet toolBlackList; private final @NotNull HashSet mossyWhiteList; private final @NotNull HashSet treeFellerDestructibleWhiteList; private final @NotNull HashSet herbalismAbilityBlackList; private final @NotNull HashSet blockCrackerWhiteList; private final @NotNull HashSet canMakeShroomyWhiteList; private final @NotNull HashSet multiBlockPlant; private final @NotNull HashSet multiBlockHangingPlant; private final @NotNull HashSet foodItemWhiteList; private final @NotNull HashSet glassBlocks; private final @NotNull HashSet netheriteArmor; private final @NotNull HashSet netheriteTools; private final @NotNull HashSet woodTools; private final @NotNull HashSet stoneTools; private final @NotNull HashSet leatherArmor; private final @NotNull HashSet ironArmor; private final @NotNull HashSet ironTools; private final @NotNull HashSet stringTools; private final @NotNull HashSet goldArmor; private final @NotNull HashSet goldTools; private final @NotNull HashSet chainmailArmor; private final @NotNull HashSet diamondArmor; private final @NotNull HashSet diamondTools; private final @NotNull HashSet armors; private final @NotNull HashSet swords; private final @NotNull HashSet axes; private final @NotNull HashSet hoes; private final @NotNull HashSet shovels; private final @NotNull HashSet pickAxes; private final @NotNull HashSet tridents; private final @NotNull HashSet bows; private final @NotNull HashSet crossbows; private final @NotNull HashSet tools; private final @NotNull HashSet enchantables; private final @NotNull HashSet ores; private final @NotNull HashSet intendedToolPickAxe; private final @NotNull HashSet intendedToolShovel; private final @NotNull HashMap tierValue; public MaterialMapStore() { abilityBlackList = new HashSet<>(); toolBlackList = new HashSet<>(); mossyWhiteList = new HashSet<>(); treeFellerDestructibleWhiteList = new HashSet<>(); herbalismAbilityBlackList = new HashSet<>(); blockCrackerWhiteList = new HashSet<>(); canMakeShroomyWhiteList = new HashSet<>(); multiBlockPlant = new HashSet<>(); multiBlockHangingPlant = new HashSet<>(); foodItemWhiteList = new HashSet<>(); glassBlocks = new HashSet<>(); leatherArmor = new HashSet<>(); ironArmor = new HashSet<>(); chainmailArmor = new HashSet<>(); goldArmor = new HashSet<>(); diamondArmor = new HashSet<>(); netheriteArmor = new HashSet<>(); armors = new HashSet<>(); woodTools = new HashSet<>(); stoneTools = new HashSet<>(); ironTools = new HashSet<>(); goldTools = new HashSet<>(); diamondTools = new HashSet<>(); netheriteTools = new HashSet<>(); bows = new HashSet<>(); crossbows = new HashSet<>(); stringTools = new HashSet<>(); tools = new HashSet<>(); swords = new HashSet<>(); axes = new HashSet<>(); pickAxes = new HashSet<>(); shovels = new HashSet<>(); hoes = new HashSet<>(); tridents = new HashSet<>(); enchantables = new HashSet<>(); ores = new HashSet<>(); intendedToolPickAxe = new HashSet<>(); intendedToolShovel = new HashSet<>(); tierValue = new HashMap<>(); fillVanillaMaterialRegisters(); } private void fillVanillaMaterialRegisters() { //The order matters fillAbilityBlackList(); fillToolBlackList(); fillMossyWhiteList(); fillTreeFellerDestructibleWhiteList(); fillHerbalismAbilityBlackList(); fillBlockCrackerWhiteList(); fillShroomyWhiteList(); fillMultiBlockPlantSet(); fillMultiBlockHangingPlantSet(); fillFoodWhiteList(); fillGlassBlockWhiteList(); fillArmors(); fillTools(); fillEnchantables(); fillOres(); fillIntendedTools(); fillTierMap(); } public boolean isMultiBlockPlant(@NotNull Material material) { return multiBlockPlant.contains(material.getKey().getKey()); } public boolean isMultiBlockHangingPlant(@NotNull Material material) { return multiBlockHangingPlant.contains(material.getKey().getKey()); } public boolean isAbilityActivationBlackListed(@NotNull Material material) { return abilityBlackList.contains(material.getKey().getKey()); } public boolean isToolActivationBlackListed(@NotNull Material material) { return toolBlackList.contains(material.getKey().getKey()); } public boolean isMossyWhiteListed(@NotNull Material material) { return mossyWhiteList.contains(material.getKey().getKey()); } public boolean isTreeFellerDestructible(@NotNull Material material) { return treeFellerDestructibleWhiteList.contains(material.getKey().getKey()); } public boolean isHerbalismAbilityWhiteListed(@NotNull Material material) { return herbalismAbilityBlackList.contains(material.getKey().getKey()); } public boolean isBlockCrackerWhiteListed(@NotNull Material material) { return blockCrackerWhiteList.contains(material.getKey().getKey()); } public boolean isShroomyWhiteListed(@NotNull Material material) { return canMakeShroomyWhiteList.contains(material.getKey().getKey()); } private void fillTierMap() { for(String id : leatherArmor) { tierValue.put(id, 1); } for(String id : ironArmor) { tierValue.put(id, 2); } for(String id : goldArmor) { tierValue.put(id, 3); } for(String id : chainmailArmor) { tierValue.put(id, 3); } for(String id : diamondArmor) { tierValue.put(id, 6); } for(String id : netheriteArmor) { tierValue.put(id, 12); } } private void fillOres() { ores.add("coal_ore"); ores.add("diamond_ore"); ores.add("nether_quartz_ore"); ores.add("quartz_ore"); //Pre 1.13 ores.add("gold_ore"); ores.add("iron_ore"); ores.add("lapis_ore"); ores.add("lapis_lazuli_ore"); ores.add("redstone_ore"); ores.add("emerald_ore"); ores.add("ancient_debris"); ores.add("nether_gold_ore"); ores.add("gilded_blackstone"); //1.17 Mining Ore Blocks ores.add("deepslate_redstone_ore"); ores.add("deepslate_copper_ore"); ores.add("deepslate_coal_ore"); ores.add("deepslate_diamond_ore"); ores.add("deepslate_emerald_ore"); ores.add("deepslate_iron_ore"); ores.add("deepslate_gold_ore"); // ores.add("deepslate_lapis_lazuli_ore"); ores.add("deepslate_lapis_ore"); ores.add("copper_ore"); } private void fillIntendedTools() { intendedToolPickAxe.addAll(ores); intendedToolPickAxe.add("lapis_lazuli_ore"); intendedToolPickAxe.add("packed_mud"); intendedToolPickAxe.add("mud_bricks"); intendedToolPickAxe.add("reinforced_deepslate"); intendedToolPickAxe.add("ice"); intendedToolPickAxe.add("packed_ice"); intendedToolPickAxe.add("blue_ice"); intendedToolPickAxe.add("frosted_ice"); intendedToolPickAxe.add("anvil"); intendedToolPickAxe.add("bell"); intendedToolPickAxe.add("block_of_redstone"); intendedToolPickAxe.add("brewing_stand"); intendedToolPickAxe.add("cauldron"); intendedToolPickAxe.add("chain"); intendedToolPickAxe.add("hopper"); intendedToolPickAxe.add("iron_bars"); intendedToolPickAxe.add("iron_door"); intendedToolPickAxe.add("iron_trapdoor"); intendedToolPickAxe.add("lantern"); intendedToolPickAxe.add("weighted_pressure_plates"); intendedToolPickAxe.add("block_of_iron"); intendedToolPickAxe.add("copper_blocks"); intendedToolPickAxe.add("cut_copper"); intendedToolPickAxe.add("cut_copper_slab"); intendedToolPickAxe.add("cut_copper_stairs"); intendedToolPickAxe.add("lapis_lazuli_block"); intendedToolPickAxe.add("lightning_rod"); intendedToolPickAxe.add("block_of_diamond"); intendedToolPickAxe.add("block_of_emerald"); intendedToolPickAxe.add("block_of_gold"); intendedToolPickAxe.add("block_of_netherite"); intendedToolPickAxe.add("piston"); intendedToolPickAxe.add("sticky_piston"); intendedToolPickAxe.add("conduit"); intendedToolPickAxe.add("shulker_box"); intendedToolPickAxe.add("element_constructor"); //be & ee intendedToolPickAxe.add("compound_creator"); //be & ee intendedToolPickAxe.add("material_reducer"); //be & ee intendedToolPickAxe.add("activator_rail"); intendedToolPickAxe.add("detector_rail"); intendedToolPickAxe.add("powered_rail"); intendedToolPickAxe.add("rail"); intendedToolPickAxe.add("andesite"); intendedToolPickAxe.add("basalt"); intendedToolPickAxe.add("blackstone"); intendedToolPickAxe.add("blast_furnace"); intendedToolPickAxe.add("block_of_coal"); intendedToolPickAxe.add("block_of_quartz"); intendedToolPickAxe.add("bricks"); intendedToolPickAxe.add("cobblestone"); intendedToolPickAxe.add("cobblestone_wall"); intendedToolPickAxe.add("concrete"); intendedToolPickAxe.add("dark_prismarine"); intendedToolPickAxe.add("diorite"); intendedToolPickAxe.add("dispenser"); intendedToolPickAxe.add("dripstone_block"); intendedToolPickAxe.add("dropper"); intendedToolPickAxe.add("enchantment_table"); intendedToolPickAxe.add("end_stone"); intendedToolPickAxe.add("ender_chest"); intendedToolPickAxe.add("furnace"); intendedToolPickAxe.add("glazed_terracotta"); intendedToolPickAxe.add("granite"); intendedToolPickAxe.add("grindstone"); intendedToolPickAxe.add("heat_block"); //be & ee intendedToolPickAxe.add("lodestone"); intendedToolPickAxe.add("mossy_cobblestone"); intendedToolPickAxe.add("nether_bricks"); intendedToolPickAxe.add("nether_brick_fence"); intendedToolPickAxe.add("nether_gold_ore"); intendedToolPickAxe.add("nether_quartz_ore"); intendedToolPickAxe.add("netherrack"); intendedToolPickAxe.add("observer"); intendedToolPickAxe.add("prismarine"); intendedToolPickAxe.add("prismarine_bricks"); intendedToolPickAxe.add("pointed_dripstone"); intendedToolPickAxe.add("polished_andesite"); intendedToolPickAxe.add("polished_blackstone"); intendedToolPickAxe.add("polished_blackstone_bricks"); intendedToolPickAxe.add("polished_diorite"); intendedToolPickAxe.add("polished_granite"); intendedToolPickAxe.add("red_sandstone"); intendedToolPickAxe.add("sandstone"); intendedToolPickAxe.add("smoker"); intendedToolPickAxe.add("spawner"); intendedToolPickAxe.add("stonecutter"); // intendedToolPickAxe.add("slabs"); intendedToolPickAxe.add("colored_terracotta"); // intendedToolPickAxe.add("stairs"); intendedToolPickAxe.add("smooth_stone"); intendedToolPickAxe.add("stone"); intendedToolPickAxe.add("stone_bricks"); intendedToolPickAxe.add("stone_button"); intendedToolPickAxe.add("stone_pressure_plate"); intendedToolPickAxe.add("terracotta"); intendedToolPickAxe.add("ancient_debris"); intendedToolPickAxe.add("crying_obsidian"); intendedToolPickAxe.add("glowing_obsidian"); //be intendedToolPickAxe.add("obsidian"); intendedToolPickAxe.add("respawn_anchor"); //slabs intendedToolPickAxe.add("petrified_oak_slab"); intendedToolPickAxe.add("stone_slab"); intendedToolPickAxe.add("smooth_stone_slab"); intendedToolPickAxe.add("cobblestone_slab"); intendedToolPickAxe.add("mossy_cobblestone_slab"); intendedToolPickAxe.add("stone_brick_slab"); intendedToolPickAxe.add("mossy_stone_brick_slab"); intendedToolPickAxe.add("andesite_slab"); intendedToolPickAxe.add("polished_andesite_slab"); intendedToolPickAxe.add("diorite_slab"); intendedToolPickAxe.add("polished_diorite_slab"); intendedToolPickAxe.add("granite_slab"); intendedToolPickAxe.add("polished_granite_slab"); intendedToolPickAxe.add("sandstone_slab"); intendedToolPickAxe.add("cut_sandstone_slab"); intendedToolPickAxe.add("smooth_sandstone_slab"); intendedToolPickAxe.add("red_sandstone_slab"); intendedToolPickAxe.add("cut_red_sandstone_slab"); intendedToolPickAxe.add("smooth_red_sandstone_slab"); intendedToolPickAxe.add("brick_slab"); intendedToolPickAxe.add("prismarine_brick_slab"); intendedToolPickAxe.add("dark_prismarine_slab"); intendedToolPickAxe.add("nether_brick_slab"); intendedToolPickAxe.add("red_netherbrick_slab"); intendedToolPickAxe.add("quartz_slab"); intendedToolPickAxe.add("smooth_quartz_slab"); intendedToolPickAxe.add("purpur_slab"); intendedToolPickAxe.add("end_stone_brick_slab"); intendedToolPickAxe.add("blackstone_slab"); intendedToolPickAxe.add("polished_blackstone_slab"); intendedToolPickAxe.add("polished_blackstone_brick_slab"); intendedToolPickAxe.add("lightly_weathered_cut_copper_slab"); intendedToolPickAxe.add("semi_weathered_cut_copper_slab"); intendedToolPickAxe.add("waxed_semi_weathered_cut_copper_slab"); intendedToolPickAxe.add("weathered_cut_copper_slab"); intendedToolPickAxe.add("waxed_cut_copper_slab"); intendedToolPickAxe.add("waxed_lightly_weathered_cut_copper_slab"); //stairs (not all of these exist, just copied the above list and replaced slab with stairs) intendedToolPickAxe.add("petrified_oak_stairs"); intendedToolPickAxe.add("stone_stairs"); intendedToolPickAxe.add("smooth_stone_stairs"); intendedToolPickAxe.add("cobblestone_stairs"); intendedToolPickAxe.add("mossy_cobblestone_stairs"); intendedToolPickAxe.add("stone_brick_stairs"); intendedToolPickAxe.add("mossy_stone_brick_stairs"); intendedToolPickAxe.add("andesite_stairs"); intendedToolPickAxe.add("polished_andesite_stairs"); intendedToolPickAxe.add("diorite_stairs"); intendedToolPickAxe.add("polished_diorite_stairs"); intendedToolPickAxe.add("granite_stairs"); intendedToolPickAxe.add("polished_granite_stairs"); intendedToolPickAxe.add("sandstone_stairs"); intendedToolPickAxe.add("cut_sandstone_stairs"); intendedToolPickAxe.add("smooth_sandstone_stairs"); intendedToolPickAxe.add("red_sandstone_stairs"); intendedToolPickAxe.add("cut_red_sandstone_stairs"); intendedToolPickAxe.add("smooth_red_sandstone_stairs"); intendedToolPickAxe.add("brick_stairs"); intendedToolPickAxe.add("prismarine_brick_stairs"); intendedToolPickAxe.add("dark_prismarine_stairs"); intendedToolPickAxe.add("nether_brick_stairs"); intendedToolPickAxe.add("red_netherbrick_stairs"); intendedToolPickAxe.add("quartz_stairs"); intendedToolPickAxe.add("smooth_quartz_stairs"); intendedToolPickAxe.add("purpur_stairs"); intendedToolPickAxe.add("end_stone_brick_stairs"); intendedToolPickAxe.add("blackstone_stairs"); intendedToolPickAxe.add("polished_blackstone_stairs"); intendedToolPickAxe.add("polished_blackstone_brick_stairs"); intendedToolPickAxe.add("lightly_weathered_cut_copper_stairs"); intendedToolPickAxe.add("semi_weathered_cut_copper_stairs"); intendedToolPickAxe.add("waxed_semi_weathered_cut_copper_stairs"); intendedToolPickAxe.add("weathered_cut_copper_stairs"); intendedToolPickAxe.add("waxed_cut_copper_stairs"); intendedToolPickAxe.add("waxed_lightly_weathered_cut_copper_stairs"); //1.17 Mining (non-ores) intendedToolPickAxe.add("calcite"); intendedToolPickAxe.add("smooth_basalt"); intendedToolPickAxe.add("block_of_amethyst"); intendedToolPickAxe.add("small_amethyst_bud"); intendedToolPickAxe.add("medium_amethyst_bud"); intendedToolPickAxe.add("large_amethyst_bud"); intendedToolPickAxe.add("amethyst_cluster"); intendedToolPickAxe.add("budding_amethyst"); intendedToolPickAxe.add("deepslate"); intendedToolPickAxe.add("cobbled_deepslate"); intendedToolPickAxe.add("tuff"); } private void fillArmors() { fillLeatherArmorWhiteList(); fillIronArmorWhiteList(); fillChainmailWhiteList(); fillGoldArmorWhiteList(); fillDiamondArmorWhiteList(); fillnetheriteArmorWhiteList(); //Add all armors to armors hashset armors.addAll(leatherArmor); armors.addAll(ironArmor); armors.addAll(chainmailArmor); armors.addAll(goldArmor); armors.addAll(diamondArmor); armors.addAll(netheriteArmor); armors.add("turtle_shell"); } private void fillEnchantables() { enchantables.addAll(armors); enchantables.addAll(swords); enchantables.addAll(axes); enchantables.addAll(hoes); enchantables.addAll(pickAxes); enchantables.addAll(tridents); enchantables.addAll(bows); enchantables.addAll(crossbows); enchantables.add("shears"); enchantables.add("fishing_rod"); enchantables.add("carrot_on_a_stick"); enchantables.add("enchanted_book"); enchantables.add("flint_and_steel"); enchantables.add("turtle_shell"); } private void fillTools() { fillWoodToolsWhiteList(); fillStoneToolsWhiteList(); fillIronToolsWhiteList(); fillGoldToolsWhiteList(); fillDiamondToolsWhiteList(); fillnetheriteToolsWhiteList(); fillSwords(); fillAxes(); fillPickAxes(); fillHoes(); fillShovels(); fillTridents(); fillStringTools(); fillBows(); fillCrossbows(); //Tools collection tools.addAll(woodTools); tools.addAll(stoneTools); tools.addAll(ironTools); tools.addAll(goldTools); tools.addAll(diamondTools); tools.addAll(netheriteTools); tools.addAll(tridents); tools.addAll(stringTools); tools.addAll(bows); tools.addAll(crossbows); } private void fillBows() { bows.add("bow"); } private void fillCrossbows() { crossbows.add("crossbow"); } private void fillStringTools() { stringTools.add("bow"); stringTools.add("fishing_rod"); stringTools.add("carrot_on_a_stick"); } private void fillTridents() { tridents.add("trident"); } private void fillSwords() { swords.add("wood_sword"); swords.add("wooden_sword"); swords.add("stone_sword"); swords.add("iron_sword"); swords.add("gold_sword"); swords.add("golden_sword"); swords.add("diamond_sword"); swords.add("netherite_sword"); } private void fillAxes() { axes.add("wood_axe"); axes.add("wooden_axe"); axes.add("stone_axe"); axes.add("iron_axe"); axes.add("gold_axe"); axes.add("golden_axe"); axes.add("diamond_axe"); axes.add("netherite_axe"); } private void fillPickAxes() { pickAxes.add("wood_pickaxe"); pickAxes.add("wooden_pickaxe"); pickAxes.add("stone_pickaxe"); pickAxes.add("iron_pickaxe"); pickAxes.add("gold_pickaxe"); pickAxes.add("golden_pickaxe"); pickAxes.add("diamond_pickaxe"); pickAxes.add("netherite_pickaxe"); } private void fillHoes() { hoes.add("wood_hoe"); hoes.add("wooden_hoe"); hoes.add("stone_hoe"); hoes.add("iron_hoe"); hoes.add("gold_hoe"); hoes.add("golden_hoe"); hoes.add("diamond_hoe"); hoes.add("netherite_hoe"); } private void fillShovels() { shovels.add("wood_shovel"); shovels.add("wooden_shovel"); shovels.add("stone_shovel"); shovels.add("iron_shovel"); shovels.add("gold_shovel"); shovels.add("golden_shovel"); shovels.add("diamond_shovel"); shovels.add("netherite_shovel"); } private void fillLeatherArmorWhiteList() { leatherArmor.add("leather_helmet"); leatherArmor.add("leather_chestplate"); leatherArmor.add("leather_leggings"); leatherArmor.add("leather_boots"); } private void fillIronArmorWhiteList() { ironArmor.add("iron_helmet"); ironArmor.add("iron_chestplate"); ironArmor.add("iron_leggings"); ironArmor.add("iron_boots"); } private void fillChainmailWhiteList() { chainmailArmor.add("chainmail_helmet"); chainmailArmor.add("chainmail_chestplate"); chainmailArmor.add("chainmail_leggings"); chainmailArmor.add("chainmail_boots"); } private void fillGoldArmorWhiteList() { goldArmor.add("gold_helmet"); goldArmor.add("gold_chestplate"); goldArmor.add("gold_leggings"); goldArmor.add("gold_boots"); //Gold became Golden post 1.13 goldArmor.add("golden_helmet"); goldArmor.add("golden_chestplate"); goldArmor.add("golden_leggings"); goldArmor.add("golden_boots"); } private void fillDiamondArmorWhiteList() { diamondArmor.add("diamond_helmet"); diamondArmor.add("diamond_chestplate"); diamondArmor.add("diamond_leggings"); diamondArmor.add("diamond_boots"); } private void fillnetheriteArmorWhiteList() { netheriteArmor.add("netherite_helmet"); netheriteArmor.add("netherite_chestplate"); netheriteArmor.add("netherite_leggings"); netheriteArmor.add("netherite_boots"); } private void fillWoodToolsWhiteList() { woodTools.add("wood_sword"); woodTools.add("wood_axe"); woodTools.add("wood_hoe"); woodTools.add("wood_pickaxe"); woodTools.add("wood_shovel"); //Wood became wooden post 1.13 woodTools.add("wooden_sword"); woodTools.add("wooden_axe"); woodTools.add("wooden_hoe"); woodTools.add("wooden_pickaxe"); woodTools.add("wooden_shovel"); } private void fillStoneToolsWhiteList() { stoneTools.add("stone_sword"); stoneTools.add("stone_axe"); stoneTools.add("stone_hoe"); stoneTools.add("stone_pickaxe"); stoneTools.add("stone_shovel"); } private void fillIronToolsWhiteList() { ironTools.add("iron_sword"); ironTools.add("iron_axe"); ironTools.add("iron_hoe"); ironTools.add("iron_pickaxe"); ironTools.add("iron_shovel"); //Used for repair, remove in 2.2 //TODO: Remove in config update ironTools.add("bucket"); ironTools.add("flint_and_steel"); ironTools.add("shears"); } private void fillGoldToolsWhiteList() { goldTools.add("gold_sword"); goldTools.add("gold_axe"); goldTools.add("gold_hoe"); goldTools.add("gold_pickaxe"); goldTools.add("gold_shovel"); //Gold became golden post 1.13 goldTools.add("golden_sword"); goldTools.add("golden_axe"); goldTools.add("golden_hoe"); goldTools.add("golden_pickaxe"); goldTools.add("golden_shovel"); } private void fillDiamondToolsWhiteList() { diamondTools.add("diamond_sword"); diamondTools.add("diamond_axe"); diamondTools.add("diamond_hoe"); diamondTools.add("diamond_pickaxe"); diamondTools.add("diamond_shovel"); } private void fillnetheriteToolsWhiteList() { netheriteTools.add("netherite_sword"); netheriteTools.add("netherite_axe"); netheriteTools.add("netherite_hoe"); netheriteTools.add("netherite_pickaxe"); netheriteTools.add("netherite_shovel"); } private void fillGlassBlockWhiteList() { glassBlocks.add("glass"); glassBlocks.add("glass_pane"); glassBlocks.add("black_stained_glass"); glassBlocks.add("black_stained_glass_pane"); glassBlocks.add("blue_stained_glass"); glassBlocks.add("blue_stained_glass_pane"); glassBlocks.add("brown_stained_glass"); glassBlocks.add("brown_stained_glass_pane"); glassBlocks.add("cyan_stained_glass"); glassBlocks.add("cyan_stained_glass_pane"); glassBlocks.add("gray_stained_glass"); glassBlocks.add("gray_stained_glass_pane"); glassBlocks.add("green_stained_glass"); glassBlocks.add("green_stained_glass_pane"); glassBlocks.add("light_blue_stained_glass"); glassBlocks.add("light_blue_stained_glass_pane"); glassBlocks.add("light_gray_stained_glass"); glassBlocks.add("light_gray_stained_glass_pane"); glassBlocks.add("lime_stained_glass"); glassBlocks.add("lime_stained_glass_pane"); glassBlocks.add("magenta_stained_glass"); glassBlocks.add("magenta_stained_glass_pane"); glassBlocks.add("orange_stained_glass"); glassBlocks.add("orange_stained_glass_pane"); glassBlocks.add("pink_stained_glass"); glassBlocks.add("pink_stained_glass_pane"); glassBlocks.add("purple_stained_glass"); glassBlocks.add("purple_stained_glass_pane"); glassBlocks.add("red_stained_glass"); glassBlocks.add("red_stained_glass_pane"); glassBlocks.add("white_stained_glass"); glassBlocks.add("white_stained_glass_pane"); glassBlocks.add("yellow_stained_glass"); glassBlocks.add("yellow_stained_glass_pane"); } private void fillFoodWhiteList() { foodItemWhiteList.add("apple"); foodItemWhiteList.add("baked_potato"); foodItemWhiteList.add("beetroot"); foodItemWhiteList.add("beetroot_soup"); foodItemWhiteList.add("bread"); foodItemWhiteList.add("cake"); foodItemWhiteList.add("carrot"); foodItemWhiteList.add("chorus_fruit"); foodItemWhiteList.add("cooked_chicken"); foodItemWhiteList.add("cooked_cod"); foodItemWhiteList.add("cooked_mutton"); foodItemWhiteList.add("cooked_porkchop"); foodItemWhiteList.add("cooked_rabbit"); foodItemWhiteList.add("cooked_salmon"); foodItemWhiteList.add("cookie"); foodItemWhiteList.add("dried_kelp"); foodItemWhiteList.add("golden_apple"); foodItemWhiteList.add("enchanted_golden_apple"); foodItemWhiteList.add("golden_carrot"); foodItemWhiteList.add("melon_slice"); foodItemWhiteList.add("mushroom_stew"); foodItemWhiteList.add("poisonous_potato"); foodItemWhiteList.add("potato"); foodItemWhiteList.add("pumpkin_pie"); foodItemWhiteList.add("rabbit_stew"); foodItemWhiteList.add("raw_beef"); foodItemWhiteList.add("raw_chicken"); foodItemWhiteList.add("raw_cod"); foodItemWhiteList.add("raw_mutton"); foodItemWhiteList.add("raw_porkchop"); foodItemWhiteList.add("raw_rabbit"); foodItemWhiteList.add("raw_salmon"); foodItemWhiteList.add("rotten_flesh"); foodItemWhiteList.add("suspicious_stew"); foodItemWhiteList.add("sweet_berries"); foodItemWhiteList.add("tropical_fish"); } /** * Checks if a Material is used for Armor * @param material target material * @return true if it is used for armor */ public boolean isArmor(@NotNull Material material) { return isArmor(material.getKey().getKey()); } /** * Checks if the id provided is used as armor * @param id target item id * @return true if the item id matches armor */ public boolean isArmor(@NotNull String id) { return armors.contains(id); } public boolean isTool(@NotNull Material material) { return isTool(material.getKey().getKey()); } public boolean isTool(@NotNull String id) { return tools.contains(id); } public boolean isEnchantable(@NotNull Material material) { return isEnchantable(material.getKey().getKey()); } public boolean isEnchantable(@NotNull String id) { return enchantables.contains(id); } public boolean isOre(@NotNull Material material) { return isOre(material.getKey().getKey()); } public boolean isOre(@NotNull String id) { return ores.contains(id); } public boolean isBow(@NotNull Material material) { return isBow(material.getKey().getKey()); } public boolean isBow(@NotNull String id) { return bows.contains(id); } public boolean isCrossbow(@NotNull Material material) { return isCrossbow(material.getKey().getKey()); } public boolean isCrossbow(@NotNull String id) { return crossbows.contains(id); } public boolean isTrident(@NotNull Material material) { return isTrident(material.getKey().getKey()); } public boolean isTrident(@NotNull String id) { return tridents.contains(id); } public boolean isLeatherArmor(@NotNull Material material) { return isLeatherArmor(material.getKey().getKey()); } public boolean isLeatherArmor(@NotNull String id) { return leatherArmor.contains(id); } public boolean isIronArmor(@NotNull Material material) { return isIronArmor(material.getKey().getKey()); } public boolean isIronArmor(@NotNull String id) { return ironArmor.contains(id); } public boolean isGoldArmor(@NotNull Material material) { return isGoldArmor(material.getKey().getKey()); } public boolean isGoldArmor(@NotNull String id) { return goldArmor.contains(id); } public boolean isDiamondArmor(@NotNull Material material) { return isDiamondArmor(material.getKey().getKey()); } public boolean isDiamondArmor(@NotNull String id) { return diamondArmor.contains(id); } public boolean isChainmailArmor(@NotNull Material material) { return isChainmailArmor(material.getKey().getKey()); } public boolean isChainmailArmor(@NotNull String id) { return chainmailArmor.contains(id); } public boolean isNetheriteArmor(@NotNull Material material) { return isNetheriteArmor(material.getKey().getKey()); } public boolean isNetheriteArmor(@NotNull String id) { return netheriteArmor.contains(id); } public boolean isWoodTool(@NotNull Material material) { return isWoodTool(material.getKey().getKey()); } public boolean isWoodTool(@NotNull String id) { return woodTools.contains(id); } public boolean isStoneTool(@NotNull Material material) { return isStoneTool(material.getKey().getKey()); } public boolean isStoneTool(@NotNull String id) { return stoneTools.contains(id); } public boolean isIronTool(@NotNull Material material) { return isIronTool(material.getKey().getKey()); } public boolean isIronTool(@NotNull String id) { return ironTools.contains(id); } public boolean isGoldTool(@NotNull Material material) { return isGoldTool(material.getKey().getKey()); } public boolean isGoldTool(@NotNull String id) { return goldTools.contains(id); } public boolean isDiamondTool(@NotNull Material material) { return isDiamondTool(material.getKey().getKey()); } public boolean isDiamondTool(@NotNull String id) { return diamondTools.contains(id); } public boolean isSword(@NotNull Material material) { return isSword(material.getKey().getKey()); } public boolean isSword(@NotNull String id) { return swords.contains(id); } public boolean isAxe(@NotNull Material material) { return isAxe(material.getKey().getKey()); } public boolean isAxe(@NotNull String id) { return axes.contains(id); } public boolean isPickAxe(@NotNull Material material) { return isPickAxe(material.getKey().getKey()); } public boolean isPickAxe(@NotNull String id) { return pickAxes.contains(id); } public boolean isShovel(@NotNull Material material) { return isShovel(material.getKey().getKey()); } public boolean isShovel(@NotNull String id) { return shovels.contains(id); } public boolean isHoe(@NotNull Material material) { return isHoe(material.getKey().getKey()); } public boolean isHoe(@NotNull String id) { return hoes.contains(id); } public boolean isNetheriteTool(@NotNull Material material) { return isNetheriteTool(material.getKey().getKey()); } public boolean isNetheriteTool(@NotNull String id) { return netheriteTools.contains(id); } public boolean isStringTool(@NotNull Material material) { return isStringTool(material.getKey().getKey()); } public boolean isStringTool(@NotNull String id) { return stringTools.contains(id); } public boolean isGlass(@NotNull Material material) { return glassBlocks.contains(material.getKey().getKey()); } public boolean isFood(@NotNull Material material) { return foodItemWhiteList.contains(material.getKey().getKey()); } private void fillMultiBlockPlantSet() { //Multi-Block Plants multiBlockPlant.add("cactus"); multiBlockPlant.add("chorus_plant"); multiBlockPlant.add("chorus_flower"); multiBlockPlant.add("sugar_cane"); multiBlockPlant.add("kelp_plant"); multiBlockPlant.add("kelp"); multiBlockPlant.add("tall_seagrass"); multiBlockPlant.add("large_fern"); multiBlockPlant.add("tall_grass"); multiBlockPlant.add("bamboo"); } private void fillMultiBlockHangingPlantSet() { multiBlockHangingPlant.add("weeping_vines_plant"); multiBlockHangingPlant.add("twisted_vines_plant"); multiBlockHangingPlant.add("cave_vines_plant"); } private void fillShroomyWhiteList() { canMakeShroomyWhiteList.add("dirt"); canMakeShroomyWhiteList.add("grass_block"); canMakeShroomyWhiteList.add("dirt_path"); } private void fillBlockCrackerWhiteList() { blockCrackerWhiteList.add("stone_bricks"); blockCrackerWhiteList.add("infested_stone_bricks"); } private void fillHerbalismAbilityBlackList() { herbalismAbilityBlackList.add("dirt"); herbalismAbilityBlackList.add("grass_block"); herbalismAbilityBlackList.add("dirt_path"); herbalismAbilityBlackList.add("farmland"); } private void fillTreeFellerDestructibleWhiteList() { treeFellerDestructibleWhiteList.add("oak_leaves"); treeFellerDestructibleWhiteList.add("cherry_leaves"); treeFellerDestructibleWhiteList.add("acacia_leaves"); treeFellerDestructibleWhiteList.add("birch_leaves"); treeFellerDestructibleWhiteList.add("dark_oak_leaves"); treeFellerDestructibleWhiteList.add("jungle_leaves"); treeFellerDestructibleWhiteList.add("spruce_leaves"); treeFellerDestructibleWhiteList.add("azalea_leaves"); treeFellerDestructibleWhiteList.add("flowering_azalea_leaves"); treeFellerDestructibleWhiteList.add("mangrove_leaves"); treeFellerDestructibleWhiteList.add("mangrove_roots"); treeFellerDestructibleWhiteList.add("nether_wart_block"); treeFellerDestructibleWhiteList.add("warped_wart_block"); treeFellerDestructibleWhiteList.add("brown_mushroom_block"); treeFellerDestructibleWhiteList.add("red_mushroom_block"); } private void fillMossyWhiteList() { mossyWhiteList.add("cobblestone"); mossyWhiteList.add("dirt"); mossyWhiteList.add("grass_path"); mossyWhiteList.add("stone_bricks"); mossyWhiteList.add("cobblestone_wall"); } private void fillAbilityBlackList() { abilityBlackList.add("warped_fence_gate"); abilityBlackList.add("crimson_fence_gate"); abilityBlackList.add("warped_pressure_plate"); abilityBlackList.add("crimson_pressure_plate"); abilityBlackList.add("warped_button"); abilityBlackList.add("crimson_button"); abilityBlackList.add("warped_door"); abilityBlackList.add("crimson_door"); abilityBlackList.add("warped_trapdoor"); abilityBlackList.add("crimson_trapdoor"); abilityBlackList.add("black_bed"); abilityBlackList.add("blue_bed"); abilityBlackList.add("brown_bed"); abilityBlackList.add("cyan_bed"); abilityBlackList.add("gray_bed"); abilityBlackList.add("green_bed"); abilityBlackList.add("light_blue_bed"); abilityBlackList.add("light_gray_bed"); abilityBlackList.add("lime_bed"); abilityBlackList.add("magenta_bed"); abilityBlackList.add("orange_bed"); abilityBlackList.add("pink_bed"); abilityBlackList.add("purple_bed"); abilityBlackList.add("red_bed"); abilityBlackList.add("white_bed"); abilityBlackList.add("yellow_bed"); abilityBlackList.add("brewing_stand"); abilityBlackList.add("bookshelf"); abilityBlackList.add("cake"); abilityBlackList.add("chest"); abilityBlackList.add("dispenser"); abilityBlackList.add("enchanting_table"); abilityBlackList.add("ender_chest"); abilityBlackList.add("oak_fence_gate"); abilityBlackList.add("acacia_fence_gate"); abilityBlackList.add("dark_oak_fence_gate"); abilityBlackList.add("spruce_fence_gate"); abilityBlackList.add("birch_fence_gate"); abilityBlackList.add("jungle_fence_gate"); abilityBlackList.add("furnace"); abilityBlackList.add("jukebox"); abilityBlackList.add("lever"); abilityBlackList.add("note_block"); abilityBlackList.add("stone_button"); abilityBlackList.add("oak_button"); abilityBlackList.add("birch_button"); abilityBlackList.add("acacia_button"); abilityBlackList.add("dark_oak_button"); abilityBlackList.add("jungle_button"); abilityBlackList.add("spruce_button"); abilityBlackList.add("acacia_trapdoor"); abilityBlackList.add("birch_trapdoor"); abilityBlackList.add("dark_oak_trapdoor"); abilityBlackList.add("jungle_trapdoor"); abilityBlackList.add("oak_trapdoor"); abilityBlackList.add("spruce_trapdoor"); abilityBlackList.add("acacia_sign"); abilityBlackList.add("acacia_wall_sign"); abilityBlackList.add("birch_sign"); abilityBlackList.add("birch_wall_sign"); abilityBlackList.add("dark_oak_sign"); abilityBlackList.add("dark_oak_wall_sign"); abilityBlackList.add("jungle_sign"); abilityBlackList.add("jungle_wall_sign"); abilityBlackList.add("spruce_sign"); abilityBlackList.add("spruce_wall_sign"); abilityBlackList.add("oak_sign"); abilityBlackList.add("oak_wall_sign"); abilityBlackList.add("crafting_table"); abilityBlackList.add("beacon"); abilityBlackList.add("anvil"); abilityBlackList.add("dropper"); abilityBlackList.add("hopper"); abilityBlackList.add("trapped_chest"); abilityBlackList.add("iron_door"); abilityBlackList.add("iron_trapdoor"); abilityBlackList.add("oak_door"); abilityBlackList.add("acacia_door"); abilityBlackList.add("spruce_door"); abilityBlackList.add("birch_door"); abilityBlackList.add("jungle_door"); abilityBlackList.add("dark_oak_door"); abilityBlackList.add("oak_fence"); abilityBlackList.add("acacia_fence"); abilityBlackList.add("dark_oak_fence"); abilityBlackList.add("birch_fence"); abilityBlackList.add("jungle_fence"); abilityBlackList.add("spruce_fence"); abilityBlackList.add("armor_stand"); abilityBlackList.add("black_shulker_box"); abilityBlackList.add("blue_shulker_box"); abilityBlackList.add("brown_shulker_box"); abilityBlackList.add("cyan_shulker_box"); abilityBlackList.add("gray_shulker_box"); abilityBlackList.add("green_shulker_box"); abilityBlackList.add("light_blue_shulker_box"); abilityBlackList.add("lime_shulker_box"); abilityBlackList.add("magenta_shulker_box"); abilityBlackList.add("orange_shulker_box"); abilityBlackList.add("pink_shulker_box"); abilityBlackList.add("purple_shulker_box"); abilityBlackList.add("red_shulker_box"); abilityBlackList.add("light_gray_shulker_box"); abilityBlackList.add("white_shulker_box"); abilityBlackList.add("yellow_shulker_box"); abilityBlackList.add("shulker_box"); abilityBlackList.add("wall_sign"); //1.13 and lower? abilityBlackList.add("sign"); //1.13 and lower? abilityBlackList.add("cartography_table"); abilityBlackList.add("grindstone"); abilityBlackList.add("lectern"); abilityBlackList.add("loom"); abilityBlackList.add("scaffolding"); abilityBlackList.add("smoker"); abilityBlackList.add("stonecutter"); abilityBlackList.add("sweet_berry_bush"); abilityBlackList.add("bell"); abilityBlackList.add("barrel"); abilityBlackList.add("blast_furnace"); abilityBlackList.add("campfire"); abilityBlackList.add("soul_campfire"); abilityBlackList.add("composter"); abilityBlackList.add("lodestone"); abilityBlackList.add("respawn_anchor"); } private void fillToolBlackList() { toolBlackList.add("chiseled_bookshelf"); toolBlackList.add("black_bed"); toolBlackList.add("blue_bed"); toolBlackList.add("brown_bed"); toolBlackList.add("cyan_bed"); toolBlackList.add("gray_bed"); toolBlackList.add("green_bed"); toolBlackList.add("light_blue_bed"); toolBlackList.add("light_gray_bed"); toolBlackList.add("lime_bed"); toolBlackList.add("magenta_bed"); toolBlackList.add("orange_bed"); toolBlackList.add("pink_bed"); toolBlackList.add("purple_bed"); toolBlackList.add("red_bed"); toolBlackList.add("white_bed"); toolBlackList.add("yellow_bed"); toolBlackList.add("brewing_stand"); toolBlackList.add("bookshelf"); toolBlackList.add("cake"); toolBlackList.add("chest"); toolBlackList.add("dispenser"); toolBlackList.add("enchanting_table"); toolBlackList.add("ender_chest"); toolBlackList.add("oak_fence_gate"); toolBlackList.add("acacia_fence_gate"); toolBlackList.add("dark_oak_fence_gate"); toolBlackList.add("spruce_fence_gate"); toolBlackList.add("birch_fence_gate"); toolBlackList.add("jungle_fence_gate"); toolBlackList.add("furnace"); toolBlackList.add("jukebox"); toolBlackList.add("lever"); toolBlackList.add("note_block"); toolBlackList.add("stone_button"); toolBlackList.add("oak_button"); toolBlackList.add("birch_button"); toolBlackList.add("acacia_button"); toolBlackList.add("dark_oak_button"); toolBlackList.add("jungle_button"); toolBlackList.add("spruce_button"); toolBlackList.add("acacia_trapdoor"); toolBlackList.add("birch_trapdoor"); toolBlackList.add("dark_oak_trapdoor"); toolBlackList.add("jungle_trapdoor"); toolBlackList.add("oak_trapdoor"); toolBlackList.add("spruce_trapdoor"); toolBlackList.add("crafting_table"); toolBlackList.add("beacon"); toolBlackList.add("anvil"); toolBlackList.add("dropper"); toolBlackList.add("hopper"); toolBlackList.add("trapped_chest"); toolBlackList.add("iron_door"); toolBlackList.add("iron_trapdoor"); toolBlackList.add("oak_door"); toolBlackList.add("acacia_door"); toolBlackList.add("spruce_door"); toolBlackList.add("birch_door"); toolBlackList.add("jungle_door"); toolBlackList.add("dark_oak_door"); toolBlackList.add("oak_fence"); toolBlackList.add("acacia_fence"); toolBlackList.add("dark_oak_fence"); toolBlackList.add("birch_fence"); toolBlackList.add("jungle_fence"); toolBlackList.add("spruce_fence"); toolBlackList.add("armor_stand"); toolBlackList.add("black_shulker_box"); toolBlackList.add("blue_shulker_box"); toolBlackList.add("brown_shulker_box"); toolBlackList.add("cyan_shulker_box"); toolBlackList.add("gray_shulker_box"); toolBlackList.add("green_shulker_box"); toolBlackList.add("light_blue_shulker_box"); toolBlackList.add("lime_shulker_box"); toolBlackList.add("magenta_shulker_box"); toolBlackList.add("orange_shulker_box"); toolBlackList.add("pink_shulker_box"); toolBlackList.add("purple_shulker_box"); toolBlackList.add("red_shulker_box"); toolBlackList.add("light_gray_shulker_box"); toolBlackList.add("white_shulker_box"); toolBlackList.add("yellow_shulker_box"); toolBlackList.add("shulker_box"); toolBlackList.add("acacia_sign"); toolBlackList.add("acacia_hanging_sign"); toolBlackList.add("acacia_wall_sign"); toolBlackList.add("birch_sign"); toolBlackList.add("birch_hanging_sign"); toolBlackList.add("birch_wall_sign"); toolBlackList.add("dark_oak_sign"); toolBlackList.add("dark_oak_hanging_sign"); toolBlackList.add("dark_oak_wall_sign"); toolBlackList.add("jungle_sign"); toolBlackList.add("jungle_hanging_sign"); toolBlackList.add("jungle_wall_sign"); toolBlackList.add("spruce_sign"); toolBlackList.add("spruce_hanging_sign"); toolBlackList.add("spruce_wall_sign"); toolBlackList.add("oak_sign"); toolBlackList.add("oak_hanging_sign"); toolBlackList.add("oak_wall_sign"); toolBlackList.add("cherry_sign"); toolBlackList.add("cherry_hanging_sign"); toolBlackList.add("cherry_wall_sign"); toolBlackList.add("stripped_cherry_log"); toolBlackList.add("stripped_cherry_wood"); toolBlackList.add("stripped_acacia_log"); toolBlackList.add("stripped_acacia_wood"); toolBlackList.add("stripped_birch_log"); toolBlackList.add("stripped_birch_wood"); toolBlackList.add("stripped_dark_oak_log"); toolBlackList.add("stripped_dark_oak_wood"); toolBlackList.add("stripped_jungle_log"); toolBlackList.add("stripped_jungle_wood"); toolBlackList.add("stripped_oak_log"); toolBlackList.add("stripped_oak_wood"); toolBlackList.add("stripped_spruce_log"); toolBlackList.add("stripped_spruce_wood"); toolBlackList.add("mangrove_wood"); toolBlackList.add("mangrove_log"); toolBlackList.add("stripped_mangrove_log"); toolBlackList.add("acacia_log"); toolBlackList.add("acacia_wood"); toolBlackList.add("birch_log"); toolBlackList.add("birch_wood"); toolBlackList.add("dark_oak_log"); toolBlackList.add("dark_oak_wood"); toolBlackList.add("jungle_log"); toolBlackList.add("jungle_wood"); toolBlackList.add("oak_log"); toolBlackList.add("oak_wood"); toolBlackList.add("spruce_log"); toolBlackList.add("bell"); toolBlackList.add("barrel"); toolBlackList.add("blast_furnace"); toolBlackList.add("campfire"); toolBlackList.add("soul_campfire"); toolBlackList.add("cartography_table"); toolBlackList.add("composter"); toolBlackList.add("grindstone"); toolBlackList.add("lectern"); toolBlackList.add("loom"); toolBlackList.add("smoker"); toolBlackList.add("stonecutter"); toolBlackList.add("lodestone"); toolBlackList.add("respawn_anchor"); toolBlackList.add("sweet_berry_bush"); toolBlackList.add("smithing_table"); } public boolean isIntendedToolPickaxe(@NotNull Material material) { return intendedToolPickAxe.contains(material.getKey().getKey()); } public boolean isIntendedToolPickaxe(@NotNull String string) { return intendedToolPickAxe.contains(string); } public @NotNull HashSet getNetheriteArmor() { return netheriteArmor; } public @NotNull HashSet getNetheriteTools() { return netheriteTools; } public int getTier(@NotNull Material material) { return getTier(material.getKey().getKey()); } public int getTier(@NotNull String id) { return tierValue.getOrDefault(id, 1); //1 for unknown items } private void addToHashSet(@NotNull String string, @NotNull HashSet stringHashSet) { stringHashSet.add(string.toLowerCase(Locale.ENGLISH)); } }