All Downloads are FREE. Search and download functionalities are using the official Maven repository.

walkmc.Materials.kt Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
package walkmc

import com.google.common.collect.*
import org.bukkit.*
import org.bukkit.material.*
import walkmc.extensions.*
import java.util.*

typealias MaterialPair = Pair

/**
 * Represents a more useful material enum type.
 */
enum class Materials(val type: Material, val subdata: Int = 0) {
   AIR(Material.AIR),
   STONE(Material.STONE),
   GRANITE(Material.STONE, 1),
   POLISHED_GRANITE(Material.STONE, 2),
   DIORITE(Material.STONE, 3),
   POLISHED_DIORITE(Material.STONE, 4),
   ANDESITE(Material.STONE, 5),
   POLISHED_ANDESITE(Material.STONE, 6),
   GRASS(Material.GRASS),
   DIRT(Material.DIRT),
   COARSE_DIRT(Material.DIRT, 1),
   PODZOL(Material.DIRT, 2),
   COBBLESTONE(Material.COBBLESTONE),
   OAK_PLANK(Material.WOOD),
   SPRUCE_PLANK(Material.WOOD, 1),
   BIRCH_PLANK(Material.WOOD, 2),
   JUNGLE_PLANK(Material.WOOD, 3),
   ACACIA_PLANK(Material.WOOD, 4),
   DARK_OAK_PLANK(Material.WOOD, 5),
   OAK_SAPLING(Material.SAPLING),
   SPRUCE_SAPLING(Material.SAPLING, 1),
   BIRCH_SAPLING(Material.SAPLING, 2),
   JUNGLE_SAPLING(Material.SAPLING, 3),
   ACACIA_SAPLING(Material.SAPLING, 4),
   DARK_OAK_SAPLING(Material.SAPLING, 5),
   BEDROCK(Material.BEDROCK),
   WATER(Material.WATER),
   STATIONARY_WATER(Material.STATIONARY_WATER),
   LAVA(Material.LAVA),
   STATIONARY_LAVA(Material.STATIONARY_LAVA),
   SAND(Material.SAND),
   RED_SAND(Material.SAND, 1),
   GRAVEL(Material.GRAVEL),
   GOLD_ORE(Material.GOLD_ORE),
   IRON_ORE(Material.IRON_ORE),
   COAL_ORE(Material.COAL_ORE),
   OAK_WOOD(Material.LOG),
   SPRUCE_WOOD(Material.LOG, 1),
   BIRCH_WOOD(Material.LOG, 2),
   JUNGLE_WOOD(Material.LOG, 3),
   OAK_BARK(Material.LOG, 12),
   SPRUCE_BARK(Material.LOG, 13),
   BIRCH_BARK(Material.LOG, 14),
   JUNGLE_BARK(Material.LOG, 15),
   OAK_LEAVES(Material.LEAVES),
   SPRUCE_LEAVES(Material.LEAVES, 1),
   BIRCH_LEAVES(Material.LEAVES, 2),
   JUNGLE_LEAVES(Material.LEAVES, 3),
   OAK_BARK_LEAVES(Material.LEAVES, 12),
   SPRUCE_BARK_LEAVES(Material.LEAVES, 13),
   BIRCH_BARK_LEAVES(Material.LEAVES, 14),
   JUNGLE_BARK_LEAVES(Material.LEAVES, 15),
   SPONGE(Material.SPONGE),
   WET_SPONGE(Material.SPONGE, 1),
   GLASS(Material.GLASS),
   LAPIS_ORE(Material.LAPIS_ORE),
   LAPIS_BLOCK(Material.LAPIS_BLOCK),
   DISPENSER(Material.DISPENSER),
   SANDSTONE(Material.SANDSTONE),
   CHISELED_SANDSTONE(Material.SANDSTONE, 1),
   SMOOTH_SANDSTONE(Material.SANDSTONE, 2),
   NOTE_BLOCK(Material.NOTE_BLOCK),
   BED_BLOCK(Material.BED_BLOCK),
   POWERED_RAIL(Material.POWERED_RAIL),
   DETECTOR_RAIL(Material.DETECTOR_RAIL),
   PISTON_STICKY_BASE(Material.PISTON_STICKY_BASE),
   WEB(Material.WEB),
   DEAD_GRASS(Material.LONG_GRASS),
   TALL_GRASS(Material.LONG_GRASS, 1),
   FERN(Material.LONG_GRASS, 2),
   DEAD_BUSH(Material.DEAD_BUSH),
   
   // piston section
   PISTON(Material.PISTON_BASE),
   PISTON_UP(Material.PISTON_BASE, 1),
   PISTON_NORTH(Material.PISTON_BASE, 2),
   PISTON_SOUTH(Material.PISTON_BASE, 3),
   PISTON_WEST(Material.PISTON_BASE, 4),
   PISTON_EAST(Material.PISTON_BASE, 5),
   PISTON_BASE(Material.PISTON_BASE, 8),
   PISTON_BASE_UP(Material.PISTON_BASE, 9),
   PISTON_BASE_NORTH(Material.PISTON_BASE, 10),
   PISTON_BASE_SOUTH(Material.PISTON_BASE, 11),
   PISTON_BASE_WEST(Material.PISTON_BASE, 12),
   PISTON_BASE_EAST(Material.PISTON_BASE, 13),
   PISTON_EXTENSION(Material.PISTON_EXTENSION),
   PISTON_EXTENSION_UP(Material.PISTON_EXTENSION, 1),
   PISTON_EXTENSION_NORTH(Material.PISTON_EXTENSION, 2),
   PISTON_EXTENSION_SOUTH(Material.PISTON_EXTENSION, 3),
   PISTON_EXTENSION_WEST(Material.PISTON_EXTENSION, 4),
   PISTON_EXTENSION_EAST(Material.PISTON_EXTENSION, 5),
   STICKY_PISTON_EXTENSION(Material.PISTON_EXTENSION, 8),
   STICKY_PISTON_EXTENSION_UP(Material.PISTON_EXTENSION, 9),
   STICKY_PISTON_EXTENSION_NORTH(Material.PISTON_EXTENSION, 10),
   STICKY_PISTON_EXTENSION_SOUTH(Material.PISTON_EXTENSION, 11),
   STICKY_PISTON_EXTENSION_WEST(Material.PISTON_EXTENSION, 12),
   STICKY_PISTON_EXTENSION_EAST(Material.PISTON_EXTENSION, 13),
   
   WHITE_WOOL(Material.WOOL),
   ORANGE_WOOL(Material.WOOL, 1),
   MAGENTA_WOOL(Material.WOOL, 2),
   LIGHT_BLUE_WOOL(Material.WOOL, 3),
   YELLOW_WOOL(Material.WOOL, 4),
   LIME_WOOL(Material.WOOL, 5),
   PINK_WOOL(Material.WOOL, 6),
   GRAY_WOOL(Material.WOOL, 7),
   LIGHT_GRAY_WOOL(Material.WOOL, 8),
   CYAN_WOOL(Material.WOOL, 9),
   PURPLE_WOOL(Material.WOOL, 10),
   BLUE_WOOL(Material.WOOL, 11),
   BROWN_WOOL(Material.WOOL, 12),
   GREEN_WOOL(Material.WOOL, 13),
   RED_WOOL(Material.WOOL, 14),
   BLACK_WOOL(Material.WOOL, 15),
   YELLOW_FLOWER(Material.YELLOW_FLOWER),
   RED_ROSE(Material.RED_ROSE),
   BLUE_ORCHID(Material.RED_ROSE, 1),
   ALLIUM(Material.RED_ROSE, 2),
   AZURE_BLUET(Material.RED_ROSE, 3),
   RED_TULIP(Material.RED_ROSE, 4),
   ORANGE_TULIP(Material.RED_ROSE, 5),
   WHITE_TULIP(Material.RED_ROSE, 6),
   PINK_TULIP(Material.RED_ROSE, 7),
   OXEYE_DAISY(Material.RED_ROSE, 8),
   BROWN_MUSHROOM(Material.BROWN_MUSHROOM),
   RED_MUSHROOM(Material.RED_MUSHROOM),
   GOLD_BLOCK(Material.GOLD_BLOCK),
   IRON_BLOCK(Material.IRON_BLOCK),
   DOUBLE_STONE_SLAB(Material.DOUBLE_STEP),
   DOUBLE_SANDSTONE_SLAB(Material.DOUBLE_STEP, 1),
   DOUBLE_PLANKS_SLAB(Material.DOUBLE_STEP, 2),
   DOUBLE_COBBLESTONE_SLAB(Material.DOUBLE_STEP, 3),
   DOUBLE_BRICKS_SLAB(Material.DOUBLE_STEP, 4),
   DOUBLE_STONE_BRICKS_SLAB(Material.DOUBLE_STEP, 5),
   DOUBLE_NETHER_BRICKS_SLAB(Material.DOUBLE_STEP, 6),
   DOUBLE_QUARTZ_SLAB(Material.DOUBLE_STEP, 7),
   STONE_SLAB(Material.STEP),
   SANDSTONE_SLAB(Material.STEP, 1),
   PLANKS_SLAB(Material.STEP, 2),
   COBBLESTONE_SLAB(Material.STEP, 3),
   BRICKS_SLAB(Material.STEP, 4),
   STONE_BRICKS_SLAB(Material.STEP, 5),
   NETHER_BRICKS_SLAB(Material.STEP, 6),
   QUARTZ_SLAB(Material.STEP, 7),
   BRICKS(Material.BRICK),
   TNT(Material.TNT),
   BOOKSHELF(Material.BOOKSHELF),
   MOSSY_COBBLESTONE(Material.MOSSY_COBBLESTONE),
   OBSIDIAN(Material.OBSIDIAN),
   TORCH(Material.TORCH),
   FIRE(Material.FIRE),
   MOB_SPAWNER(Material.MOB_SPAWNER),
   OAK_WOOD_STAIRS(Material.WOOD_STAIRS),
   CHEST(Material.CHEST),
   REDSTONE_WIRE(Material.REDSTONE_WIRE),
   DIAMOND_ORE(Material.DIAMOND_ORE),
   DIAMOND_BLOCK(Material.DIAMOND_BLOCK),
   CRAFTING_TABLE(Material.WORKBENCH),
   WHEAT_CROPS(Material.CROPS),
   FARMLAND(Material.SOIL),
   FURNACE(Material.FURNACE),
   BURNING_FURNACE(Material.BURNING_FURNACE),
   SIGN_BLOCK(Material.SIGN_POST),
   OAK_DOOR(Material.WOODEN_DOOR),
   LADDER(Material.LADDER),
   RAIL(Material.RAILS),
   COBBLESTONE_STAIRS(Material.COBBLESTONE_STAIRS),
   WALL_SIGN(Material.WALL_SIGN),
   LEVER(Material.LEVER),
   STONE_PLATE(Material.STONE_PLATE),
   IRON_DOOR_BLOCK(Material.IRON_DOOR_BLOCK),
   WOOD_PLATE(Material.WOOD_PLATE),
   REDSTONE_ORE(Material.REDSTONE_ORE),
   GLOWING_REDSTONE_ORE(Material.GLOWING_REDSTONE_ORE),
   REDSTONE_TORCH_OFF(Material.REDSTONE_TORCH_OFF),
   REDSTONE_TORCH_ON(Material.REDSTONE_TORCH_ON),
   STONE_BUTTON(Material.STONE_BUTTON),
   SNOW(Material.SNOW),
   ICE(Material.ICE),
   SNOW_BLOCK(Material.SNOW_BLOCK),
   CACTUS(Material.CACTUS),
   CLAY_BLOCK(Material.CLAY),
   SUGAR_CANE_BLOCK(Material.SUGAR_CANE_BLOCK),
   JUKEBOX(Material.JUKEBOX),
   OAK_FENCE(Material.FENCE),
   PUMPKIN(Material.PUMPKIN),
   NETHERRACK(Material.NETHERRACK),
   SOUL_SAND(Material.SOUL_SAND),
   GLOWSTONE(Material.GLOWSTONE),
   NETHER_PORTAL(Material.PORTAL),
   JACK_O_LANTERN(Material.JACK_O_LANTERN),
   CAKE_BLOCK(Material.CAKE_BLOCK),
   REPEATER_BLOCK_OFF(Material.DIODE_BLOCK_OFF),
   REPEATER_BLOCK_ON(Material.DIODE_BLOCK_ON),
   WHITE_GLASS(Material.STAINED_GLASS),
   ORANGE_GLASS(Material.STAINED_GLASS, 1),
   MAGENTA_GLASS(Material.STAINED_GLASS, 2),
   LIGHT_BLUE_GLASS(Material.STAINED_GLASS, 3),
   YELLOW_GLASS(Material.STAINED_GLASS, 4),
   LIME_GLASS(Material.STAINED_GLASS, 5),
   PINK_GLASS(Material.STAINED_GLASS, 6),
   GRAY_GLASS(Material.STAINED_GLASS, 7),
   LIGHT_GRAY_GLASS(Material.STAINED_GLASS, 8),
   CYAN_GLASS(Material.STAINED_GLASS, 9),
   PURPLE_GLASS(Material.STAINED_GLASS, 10),
   BLUE_GLASS(Material.STAINED_GLASS, 11),
   BROWN_GLASS(Material.STAINED_GLASS, 12),
   GREEN_GLASS(Material.STAINED_GLASS, 13),
   RED_GLASS(Material.STAINED_GLASS, 14),
   BLACK_GLASS(Material.STAINED_GLASS, 15),
   TRAPDOOR(Material.TRAP_DOOR),
   STONE_MONSTER_EGG(Material.MONSTER_EGGS),
   COBBLESTONE_MONSTER_EGG(Material.MONSTER_EGGS, 1),
   STONE_BRICKS_MONSTER_EGG(Material.MONSTER_EGGS, 2),
   MOSSY_STONE_MONSTER_EGG(Material.MONSTER_EGGS, 3),
   CRACKED_STONE_MONSTER_EGG(Material.MONSTER_EGGS, 4),
   CHISELED_STONE_MONSTER_EGG(Material.MONSTER_EGGS, 5),
   STONE_BRICKS(Material.SMOOTH_BRICK),
   MOSSY_STONE_BRICKS(Material.SMOOTH_BRICK, 1),
   CRACKED_STONE_BRICKS(Material.SMOOTH_BRICK, 2),
   CHISELED_STONE_BRICKS(Material.SMOOTH_BRICK, 3),
   BROWN_MUSHROOM_BLOCK(Material.HUGE_MUSHROOM_1),
   BROWN_MUSHROOM_FULL(Material.HUGE_MUSHROOM_1, 14),
   RED_MUSHROOM_BLOCK(Material.HUGE_MUSHROOM_2),
   RED_MUSHROOM_FULL(Material.HUGE_MUSHROOM_2, 14),
   MUSHROOM_STEM_FULL(Material.HUGE_MUSHROOM_1, 15),
   MUSHROOM_STEM_PILLAR(Material.HUGE_MUSHROOM_1, 10),
   IRON_BAR(Material.IRON_FENCE),
   GLASS_PANE(Material.THIN_GLASS),
   MELON_BLOCK(Material.MELON_BLOCK),
   PUMPKIN_CROPS(Material.PUMPKIN_STEM),
   MELON_CROPS(Material.MELON_STEM),
   VINES(Material.VINE),
   OAK_FENCE_GATE(Material.FENCE_GATE),
   BRICK_STAIRS(Material.BRICK_STAIRS),
   STONE_BRICK_STAIRS(Material.SMOOTH_STAIRS),
   MYCELIUM(Material.MYCEL),
   LILYPAD(Material.WATER_LILY),
   NETHER_BRICK(Material.NETHER_BRICK),
   NETHER_BRICK_FENCE(Material.NETHER_FENCE),
   NETHER_BRICK_STAIRS(Material.NETHER_BRICK_STAIRS),
   NETHER_WART_CROPS(Material.NETHER_WARTS),
   ENCHANTMENT_TABLE(Material.ENCHANTMENT_TABLE),
   BREWING_STAND(Material.BREWING_STAND),
   CAULDRON(Material.CAULDRON),
   ENDER_PORTAL(Material.ENDER_PORTAL),
   ENDER_PORTAL_FRAME(Material.ENDER_PORTAL_FRAME),
   END_STONE(Material.ENDER_STONE),
   DRAGON_EGG(Material.DRAGON_EGG),
   REDSTONE_LAMP_OFF(Material.REDSTONE_LAMP_OFF),
   REDSTONE_LAMP_ON(Material.REDSTONE_LAMP_ON),
   DOUBLE_OAK_SLAB(Material.WOOD_DOUBLE_STEP),
   DOUBLE_SPRUCE_SLAB(Material.WOOD_DOUBLE_STEP, 1),
   DOUBLE_BIRCH_SLAB(Material.WOOD_DOUBLE_STEP, 2),
   DOUBLE_JUNGLE_SLAB(Material.WOOD_DOUBLE_STEP, 3),
   DOUBLE_ACACIA_SLAB(Material.WOOD_DOUBLE_STEP, 4),
   DOUBLE_DARK_OAK_SLAB(Material.WOOD_DOUBLE_STEP, 5),
   OAK_SLAB(Material.WOOD_STEP),
   SPRUCE_SLAB(Material.WOOD_STEP, 1),
   BIRCH_SLAB(Material.WOOD_STEP, 2),
   JUNGLE_SLAB(Material.WOOD_STEP, 3),
   ACACIA_SLAB(Material.WOOD_STEP, 4),
   DARK_OAK_SLAB(Material.WOOD_STEP, 5),
   COCOA_BLOCK(Material.COCOA),
   SANDSTONE_STAIRS(Material.SANDSTONE_STAIRS),
   EMERALD_ORE(Material.EMERALD_ORE),
   ENDER_CHEST(Material.ENDER_CHEST),
   TRIPWIRE_HOOK(Material.TRIPWIRE_HOOK),
   TRIPWIRE(Material.TRIPWIRE),
   EMERALD_BLOCK(Material.EMERALD_BLOCK),
   SPRUCE_STAIRS(Material.SPRUCE_WOOD_STAIRS),
   BIRCH_STAIRS(Material.BIRCH_WOOD_STAIRS),
   JUNGLE_STAIRS(Material.JUNGLE_WOOD_STAIRS),
   COMMAND_BLOCK(Material.COMMAND),
   BEACON(Material.BEACON),
   COBBLESTONE_WALL(Material.COBBLE_WALL),
   FLOWER_POT(Material.FLOWER_POT),
   CARROT_CROPS(Material.CARROT),
   POTATO_CROPS(Material.POTATO),
   WOODEN_BUTTON(Material.WOOD_BUTTON),
   SKULL(Material.SKULL),
   ANVIL(Material.ANVIL),
   TRAPPED_CHEST(Material.TRAPPED_CHEST),
   GOLD_PLATE(Material.GOLD_PLATE),
   IRON_PLATE(Material.IRON_PLATE),
   COMPARATOR_BLOCK_OFF(Material.REDSTONE_COMPARATOR_OFF),
   COMPARATOR_BLOCK_ON(Material.REDSTONE_COMPARATOR_ON),
   DAYLIGHT_SENSOR(Material.DAYLIGHT_DETECTOR),
   REDSTONE_BLOCK(Material.REDSTONE_BLOCK),
   QUARTZ_ORE(Material.QUARTZ_ORE),
   HOPPER(Material.HOPPER),
   QUARTZ_BLOCK(Material.QUARTZ_BLOCK),
   CHISELED_QUARTZ_BLOCK(Material.QUARTZ_BLOCK, 1),
   PILLAR_QUARTZ_BLOCK(Material.QUARTZ_BLOCK, 2),
   QUARTZ_STAIRS(Material.QUARTZ_STAIRS),
   ACTIVATOR_RAIL(Material.ACTIVATOR_RAIL),
   DROPPER(Material.DROPPER),
   WHITE_CLAY(Material.STAINED_CLAY),
   ORANGE_CLAY(Material.STAINED_CLAY, 1),
   MAGENTA_CLAY(Material.STAINED_CLAY, 2),
   LIGHT_BLUE_CLAY(Material.STAINED_CLAY, 3),
   YELLOW_CLAY(Material.STAINED_CLAY, 4),
   LIME_CLAY(Material.STAINED_CLAY, 5),
   PINK_CLAY(Material.STAINED_CLAY, 6),
   GRAY_CLAY(Material.STAINED_CLAY, 7),
   LIGHT_GRAY_CLAY(Material.STAINED_CLAY, 8),
   CYAN_CLAY(Material.STAINED_CLAY, 9),
   PURPLE_CLAY(Material.STAINED_CLAY, 10),
   BLUE_CLAY(Material.STAINED_CLAY, 11),
   BROWN_CLAY(Material.STAINED_CLAY, 12),
   GREEN_CLAY(Material.STAINED_CLAY, 13),
   RED_CLAY(Material.STAINED_CLAY, 14),
   BLACK_CLAY(Material.STAINED_CLAY, 15),
   WHITE_GLASS_PANE(Material.STAINED_GLASS_PANE),
   ORANGE_GLASS_PANE(Material.STAINED_GLASS_PANE, 1),
   MAGENTA_GLASS_PANE(Material.STAINED_GLASS_PANE, 2),
   LIGHT_BLUE_GLASS_PANE(Material.STAINED_GLASS_PANE, 3),
   YELLOW_GLASS_PANE(Material.STAINED_GLASS_PANE, 4),
   LIME_GLASS_PANE(Material.STAINED_GLASS_PANE, 5),
   PINK_GLASS_PANE(Material.STAINED_GLASS_PANE, 6),
   GRAY_GLASS_PANE(Material.STAINED_GLASS_PANE, 7),
   LIGHT_GRAY_GLASS_PANE(Material.STAINED_GLASS_PANE, 8),
   CYAN_GLASS_PANE(Material.STAINED_GLASS_PANE, 9),
   PURPLE_GLASS_PANE(Material.STAINED_GLASS_PANE, 10),
   BLUE_GLASS_PANE(Material.STAINED_GLASS_PANE, 11),
   BROWN_GLASS_PANE(Material.STAINED_GLASS_PANE, 12),
   GREEN_GLASS_PANE(Material.STAINED_GLASS_PANE, 13),
   RED_GLASS_PANE(Material.STAINED_GLASS_PANE, 14),
   BLACK_GLASS_PANE(Material.STAINED_GLASS_PANE, 15),
   ACACIA_LEAVES(Material.LEAVES_2),
   DARK_OAK_LEAVES(Material.LEAVES_2, 1),
   ACACIA_WOOD(Material.LOG_2),
   DARK_OAK_WOOD(Material.LOG_2, 1),
   ACACIA_BARK(Material.LOG_2, 12),
   DARK_OAK_BARK(Material.LOG_2, 13),
   ACACIA_STAIRS(Material.ACACIA_STAIRS),
   DARK_OAK_STAIRS(Material.DARK_OAK_STAIRS),
   SLIME_BLOCK(Material.SLIME_BLOCK),
   BARRIER(Material.BARRIER),
   IRON_TRAPDOOR(Material.IRON_TRAPDOOR),
   PRISMARINE(Material.PRISMARINE),
   PRISMARINE_BRICKS(Material.PRISMARINE, 1),
   DARK_PRISMARINE(Material.PRISMARINE, 2),
   SEA_LANTERN(Material.SEA_LANTERN),
   HAY_BLOCK(Material.HAY_BLOCK),
   WHITE_CARPET(Material.CARPET),
   ORANGE_CARPET(Material.CARPET, 1),
   MAGENTA_CARPET(Material.CARPET, 2),
   LIGHT_BLUE_CARPET(Material.CARPET, 3),
   YELLOW_CARPET(Material.CARPET, 4),
   LIME_CARPET(Material.CARPET, 5),
   PINK_CARPET(Material.CARPET, 6),
   GRAY_CARPET(Material.CARPET, 7),
   LIGHT_GRAY_CARPET(Material.CARPET, 8),
   CYAN_CARPET(Material.CARPET, 9),
   PURPLE_CARPET(Material.CARPET, 10),
   BLUE_CARPET(Material.CARPET, 11),
   BROWN_CARPET(Material.CARPET, 12),
   GREEN_CARPET(Material.CARPET, 13),
   RED_CARPET(Material.CARPET, 14),
   BLACK_CARPET(Material.CARPET, 15),
   HARDENED_CLAY(Material.HARD_CLAY),
   COAL_BLOCK(Material.COAL_BLOCK),
   SUNFLOWER(Material.DOUBLE_PLANT),
   LILAC(Material.DOUBLE_PLANT, 1),
   LARGE_GRASS(Material.DOUBLE_PLANT, 2),
   LARGE_FERN(Material.DOUBLE_PLANT, 3),
   ROSE_BUSH(Material.DOUBLE_PLANT, 4),
   PEONY(Material.DOUBLE_PLANT, 5),
   STANDING_BANNER(Material.STANDING_BANNER),
   WALL_BANNER(Material.WALL_BANNER),
   NIGHTLIGHT_SENSOR(Material.DAYLIGHT_DETECTOR_INVERTED),
   RED_SANDSTONE(Material.RED_SANDSTONE),
   CHISELED_RED_SANDSTONE(Material.RED_SANDSTONE, 1),
   SMOOTH_RED_SANDSTONE(Material.RED_SANDSTONE, 2),
   RED_SANDSTONE_STAIRS(Material.RED_SANDSTONE_STAIRS),
   DOUBLE_RED_SANDSTONE_SLAB(Material.DOUBLE_STONE_SLAB2),
   RED_SANDSTONE_SLAB(Material.STONE_SLAB2),
   SPRUCE_FENCE_GATE(Material.SPRUCE_FENCE_GATE),
   BIRCH_FENCE_GATE(Material.BIRCH_FENCE_GATE),
   JUNGLE_FENCE_GATE(Material.JUNGLE_FENCE_GATE),
   DARK_OAK_FENCE_GATE(Material.DARK_OAK_FENCE_GATE),
   ACACIA_FENCE_GATE(Material.ACACIA_FENCE_GATE),
   SPRUCE_FENCE(Material.SPRUCE_FENCE),
   BIRCH_FENCE(Material.BIRCH_FENCE),
   JUNGLE_FENCE(Material.JUNGLE_FENCE),
   DARK_OAK_FENCE(Material.DARK_OAK_FENCE),
   ACACIA_FENCE(Material.ACACIA_FENCE),
   SPRUCE_DOOR(Material.SPRUCE_DOOR),
   BIRCH_DOOR(Material.BIRCH_DOOR),
   JUNGLE_DOOR(Material.JUNGLE_DOOR),
   ACACIA_DOOR(Material.ACACIA_DOOR),
   DARK_OAK_DOOR(Material.DARK_OAK_DOOR),
   
   // Item section
   
   IRON_SHOVEL(Material.IRON_SPADE),
   IRON_PICKAXE(Material.IRON_PICKAXE),
   IRON_AXE(Material.IRON_AXE),
   FLINT_AND_STEEL(Material.FLINT_AND_STEEL),
   APPLE(Material.APPLE),
   BOW(Material.BOW),
   ARROW(Material.ARROW),
   COAL(Material.COAL),
   CHARCOAL(Material.COAL, 1),
   DIAMOND(Material.DIAMOND),
   IRON_INGOT(Material.IRON_INGOT),
   GOLD_INGOT(Material.GOLD_INGOT),
   IRON_SWORD(Material.IRON_SWORD),
   WOOD_SWORD(Material.WOOD_SWORD),
   WOOD_SHOVEL(Material.WOOD_SPADE),
   WOOD_PICKAXE(Material.WOOD_PICKAXE),
   WOOD_AXE(Material.WOOD_AXE),
   STONE_SWORD(Material.STONE_SWORD),
   STONE_SHOVEL(Material.STONE_SPADE),
   STONE_PICKAXE(Material.STONE_PICKAXE),
   STONE_AXE(Material.STONE_AXE),
   DIAMOND_SWORD(Material.DIAMOND_SWORD),
   DIAMOND_SHOVEL(Material.DIAMOND_SPADE),
   DIAMOND_PICKAXE(Material.DIAMOND_PICKAXE),
   DIAMOND_AXE(Material.DIAMOND_AXE),
   STICK(Material.STICK),
   BOWL(Material.BOWL),
   MUSHROOM_SOUP(Material.MUSHROOM_SOUP),
   GOLD_SWORD(Material.GOLD_SWORD),
   GOLD_SHOVEL(Material.GOLD_SPADE),
   GOLD_PICKAXE(Material.GOLD_PICKAXE),
   GOLD_AXE(Material.GOLD_AXE),
   STRING(Material.STRING),
   FEATHER(Material.FEATHER),
   GUNPOWDER(Material.SULPHUR),
   WOOD_HOE(Material.WOOD_HOE),
   STONE_HOE(Material.STONE_HOE),
   IRON_HOE(Material.IRON_HOE),
   DIAMOND_HOE(Material.DIAMOND_HOE),
   GOLD_HOE(Material.GOLD_HOE),
   WHEAT_SEEDS(Material.SEEDS),
   WHEAT(Material.WHEAT),
   BREAD(Material.BREAD),
   LEATHER_HELMET(Material.LEATHER_HELMET),
   LEATHER_CHESTPLATE(Material.LEATHER_CHESTPLATE),
   LEATHER_LEGGINGS(Material.LEATHER_LEGGINGS),
   LEATHER_BOOTS(Material.LEATHER_BOOTS),
   CHAINMAIL_HELMET(Material.CHAINMAIL_HELMET),
   CHAINMAIL_CHESTPLATE(Material.CHAINMAIL_CHESTPLATE),
   CHAINMAIL_LEGGINGS(Material.CHAINMAIL_LEGGINGS),
   CHAINMAIL_BOOTS(Material.CHAINMAIL_BOOTS),
   IRON_HELMET(Material.IRON_HELMET),
   IRON_CHESTPLATE(Material.IRON_CHESTPLATE),
   IRON_LEGGINGS(Material.IRON_LEGGINGS),
   IRON_BOOTS(Material.IRON_BOOTS),
   DIAMOND_HELMET(Material.DIAMOND_HELMET),
   DIAMOND_CHESTPLATE(Material.DIAMOND_CHESTPLATE),
   DIAMOND_LEGGINGS(Material.DIAMOND_LEGGINGS),
   DIAMOND_BOOTS(Material.DIAMOND_BOOTS),
   GOLD_HELMET(Material.GOLD_HELMET),
   GOLD_CHESTPLATE(Material.GOLD_CHESTPLATE),
   GOLD_LEGGINGS(Material.GOLD_LEGGINGS),
   GOLD_BOOTS(Material.GOLD_BOOTS),
   FLINT(Material.FLINT),
   RAW_PORK(Material.PORK),
   COOKED_PORK(Material.GRILLED_PORK),
   PAINTING(Material.PAINTING),
   GOLDEN_APPLE(Material.GOLDEN_APPLE),
   ENCHANTED_GOLDEN_APPLE(Material.GOLDEN_APPLE, 1),
   SIGN(Material.SIGN),
   WOOD_DOOR(Material.WOOD_DOOR),
   BUCKET(Material.BUCKET),
   WATER_BUCKET(Material.WATER_BUCKET),
   LAVA_BUCKET(Material.LAVA_BUCKET),
   MINECART(Material.MINECART),
   SADDLE(Material.SADDLE),
   IRON_DOOR(Material.IRON_DOOR),
   REDSTONE(Material.REDSTONE),
   SNOW_BALL(Material.SNOW_BALL),
   BOAT(Material.BOAT),
   LEATHER(Material.LEATHER),
   MILK_BUCKET(Material.MILK_BUCKET),
   CLAY_BRICK(Material.CLAY_BRICK),
   CLAY_BALL(Material.CLAY_BALL),
   SUGAR_CANE(Material.SUGAR_CANE),
   PAPER(Material.PAPER),
   BOOK(Material.BOOK),
   SLIME_BALL(Material.SLIME_BALL),
   CHEST_MINECART(Material.STORAGE_MINECART),
   FURNACE_MINECART(Material.POWERED_MINECART),
   EGG(Material.EGG),
   COMPASS(Material.COMPASS),
   FISHING_ROD(Material.FISHING_ROD),
   CLOCK(Material.WATCH),
   GLOWSTONE_DUST(Material.GLOWSTONE_DUST),
   RAW_FISH(Material.RAW_FISH),
   RAW_SALMON(Material.RAW_FISH, 1),
   CLOWNFISH(Material.RAW_FISH, 2),
   PUFFERFISH(Material.RAW_FISH, 3),
   COOKED_FISH(Material.COOKED_FISH),
   COOKED_SALMON(Material.COOKED_FISH, 1),
   INK_SACK(Material.INK_SACK),
   RED_DYE(Material.INK_SACK, 1),
   GREEN_DYE(Material.INK_SACK, 2),
   COCOA_BEANS(Material.INK_SACK, 3),
   LAPIS_LAZULLI(Material.INK_SACK, 4),
   PURPLE_DYE(Material.INK_SACK, 5),
   CYAN_DYE(Material.INK_SACK, 6),
   LIGHT_GRAY_DYE(Material.INK_SACK, 7),
   GRAY_DYE(Material.INK_SACK, 8),
   PINK_DYE(Material.INK_SACK, 9),
   LIME_DYE(Material.INK_SACK, 10),
   YELLOW_DYE(Material.INK_SACK, 11),
   LIGHT_BLUE_DYE(Material.INK_SACK, 12),
   MAGENTA_DYE(Material.INK_SACK, 13),
   ORANGE_DYE(Material.INK_SACK, 14),
   BONE_MEAL(Material.INK_SACK, 15),
   BONE(Material.BONE),
   SUGAR(Material.SUGAR),
   CAKE(Material.CAKE),
   BED(Material.BED),
   REPEATER(Material.DIODE),
   COOKIE(Material.COOKIE),
   MAP(Material.MAP),
   SHEARS(Material.SHEARS),
   MELON(Material.MELON),
   PUMPKIN_SEEDS(Material.PUMPKIN_SEEDS),
   MELON_SEEDS(Material.MELON_SEEDS),
   RAW_BEEF(Material.RAW_BEEF),
   COOKED_BEEF(Material.COOKED_BEEF),
   RAW_CHICKEN(Material.RAW_CHICKEN),
   COOKED_CHICKEN(Material.COOKED_CHICKEN),
   ROTTEN_FLESH(Material.ROTTEN_FLESH),
   ENDER_PEARL(Material.ENDER_PEARL),
   BLAZE_ROD(Material.BLAZE_ROD),
   GHAST_TEAR(Material.GHAST_TEAR),
   GOLD_NUGGET(Material.GOLD_NUGGET),
   NETHER_WART(Material.NETHER_STALK),
   POTION(Material.POTION),
   GLASS_BOTTLE(Material.GLASS_BOTTLE),
   SPIDER_EYE(Material.SPIDER_EYE),
   FERMENTED_SPIDER_EYE(Material.FERMENTED_SPIDER_EYE),
   BLAZE_POWDER(Material.BLAZE_POWDER),
   MAGMA_CREAM(Material.MAGMA_CREAM),
   BREWING_STAND_ITEM(Material.BREWING_STAND_ITEM),
   CAULDRON_ITEM(Material.CAULDRON_ITEM),
   ENDER_EYE(Material.EYE_OF_ENDER),
   SHINY_MELON(Material.SPECKLED_MELON),
   
   // Monsters eggs section
   
   MONSTER_EGG(Material.MONSTER_EGG),
   CREEPER_EGG(Material.MONSTER_EGG, 50),
   SKELETON_EGG(Material.MONSTER_EGG, 51),
   SPIDER_EGG(Material.MONSTER_EGG, 52),
   ZOMBIE_EGG(Material.MONSTER_EGG, 54),
   SLIME_EGG(Material.MONSTER_EGG, 55),
   GHAST_EGG(Material.MONSTER_EGG, 56),
   PIGMAN_EGG(Material.MONSTER_EGG, 57),
   ENDERMAN_EGG(Material.MONSTER_EGG, 58),
   CAVE_SPIDER_EGG(Material.MONSTER_EGG, 59),
   SILVERFISH_EGG(Material.MONSTER_EGG, 60),
   BLAZE_EGG(Material.MONSTER_EGG, 61),
   MAGMA_CUBE_EGG(Material.MONSTER_EGG, 62),
   BAT_EGG(Material.MONSTER_EGG, 65),
   WITCH_EGG(Material.MONSTER_EGG, 66),
   ENDERMITE_EGG(Material.MONSTER_EGG, 67),
   GUARDIAN_EGG(Material.MONSTER_EGG, 68),
   PIG_EGG(Material.MONSTER_EGG, 90),
   SHEEP_EGG(Material.MONSTER_EGG, 91),
   COW_EGG(Material.MONSTER_EGG, 92),
   CHICKEN_EGG(Material.MONSTER_EGG, 93),
   SQUID_EGG(Material.MONSTER_EGG, 94),
   WOLF_EGG(Material.MONSTER_EGG, 95),
   MUSHROOM_COW_EGG(Material.MONSTER_EGG, 96),
   OCELOT_EGG(Material.MONSTER_EGG, 98),
   HORSE_EGG(Material.MONSTER_EGG, 100),
   RABBIT_EGG(Material.MONSTER_EGG, 101),
   VILLAGER_EGG(Material.MONSTER_EGG, 120),
   
   EXP_BOTTLE(Material.EXP_BOTTLE),
   FIREBALL(Material.FIREBALL),
   BOOK_AND_QUILL(Material.BOOK_AND_QUILL),
   WRITTEN_BOOK(Material.WRITTEN_BOOK),
   EMERALD(Material.EMERALD),
   ITEM_FRAME(Material.ITEM_FRAME),
   FLOWER_POT_ITEM(Material.FLOWER_POT_ITEM),
   CARROT(Material.CARROT_ITEM),
   POTATO(Material.POTATO_ITEM),
   BAKED_POTATO(Material.BAKED_POTATO),
   POISONOUS_POTATO(Material.POISONOUS_POTATO),
   EMPTY_MAP(Material.EMPTY_MAP),
   GOLDEN_CARROT(Material.GOLDEN_CARROT),
   SKELETON_SKULL(Material.SKULL_ITEM),
   WITHER_SKELETON_SKULL(Material.SKULL_ITEM, 1),
   ZOMBIE_SKULL(Material.SKULL_ITEM, 2),
   PLAYER_SKULL(Material.SKULL_ITEM, 3),
   CREEPER_SKULL(Material.SKULL_ITEM, 4),
   CARROT_ON_STICK(Material.CARROT_STICK),
   NETHER_STAR(Material.NETHER_STAR),
   PUMPKIN_PIE(Material.PUMPKIN_PIE),
   FIREWORK(Material.FIREWORK),
   FIREWORK_CHARGE(Material.FIREWORK_CHARGE),
   ENCHANTED_BOOK(Material.ENCHANTED_BOOK),
   COMPARATOR(Material.REDSTONE_COMPARATOR),
   NETHER_BRICK_ITEM(Material.NETHER_BRICK_ITEM),
   QUARTZ(Material.QUARTZ),
   TNT_MINECART(Material.EXPLOSIVE_MINECART),
   HOPPER_MINECART(Material.HOPPER_MINECART),
   PRISMARINE_SHARD(Material.PRISMARINE_SHARD),
   PRISMARINE_CRYSTALS(Material.PRISMARINE_CRYSTALS),
   RAW_RABBIT(Material.RABBIT),
   COOKED_RABBIT(Material.COOKED_RABBIT),
   RABBIT_STEW(Material.RABBIT_STEW),
   RABBIT_FOOT(Material.RABBIT_FOOT),
   RABBIT_HIDE(Material.RABBIT_HIDE),
   ARMOR_STAND(Material.ARMOR_STAND),
   IRON_HORSE_ARMOR(Material.IRON_BARDING),
   GOLD_HORSE_ARMOR(Material.GOLD_BARDING),
   DIAMOND_HORSE_ARMOR(Material.DIAMOND_BARDING),
   LEASH(Material.LEASH),
   NAMETAG(Material.NAME_TAG),
   COMMAND_BLOCK_MINECART(Material.COMMAND_MINECART),
   RAW_MUTTON(Material.MUTTON),
   COOKED_MUTTON(Material.COOKED_MUTTON),
   WHITE_BANNER(Material.BANNER, 15),
   ORANGE_BANNER(Material.BANNER, 14),
   MAGENTA_BANNER(Material.BANNER, 13),
   LIGHT_BLUE_BANNER(Material.BANNER, 12),
   YELLOW_BANNER(Material.BANNER, 11),
   LIME_BANNER(Material.BANNER, 10),
   PINK_BANNER(Material.BANNER, 9),
   GRAY_BANNER(Material.BANNER, 8),
   LIGHT_GRAY_BANNER(Material.BANNER, 7),
   CYAN_BANNER(Material.BANNER, 6),
   PURPLE_BANNER(Material.BANNER, 5),
   BLUE_BANNER(Material.BANNER, 4),
   BROWN_BANNER(Material.BANNER, 3),
   GREEN_BANNER(Material.BANNER, 2),
   RED_BANNER(Material.BANNER, 1),
   BLACK_BANNER(Material.BANNER, 0),
   SPRUCE_DOOR_ITEM(Material.SPRUCE_DOOR_ITEM),
   BIRCH_DOOR_ITEM(Material.BIRCH_DOOR_ITEM),
   JUNGLE_DOOR_ITEM(Material.JUNGLE_DOOR_ITEM),
   ACACIA_DOOR_ITEM(Material.ACACIA_DOOR_ITEM),
   DARK_OAK_DOOR_ITEM(Material.DARK_OAK_DOOR_ITEM),
   RECORD_13(Material.GOLD_RECORD),
   CAT_RECORD(Material.GREEN_RECORD),
   BLOCKS_RECORD(Material.RECORD_3),
   CHIRP_RECORD(Material.RECORD_4),
   FAR_RECORD(Material.RECORD_5),
   MALL_RECORD(Material.RECORD_7),
   MELLOHI_RECORD(Material.RECORD_8),
   STAL_RECORD(Material.RECORD_9),
   STRAD_RECORD(Material.RECORD_10),
   WARD_RECORD(Material.RECORD_11),
   RECORD_11(Material.RECORD_12);
   
   /**
    * Returns the id value of this material object.
    */
   val id = type.id
   
   /**
    * Returns the material data of this material object.
    */
   val data = newData(type, subdata)
   
   /**
    * Returns the max stack size of this material object.
    */
   val maxStack = type.maxStackSize
   
   /**
    * Returns the max durability of this material object.
    */
   val durability = type.maxDurability.toInt()
   
   /**
    * Returns if this material object contains subdata.
    */
   val hasSubdata get() = subdata != 0
   
   /**
    * Verify if this material object is a plantation
    */
   val isPlantation get() = name.endsWith("CROPS")
   
   /**
    * Verify if this material object is a monster egg
    */
   val isMonsterEgg get() = id == 383
   
   /**
    * Verify if this material object is a block
    */
   val isBlock get() = type.isBlock
   
   /**
    * Verify if this material object is a item
    */
   val isItem get() = !isBlock
   
   /**
    * Verify if this material object is burnable
    */
   val isBurnable get() = type.isBurnable
   
   /**
    * Verify if this material object is edible
    */
   val isEdible get() = type.isEdible
   
   /**
    * Verify if this material object is flammable
    */
   val isFlammable get() = type.isFlammable
   
   /**
    * Verify if this material object is a record
    */
   val isRecord get() = type.isRecord
   
   /**
    * Verify if this material object is solid
    */
   val isSolid get() = type.isSolid
   
   /**
    * Verify if this material object is occluding
    */
   val isOccluding get() = type.isOccluding
   
   /**
    * Verify if this material object is transparent
    */
   val isTransparent get() = type.isTransparent
   
   /**
    * Verify if this material object has gravity
    */
   val hasGravity get() = type.hasGravity()
   
   /**
    * Converts this material object to a item stack with the specified [amount].
    */
   fun toItem(amount: Int = 1) = newItem(data, amount)
   
   override fun toString(): String = "($name) $id:$subdata"
   
   companion object : Set by EnumSet.allOf(Materials::class.java) {
      internal val BY_DATA: BiMap = EnumHashBiMap.create(Materials::class.java)
      
      init {
         for (value in values()) {
            BY_DATA[value] = value.id to value.subdata
         }
      }
      
      /**
       * Gets a material object from the specified [data].
       */
      @JvmStatic
      fun from(data: MaterialData): Materials = from(data.itemTypeId, data.data.toInt())
      
      /**
       * Gets a material object from the specified [material] and [data].
       */
      @JvmStatic
      fun from(material: Material, data: Int): Materials = from(material.id, data)
      
      /**
       * Gets a material object from the specified [id] and [data].
       */
      @JvmStatic
      fun from(id: Int, data: Int): Materials = BY_DATA.inverse()[id to data] ?: AIR
      
      /**
       * Parses the given string to a material object or [AIR] if no material has found with the given string.
       */
      fun parse(value: String): Materials {
         if (value.isBlank())
            return AIR
         
         // can be material name, id or material data representation
         // example: "STONE" or "1:0"
         return runCatching { valueOf(value) }.recoverCatching {
            val split = value.split(':', limit = 2)
            from(split[0].toInt(), split[1].toInt())
         }.getOrDefault(AIR)
      }
      
      /**
       * Parses the given string to a material object or nulls if no material has found with the given string.
       */
      fun parseOrNull(value: String): Materials? {
         if (value.isBlank())
            return null
         
         return runCatching { valueOf(value) }.recoverCatching {
            val split = value.split(':', limit = 2)
            from(split[0].toInt(), split[1].toInt())
         }.getOrNull()
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy