package com.gmail.nossr50.util; import org.bukkit.Material; import java.util.HashSet; /** * Stores hash tables for item and block names * This allows for better support across multiple versions of Minecraft * * This is a temporary class, mcMMO is spaghetti and I'l clean it up later * */ public class MaterialMapStore { private HashSet abilityBlackList; private HashSet toolBlackList; private HashSet mossyWhiteList; private HashSet leavesWhiteList; private HashSet herbalismAbilityBlackList; private HashSet blockCrackerWhiteList; private HashSet canMakeShroomyWhiteList; private HashSet multiBlockEntities; private HashSet foodItemWhiteList; public MaterialMapStore() { abilityBlackList = new HashSet<>(); toolBlackList = new HashSet<>(); mossyWhiteList = new HashSet<>(); leavesWhiteList = new HashSet<>(); herbalismAbilityBlackList = new HashSet<>(); blockCrackerWhiteList = new HashSet<>(); canMakeShroomyWhiteList = new HashSet<>(); multiBlockEntities = new HashSet<>(); foodItemWhiteList = new HashSet<>(); fillHardcodedHashSets(); } public boolean isMultiBlock(Material material) { return multiBlockEntities.contains(material.getKey().getKey()); } public boolean isAbilityActivationBlackListed(Material material) { return abilityBlackList.contains(material.getKey().getKey()); } public boolean isToolActivationBlackListed(Material material) { return toolBlackList.contains(material.getKey().getKey()); } public boolean isMossyWhiteListed(Material material) { return mossyWhiteList.contains(material.getKey().getKey()); } public boolean isLeavesWhiteListed(Material material) { return leavesWhiteList.contains(material.getKey().getKey()); } public boolean isHerbalismAbilityWhiteListed(Material material) { return herbalismAbilityBlackList.contains(material.getKey().getKey()); } public boolean isBlockCrackerWhiteListed(Material material) { return blockCrackerWhiteList.contains(material.getKey().getKey()); } public boolean isShroomyWhiteListed(Material material) { return canMakeShroomyWhiteList.contains(material.getKey().getKey()); } private void fillHardcodedHashSets() { fillAbilityBlackList(); filltoolBlackList(); fillMossyWhiteList(); fillLeavesWhiteList(); fillHerbalismAbilityBlackList(); fillBlockCrackerWhiteList(); fillShroomyWhiteList(); fillMultiBlockEntitiesList(); fillFoodWhiteList(); } 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"); } public boolean isFood(Material material) { return foodItemWhiteList.contains(material.getKey().getKey()); } private void fillMultiBlockEntitiesList() { multiBlockEntities.add("cactus"); multiBlockEntities.add("chorus_plant"); multiBlockEntities.add("sugar_cane"); multiBlockEntities.add("kelp_plant"); multiBlockEntities.add("kelp"); multiBlockEntities.add("tall_seagrass"); multiBlockEntities.add("tall_grass"); multiBlockEntities.add("bamboo"); } private void fillShroomyWhiteList() { canMakeShroomyWhiteList.add("dirt"); canMakeShroomyWhiteList.add("grass"); canMakeShroomyWhiteList.add("grass_path"); } private void fillBlockCrackerWhiteList() { blockCrackerWhiteList.add("stone_bricks"); } private void fillHerbalismAbilityBlackList() { herbalismAbilityBlackList.add("dirt"); herbalismAbilityBlackList.add("grass"); herbalismAbilityBlackList.add("grass_path"); herbalismAbilityBlackList.add("farmland"); } private void fillLeavesWhiteList() { leavesWhiteList.add("oak_leaves"); leavesWhiteList.add("acacia_leaves"); leavesWhiteList.add("birch_leaves"); leavesWhiteList.add("dark_oak_leaves"); leavesWhiteList.add("jungle_leaves"); leavesWhiteList.add("spruce_leaves"); } 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("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? } private void filltoolBlackList() { //TODO: Add anvils / missing logs 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_wall_sign"); toolBlackList.add("birch_sign"); toolBlackList.add("birch_wall_sign"); toolBlackList.add("dark_oak_sign"); toolBlackList.add("dark_oak_wall_sign"); toolBlackList.add("jungle_sign"); toolBlackList.add("jungle_wall_sign"); toolBlackList.add("spruce_sign"); toolBlackList.add("spruce_wall_sign"); toolBlackList.add("oak_sign"); toolBlackList.add("oak_wall_sign"); 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("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("spruce_wood"); toolBlackList.add("iron_block"); toolBlackList.add("gold_block"); } private void addToHashSet(String string, HashSet stringHashSet) { stringHashSet.add(string.toLowerCase()); } }