Minestom/src/main/java/net/minestom/server/instance/block/Block.java

1387 lines
36 KiB
Java

package net.minestom.server.instance.block;
import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public enum Block {
AIR,
STONE,
GRANITE,
POLISHED_GRANITE,
DIORITE,
POLISHED_DIORITE,
ANDESITE,
POLISHED_ANDESITE,
GRASS_BLOCK,
DIRT,
COARSE_DIRT,
PODZOL,
COBBLESTONE,
OAK_PLANKS,
SPRUCE_PLANKS,
BIRCH_PLANKS,
JUNGLE_PLANKS,
ACACIA_PLANKS,
DARK_OAK_PLANKS,
OAK_SAPLING,
SPRUCE_SAPLING,
BIRCH_SAPLING,
JUNGLE_SAPLING,
ACACIA_SAPLING,
DARK_OAK_SAPLING,
BEDROCK,
WATER,
LAVA,
SAND,
RED_SAND,
GRAVEL,
GOLD_ORE,
IRON_ORE,
COAL_ORE,
OAK_LOG,
SPRUCE_LOG,
BIRCH_LOG,
JUNGLE_LOG,
ACACIA_LOG,
DARK_OAK_LOG,
STRIPPED_SPRUCE_LOG,
STRIPPED_BIRCH_LOG,
STRIPPED_JUNGLE_LOG,
STRIPPED_ACACIA_LOG,
STRIPPED_DARK_OAK_LOG,
STRIPPED_OAK_LOG,
OAK_WOOD,
SPRUCE_WOOD,
BIRCH_WOOD,
JUNGLE_WOOD,
ACACIA_WOOD,
DARK_OAK_WOOD,
STRIPPED_OAK_WOOD,
STRIPPED_SPRUCE_WOOD,
STRIPPED_BIRCH_WOOD,
STRIPPED_JUNGLE_WOOD,
STRIPPED_ACACIA_WOOD,
STRIPPED_DARK_OAK_WOOD,
OAK_LEAVES,
SPRUCE_LEAVES,
BIRCH_LEAVES,
JUNGLE_LEAVES,
ACACIA_LEAVES,
DARK_OAK_LEAVES,
SPONGE,
WET_SPONGE,
GLASS,
LAPIS_ORE,
LAPIS_BLOCK,
DISPENSER,
SANDSTONE,
CHISELED_SANDSTONE,
CUT_SANDSTONE,
NOTE_BLOCK,
WHITE_BED,
ORANGE_BED,
MAGENTA_BED,
LIGHT_BLUE_BED,
YELLOW_BED,
LIME_BED,
PINK_BED,
GRAY_BED,
LIGHT_GRAY_BED,
CYAN_BED,
PURPLE_BED,
BLUE_BED,
BROWN_BED,
GREEN_BED,
RED_BED,
BLACK_BED,
POWERED_RAIL,
DETECTOR_RAIL,
STICKY_PISTON,
COBWEB,
GRASS,
FERN,
DEAD_BUSH,
SEAGRASS,
TALL_SEAGRASS,
PISTON,
PISTON_HEAD,
WHITE_WOOL,
ORANGE_WOOL,
MAGENTA_WOOL,
LIGHT_BLUE_WOOL,
YELLOW_WOOL,
LIME_WOOL,
PINK_WOOL,
GRAY_WOOL,
LIGHT_GRAY_WOOL,
CYAN_WOOL,
PURPLE_WOOL,
BLUE_WOOL,
BROWN_WOOL,
GREEN_WOOL,
RED_WOOL,
BLACK_WOOL,
MOVING_PISTON,
DANDELION,
POPPY,
BLUE_ORCHID,
ALLIUM,
AZURE_BLUET,
RED_TULIP,
ORANGE_TULIP,
WHITE_TULIP,
PINK_TULIP,
OXEYE_DAISY,
CORNFLOWER,
WITHER_ROSE,
LILY_OF_THE_VALLEY,
BROWN_MUSHROOM,
RED_MUSHROOM,
GOLD_BLOCK,
IRON_BLOCK,
BRICKS,
TNT,
BOOKSHELF,
MOSSY_COBBLESTONE,
OBSIDIAN,
TORCH,
WALL_TORCH,
FIRE,
SPAWNER,
OAK_STAIRS,
CHEST,
REDSTONE_WIRE,
DIAMOND_ORE,
DIAMOND_BLOCK,
CRAFTING_TABLE,
WHEAT,
FARMLAND,
FURNACE,
OAK_SIGN,
SPRUCE_SIGN,
BIRCH_SIGN,
ACACIA_SIGN,
JUNGLE_SIGN,
DARK_OAK_SIGN,
OAK_DOOR,
LADDER,
RAIL,
COBBLESTONE_STAIRS,
OAK_WALL_SIGN,
SPRUCE_WALL_SIGN,
BIRCH_WALL_SIGN,
ACACIA_WALL_SIGN,
JUNGLE_WALL_SIGN,
DARK_OAK_WALL_SIGN,
LEVER,
STONE_PRESSURE_PLATE,
IRON_DOOR,
OAK_PRESSURE_PLATE,
SPRUCE_PRESSURE_PLATE,
BIRCH_PRESSURE_PLATE,
JUNGLE_PRESSURE_PLATE,
ACACIA_PRESSURE_PLATE,
DARK_OAK_PRESSURE_PLATE,
REDSTONE_ORE,
REDSTONE_TORCH,
REDSTONE_WALL_TORCH,
STONE_BUTTON,
SNOW,
ICE,
SNOW_BLOCK,
CACTUS,
CLAY,
SUGAR_CANE,
JUKEBOX,
OAK_FENCE,
PUMPKIN,
NETHERRACK,
SOUL_SAND,
GLOWSTONE,
NETHER_PORTAL,
CARVED_PUMPKIN,
JACK_O_LANTERN,
CAKE,
REPEATER,
WHITE_STAINED_GLASS,
ORANGE_STAINED_GLASS,
MAGENTA_STAINED_GLASS,
LIGHT_BLUE_STAINED_GLASS,
YELLOW_STAINED_GLASS,
LIME_STAINED_GLASS,
PINK_STAINED_GLASS,
GRAY_STAINED_GLASS,
LIGHT_GRAY_STAINED_GLASS,
CYAN_STAINED_GLASS,
PURPLE_STAINED_GLASS,
BLUE_STAINED_GLASS,
BROWN_STAINED_GLASS,
GREEN_STAINED_GLASS,
RED_STAINED_GLASS,
BLACK_STAINED_GLASS,
OAK_TRAPDOOR,
SPRUCE_TRAPDOOR,
BIRCH_TRAPDOOR,
JUNGLE_TRAPDOOR,
ACACIA_TRAPDOOR,
DARK_OAK_TRAPDOOR,
STONE_BRICKS,
MOSSY_STONE_BRICKS,
CRACKED_STONE_BRICKS,
CHISELED_STONE_BRICKS,
INFESTED_STONE,
INFESTED_COBBLESTONE,
INFESTED_STONE_BRICKS,
INFESTED_MOSSY_STONE_BRICKS,
INFESTED_CRACKED_STONE_BRICKS,
INFESTED_CHISELED_STONE_BRICKS,
BROWN_MUSHROOM_BLOCK,
RED_MUSHROOM_BLOCK,
MUSHROOM_STEM,
IRON_BARS,
GLASS_PANE,
MELON,
ATTACHED_PUMPKIN_STEM,
ATTACHED_MELON_STEM,
PUMPKIN_STEM,
MELON_STEM,
VINE,
OAK_FENCE_GATE,
BRICK_STAIRS,
STONE_BRICK_STAIRS,
MYCELIUM,
LILY_PAD,
NETHER_BRICKS,
NETHER_BRICK_FENCE,
NETHER_BRICK_STAIRS,
NETHER_WART,
ENCHANTING_TABLE,
BREWING_STAND,
CAULDRON,
END_PORTAL,
END_PORTAL_FRAME,
END_STONE,
DRAGON_EGG,
REDSTONE_LAMP,
COCOA,
SANDSTONE_STAIRS,
EMERALD_ORE,
ENDER_CHEST,
TRIPWIRE_HOOK,
TRIPWIRE,
EMERALD_BLOCK,
SPRUCE_STAIRS,
BIRCH_STAIRS,
JUNGLE_STAIRS,
COMMAND_BLOCK,
BEACON,
COBBLESTONE_WALL,
MOSSY_COBBLESTONE_WALL,
FLOWER_POT,
POTTED_OAK_SAPLING,
POTTED_SPRUCE_SAPLING,
POTTED_BIRCH_SAPLING,
POTTED_JUNGLE_SAPLING,
POTTED_ACACIA_SAPLING,
POTTED_DARK_OAK_SAPLING,
POTTED_FERN,
POTTED_DANDELION,
POTTED_POPPY,
POTTED_BLUE_ORCHID,
POTTED_ALLIUM,
POTTED_AZURE_BLUET,
POTTED_RED_TULIP,
POTTED_ORANGE_TULIP,
POTTED_WHITE_TULIP,
POTTED_PINK_TULIP,
POTTED_OXEYE_DAISY,
POTTED_CORNFLOWER,
POTTED_LILY_OF_THE_VALLEY,
POTTED_WITHER_ROSE,
POTTED_RED_MUSHROOM,
POTTED_BROWN_MUSHROOM,
POTTED_DEAD_BUSH,
POTTED_CACTUS,
CARROTS,
POTATOES,
OAK_BUTTON,
SPRUCE_BUTTON,
BIRCH_BUTTON,
JUNGLE_BUTTON,
ACACIA_BUTTON,
DARK_OAK_BUTTON,
SKELETON_SKULL,
SKELETON_WALL_SKULL,
WITHER_SKELETON_SKULL,
WITHER_SKELETON_WALL_SKULL,
ZOMBIE_HEAD,
ZOMBIE_WALL_HEAD,
PLAYER_HEAD,
PLAYER_WALL_HEAD,
CREEPER_HEAD,
CREEPER_WALL_HEAD,
DRAGON_HEAD,
DRAGON_WALL_HEAD,
ANVIL,
CHIPPED_ANVIL,
DAMAGED_ANVIL,
TRAPPED_CHEST,
LIGHT_WEIGHTED_PRESSURE_PLATE,
HEAVY_WEIGHTED_PRESSURE_PLATE,
COMPARATOR,
DAYLIGHT_DETECTOR,
REDSTONE_BLOCK,
NETHER_QUARTZ_ORE,
HOPPER,
QUARTZ_BLOCK,
CHISELED_QUARTZ_BLOCK,
QUARTZ_PILLAR,
QUARTZ_STAIRS,
ACTIVATOR_RAIL,
DROPPER,
WHITE_TERRACOTTA,
ORANGE_TERRACOTTA,
MAGENTA_TERRACOTTA,
LIGHT_BLUE_TERRACOTTA,
YELLOW_TERRACOTTA,
LIME_TERRACOTTA,
PINK_TERRACOTTA,
GRAY_TERRACOTTA,
LIGHT_GRAY_TERRACOTTA,
CYAN_TERRACOTTA,
PURPLE_TERRACOTTA,
BLUE_TERRACOTTA,
BROWN_TERRACOTTA,
GREEN_TERRACOTTA,
RED_TERRACOTTA,
BLACK_TERRACOTTA,
WHITE_STAINED_GLASS_PANE,
ORANGE_STAINED_GLASS_PANE,
MAGENTA_STAINED_GLASS_PANE,
LIGHT_BLUE_STAINED_GLASS_PANE,
YELLOW_STAINED_GLASS_PANE,
LIME_STAINED_GLASS_PANE,
PINK_STAINED_GLASS_PANE,
GRAY_STAINED_GLASS_PANE,
LIGHT_GRAY_STAINED_GLASS_PANE,
CYAN_STAINED_GLASS_PANE,
PURPLE_STAINED_GLASS_PANE,
BLUE_STAINED_GLASS_PANE,
BROWN_STAINED_GLASS_PANE,
GREEN_STAINED_GLASS_PANE,
RED_STAINED_GLASS_PANE,
BLACK_STAINED_GLASS_PANE,
ACACIA_STAIRS,
DARK_OAK_STAIRS,
SLIME_BLOCK,
BARRIER,
IRON_TRAPDOOR,
PRISMARINE,
PRISMARINE_BRICKS,
DARK_PRISMARINE,
PRISMARINE_STAIRS,
PRISMARINE_BRICK_STAIRS,
DARK_PRISMARINE_STAIRS,
PRISMARINE_SLAB,
PRISMARINE_BRICK_SLAB,
DARK_PRISMARINE_SLAB,
SEA_LANTERN,
HAY_BLOCK,
WHITE_CARPET,
ORANGE_CARPET,
MAGENTA_CARPET,
LIGHT_BLUE_CARPET,
YELLOW_CARPET,
LIME_CARPET,
PINK_CARPET,
GRAY_CARPET,
LIGHT_GRAY_CARPET,
CYAN_CARPET,
PURPLE_CARPET,
BLUE_CARPET,
BROWN_CARPET,
GREEN_CARPET,
RED_CARPET,
BLACK_CARPET,
TERRACOTTA,
COAL_BLOCK,
PACKED_ICE,
SUNFLOWER,
LILAC,
ROSE_BUSH,
PEONY,
TALL_GRASS,
LARGE_FERN,
WHITE_BANNER,
ORANGE_BANNER,
MAGENTA_BANNER,
LIGHT_BLUE_BANNER,
YELLOW_BANNER,
LIME_BANNER,
PINK_BANNER,
GRAY_BANNER,
LIGHT_GRAY_BANNER,
CYAN_BANNER,
PURPLE_BANNER,
BLUE_BANNER,
BROWN_BANNER,
GREEN_BANNER,
RED_BANNER,
BLACK_BANNER,
WHITE_WALL_BANNER,
ORANGE_WALL_BANNER,
MAGENTA_WALL_BANNER,
LIGHT_BLUE_WALL_BANNER,
YELLOW_WALL_BANNER,
LIME_WALL_BANNER,
PINK_WALL_BANNER,
GRAY_WALL_BANNER,
LIGHT_GRAY_WALL_BANNER,
CYAN_WALL_BANNER,
PURPLE_WALL_BANNER,
BLUE_WALL_BANNER,
BROWN_WALL_BANNER,
GREEN_WALL_BANNER,
RED_WALL_BANNER,
BLACK_WALL_BANNER,
RED_SANDSTONE,
CHISELED_RED_SANDSTONE,
CUT_RED_SANDSTONE,
RED_SANDSTONE_STAIRS,
OAK_SLAB,
SPRUCE_SLAB,
BIRCH_SLAB,
JUNGLE_SLAB,
ACACIA_SLAB,
DARK_OAK_SLAB,
STONE_SLAB,
SMOOTH_STONE_SLAB,
SANDSTONE_SLAB,
CUT_SANDSTONE_SLAB,
PETRIFIED_OAK_SLAB,
COBBLESTONE_SLAB,
BRICK_SLAB,
STONE_BRICK_SLAB,
NETHER_BRICK_SLAB,
QUARTZ_SLAB,
RED_SANDSTONE_SLAB,
CUT_RED_SANDSTONE_SLAB,
PURPUR_SLAB,
SMOOTH_STONE,
SMOOTH_SANDSTONE,
SMOOTH_QUARTZ,
SMOOTH_RED_SANDSTONE,
SPRUCE_FENCE_GATE,
BIRCH_FENCE_GATE,
JUNGLE_FENCE_GATE,
ACACIA_FENCE_GATE,
DARK_OAK_FENCE_GATE,
SPRUCE_FENCE,
BIRCH_FENCE,
JUNGLE_FENCE,
ACACIA_FENCE,
DARK_OAK_FENCE,
SPRUCE_DOOR,
BIRCH_DOOR,
JUNGLE_DOOR,
ACACIA_DOOR,
DARK_OAK_DOOR,
END_ROD,
CHORUS_PLANT,
CHORUS_FLOWER,
PURPUR_BLOCK,
PURPUR_PILLAR,
PURPUR_STAIRS,
END_STONE_BRICKS,
BEETROOTS,
GRASS_PATH,
END_GATEWAY,
REPEATING_COMMAND_BLOCK,
CHAIN_COMMAND_BLOCK,
FROSTED_ICE,
MAGMA_BLOCK,
NETHER_WART_BLOCK,
RED_NETHER_BRICKS,
BONE_BLOCK,
STRUCTURE_VOID,
OBSERVER,
SHULKER_BOX,
WHITE_SHULKER_BOX,
ORANGE_SHULKER_BOX,
MAGENTA_SHULKER_BOX,
LIGHT_BLUE_SHULKER_BOX,
YELLOW_SHULKER_BOX,
LIME_SHULKER_BOX,
PINK_SHULKER_BOX,
GRAY_SHULKER_BOX,
LIGHT_GRAY_SHULKER_BOX,
CYAN_SHULKER_BOX,
PURPLE_SHULKER_BOX,
BLUE_SHULKER_BOX,
BROWN_SHULKER_BOX,
GREEN_SHULKER_BOX,
RED_SHULKER_BOX,
BLACK_SHULKER_BOX,
WHITE_GLAZED_TERRACOTTA,
ORANGE_GLAZED_TERRACOTTA,
MAGENTA_GLAZED_TERRACOTTA,
LIGHT_BLUE_GLAZED_TERRACOTTA,
YELLOW_GLAZED_TERRACOTTA,
LIME_GLAZED_TERRACOTTA,
PINK_GLAZED_TERRACOTTA,
GRAY_GLAZED_TERRACOTTA,
LIGHT_GRAY_GLAZED_TERRACOTTA,
CYAN_GLAZED_TERRACOTTA,
PURPLE_GLAZED_TERRACOTTA,
BLUE_GLAZED_TERRACOTTA,
BROWN_GLAZED_TERRACOTTA,
GREEN_GLAZED_TERRACOTTA,
RED_GLAZED_TERRACOTTA,
BLACK_GLAZED_TERRACOTTA,
WHITE_CONCRETE,
ORANGE_CONCRETE,
MAGENTA_CONCRETE,
LIGHT_BLUE_CONCRETE,
YELLOW_CONCRETE,
LIME_CONCRETE,
PINK_CONCRETE,
GRAY_CONCRETE,
LIGHT_GRAY_CONCRETE,
CYAN_CONCRETE,
PURPLE_CONCRETE,
BLUE_CONCRETE,
BROWN_CONCRETE,
GREEN_CONCRETE,
RED_CONCRETE,
BLACK_CONCRETE,
WHITE_CONCRETE_POWDER,
ORANGE_CONCRETE_POWDER,
MAGENTA_CONCRETE_POWDER,
LIGHT_BLUE_CONCRETE_POWDER,
YELLOW_CONCRETE_POWDER,
LIME_CONCRETE_POWDER,
PINK_CONCRETE_POWDER,
GRAY_CONCRETE_POWDER,
LIGHT_GRAY_CONCRETE_POWDER,
CYAN_CONCRETE_POWDER,
PURPLE_CONCRETE_POWDER,
BLUE_CONCRETE_POWDER,
BROWN_CONCRETE_POWDER,
GREEN_CONCRETE_POWDER,
RED_CONCRETE_POWDER,
BLACK_CONCRETE_POWDER,
KELP,
KELP_PLANT,
DRIED_KELP_BLOCK,
TURTLE_EGG,
DEAD_TUBE_CORAL_BLOCK,
DEAD_BRAIN_CORAL_BLOCK,
DEAD_BUBBLE_CORAL_BLOCK,
DEAD_FIRE_CORAL_BLOCK,
DEAD_HORN_CORAL_BLOCK,
TUBE_CORAL_BLOCK,
BRAIN_CORAL_BLOCK,
BUBBLE_CORAL_BLOCK,
FIRE_CORAL_BLOCK,
HORN_CORAL_BLOCK,
DEAD_TUBE_CORAL,
DEAD_BRAIN_CORAL,
DEAD_BUBBLE_CORAL,
DEAD_FIRE_CORAL,
DEAD_HORN_CORAL,
TUBE_CORAL,
BRAIN_CORAL,
BUBBLE_CORAL,
FIRE_CORAL,
HORN_CORAL,
DEAD_TUBE_CORAL_FAN,
DEAD_BRAIN_CORAL_FAN,
DEAD_BUBBLE_CORAL_FAN,
DEAD_FIRE_CORAL_FAN,
DEAD_HORN_CORAL_FAN,
TUBE_CORAL_FAN,
BRAIN_CORAL_FAN,
BUBBLE_CORAL_FAN,
FIRE_CORAL_FAN,
HORN_CORAL_FAN,
DEAD_TUBE_CORAL_WALL_FAN,
DEAD_BRAIN_CORAL_WALL_FAN,
DEAD_BUBBLE_CORAL_WALL_FAN,
DEAD_FIRE_CORAL_WALL_FAN,
DEAD_HORN_CORAL_WALL_FAN,
TUBE_CORAL_WALL_FAN,
BRAIN_CORAL_WALL_FAN,
BUBBLE_CORAL_WALL_FAN,
FIRE_CORAL_WALL_FAN,
HORN_CORAL_WALL_FAN,
SEA_PICKLE,
BLUE_ICE,
CONDUIT,
BAMBOO_SAPLING,
BAMBOO,
POTTED_BAMBOO,
VOID_AIR,
CAVE_AIR,
BUBBLE_COLUMN,
POLISHED_GRANITE_STAIRS,
SMOOTH_RED_SANDSTONE_STAIRS,
MOSSY_STONE_BRICK_STAIRS,
POLISHED_DIORITE_STAIRS,
MOSSY_COBBLESTONE_STAIRS,
END_STONE_BRICK_STAIRS,
STONE_STAIRS,
SMOOTH_SANDSTONE_STAIRS,
SMOOTH_QUARTZ_STAIRS,
GRANITE_STAIRS,
ANDESITE_STAIRS,
RED_NETHER_BRICK_STAIRS,
POLISHED_ANDESITE_STAIRS,
DIORITE_STAIRS,
POLISHED_GRANITE_SLAB,
SMOOTH_RED_SANDSTONE_SLAB,
MOSSY_STONE_BRICK_SLAB,
POLISHED_DIORITE_SLAB,
MOSSY_COBBLESTONE_SLAB,
END_STONE_BRICK_SLAB,
SMOOTH_SANDSTONE_SLAB,
SMOOTH_QUARTZ_SLAB,
GRANITE_SLAB,
ANDESITE_SLAB,
RED_NETHER_BRICK_SLAB,
POLISHED_ANDESITE_SLAB,
DIORITE_SLAB,
BRICK_WALL,
PRISMARINE_WALL,
RED_SANDSTONE_WALL,
MOSSY_STONE_BRICK_WALL,
GRANITE_WALL,
STONE_BRICK_WALL,
NETHER_BRICK_WALL,
ANDESITE_WALL,
RED_NETHER_BRICK_WALL,
SANDSTONE_WALL,
END_STONE_BRICK_WALL,
DIORITE_WALL,
SCAFFOLDING,
LOOM,
BARREL,
SMOKER,
BLAST_FURNACE,
CARTOGRAPHY_TABLE,
FLETCHING_TABLE,
GRINDSTONE,
LECTERN,
SMITHING_TABLE,
STONECUTTER,
BELL,
LANTERN,
CAMPFIRE,
SWEET_BERRY_BUSH,
STRUCTURE_BLOCK,
JIGSAW,
COMPOSTER,
BEE_NEST,
BEEHIVE,
HONEY_BLOCK,
HONEYCOMB_BLOCK;
private static Short2ObjectOpenHashMap<Block> blocksMap = new Short2ObjectOpenHashMap<>();
public static Block fromId(short blockId) {
return blocksMap.getOrDefault(blockId, AIR);
}
private short blockId;
private List<BlockAlternative> blockAlternatives = new ArrayList<>();
public void initBlock(short blockId) {
this.blockId = blockId;
}
public void addBlockAlternative(short id, String... properties) {
this.blockAlternatives.add(new BlockAlternative(id, properties));
blocksMap.put(id, this);
}
public short withProperties(String... properties) {
for (BlockAlternative blockAlternative : blockAlternatives) {
if (Arrays.equals(blockAlternative.properties, properties)) {
return blockAlternative.id;
}
}
// No id found, return default
return blockId;
}
public short getBlockId() {
return blockId;
}
public boolean isAir() {
return this == AIR;
}
public boolean isSolid() {
if (blockId == 0) {
return false;
}
switch (this) {
case ACACIA_DOOR:
case ACACIA_FENCE:
case ACACIA_FENCE_GATE:
case ACACIA_LEAVES:
case ACACIA_LOG:
case ACACIA_PLANKS:
case ACACIA_PRESSURE_PLATE:
case ACACIA_SIGN:
case ACACIA_SLAB:
case ACACIA_STAIRS:
case ACACIA_TRAPDOOR:
case ACACIA_WALL_SIGN:
case ACACIA_WOOD:
case ANDESITE:
case ANDESITE_SLAB:
case ANDESITE_STAIRS:
case ANDESITE_WALL:
case ANVIL:
case BAMBOO:
case BARREL:
case BARRIER:
case BEACON:
case BEDROCK:
case BEEHIVE:
case BEE_NEST:
case BELL:
case BIRCH_DOOR:
case BIRCH_FENCE:
case BIRCH_FENCE_GATE:
case BIRCH_LEAVES:
case BIRCH_LOG:
case BIRCH_PLANKS:
case BIRCH_PRESSURE_PLATE:
case BIRCH_SIGN:
case BIRCH_SLAB:
case BIRCH_STAIRS:
case BIRCH_TRAPDOOR:
case BIRCH_WALL_SIGN:
case BIRCH_WOOD:
case BLACK_BANNER:
case BLACK_BED:
case BLACK_CONCRETE:
case BLACK_CONCRETE_POWDER:
case BLACK_GLAZED_TERRACOTTA:
case BLACK_SHULKER_BOX:
case BLACK_STAINED_GLASS:
case BLACK_STAINED_GLASS_PANE:
case BLACK_TERRACOTTA:
case BLACK_WALL_BANNER:
case BLACK_WOOL:
case BLAST_FURNACE:
case BLUE_BANNER:
case BLUE_BED:
case BLUE_CONCRETE:
case BLUE_CONCRETE_POWDER:
case BLUE_GLAZED_TERRACOTTA:
case BLUE_ICE:
case BLUE_SHULKER_BOX:
case BLUE_STAINED_GLASS:
case BLUE_STAINED_GLASS_PANE:
case BLUE_TERRACOTTA:
case BLUE_WALL_BANNER:
case BLUE_WOOL:
case BONE_BLOCK:
case BOOKSHELF:
case BRAIN_CORAL_BLOCK:
case BREWING_STAND:
case BRICKS:
case BRICK_SLAB:
case BRICK_STAIRS:
case BRICK_WALL:
case BROWN_BANNER:
case BROWN_BED:
case BROWN_CONCRETE:
case BROWN_CONCRETE_POWDER:
case BROWN_GLAZED_TERRACOTTA:
case BROWN_MUSHROOM_BLOCK:
case BROWN_SHULKER_BOX:
case BROWN_STAINED_GLASS:
case BROWN_STAINED_GLASS_PANE:
case BROWN_TERRACOTTA:
case BROWN_WALL_BANNER:
case BROWN_WOOL:
case BUBBLE_CORAL_BLOCK:
case CACTUS:
case CAKE:
case CAMPFIRE:
case CARTOGRAPHY_TABLE:
case CARVED_PUMPKIN:
case CAULDRON:
case CHAIN_COMMAND_BLOCK:
case CHEST:
case CHIPPED_ANVIL:
case CHISELED_QUARTZ_BLOCK:
case CHISELED_RED_SANDSTONE:
case CHISELED_SANDSTONE:
case CHISELED_STONE_BRICKS:
case CLAY:
case COAL_BLOCK:
case COAL_ORE:
case COARSE_DIRT:
case COBBLESTONE:
case COBBLESTONE_SLAB:
case COBBLESTONE_STAIRS:
case COBBLESTONE_WALL:
case COMMAND_BLOCK:
case COMPOSTER:
case CONDUIT:
case CRACKED_STONE_BRICKS:
case CRAFTING_TABLE:
case CUT_RED_SANDSTONE:
case CUT_RED_SANDSTONE_SLAB:
case CUT_SANDSTONE:
case CUT_SANDSTONE_SLAB:
case CYAN_BANNER:
case CYAN_BED:
case CYAN_CONCRETE:
case CYAN_CONCRETE_POWDER:
case CYAN_GLAZED_TERRACOTTA:
case CYAN_SHULKER_BOX:
case CYAN_STAINED_GLASS:
case CYAN_STAINED_GLASS_PANE:
case CYAN_TERRACOTTA:
case CYAN_WALL_BANNER:
case CYAN_WOOL:
case DAMAGED_ANVIL:
case DARK_OAK_DOOR:
case DARK_OAK_FENCE:
case DARK_OAK_FENCE_GATE:
case DARK_OAK_LEAVES:
case DARK_OAK_LOG:
case DARK_OAK_PLANKS:
case DARK_OAK_PRESSURE_PLATE:
case DARK_OAK_SIGN:
case DARK_OAK_SLAB:
case DARK_OAK_STAIRS:
case DARK_OAK_TRAPDOOR:
case DARK_OAK_WALL_SIGN:
case DARK_OAK_WOOD:
case DARK_PRISMARINE:
case DARK_PRISMARINE_SLAB:
case DARK_PRISMARINE_STAIRS:
case DAYLIGHT_DETECTOR:
case DEAD_BRAIN_CORAL:
case DEAD_BRAIN_CORAL_BLOCK:
case DEAD_BRAIN_CORAL_FAN:
case DEAD_BRAIN_CORAL_WALL_FAN:
case DEAD_BUBBLE_CORAL:
case DEAD_BUBBLE_CORAL_BLOCK:
case DEAD_BUBBLE_CORAL_FAN:
case DEAD_BUBBLE_CORAL_WALL_FAN:
case DEAD_FIRE_CORAL:
case DEAD_FIRE_CORAL_BLOCK:
case DEAD_FIRE_CORAL_FAN:
case DEAD_FIRE_CORAL_WALL_FAN:
case DEAD_HORN_CORAL:
case DEAD_HORN_CORAL_BLOCK:
case DEAD_HORN_CORAL_FAN:
case DEAD_HORN_CORAL_WALL_FAN:
case DEAD_TUBE_CORAL:
case DEAD_TUBE_CORAL_BLOCK:
case DEAD_TUBE_CORAL_FAN:
case DEAD_TUBE_CORAL_WALL_FAN:
case DIAMOND_BLOCK:
case DIAMOND_ORE:
case DIORITE:
case DIORITE_SLAB:
case DIORITE_STAIRS:
case DIORITE_WALL:
case DIRT:
case DISPENSER:
case DRAGON_EGG:
case DRIED_KELP_BLOCK:
case DROPPER:
case EMERALD_BLOCK:
case EMERALD_ORE:
case ENCHANTING_TABLE:
case ENDER_CHEST:
case END_PORTAL_FRAME:
case END_STONE:
case END_STONE_BRICKS:
case END_STONE_BRICK_SLAB:
case END_STONE_BRICK_STAIRS:
case END_STONE_BRICK_WALL:
case FARMLAND:
case FIRE_CORAL_BLOCK:
case FLETCHING_TABLE:
case FROSTED_ICE:
case FURNACE:
case GLASS:
case GLASS_PANE:
case GLOWSTONE:
case GOLD_BLOCK:
case GOLD_ORE:
case GRANITE:
case GRANITE_SLAB:
case GRANITE_STAIRS:
case GRANITE_WALL:
case GRASS_BLOCK:
case GRASS_PATH:
case GRAVEL:
case GRAY_BANNER:
case GRAY_BED:
case GRAY_CONCRETE:
case GRAY_CONCRETE_POWDER:
case GRAY_GLAZED_TERRACOTTA:
case GRAY_SHULKER_BOX:
case GRAY_STAINED_GLASS:
case GRAY_STAINED_GLASS_PANE:
case GRAY_TERRACOTTA:
case GRAY_WALL_BANNER:
case GRAY_WOOL:
case GREEN_BANNER:
case GREEN_BED:
case GREEN_CONCRETE:
case GREEN_CONCRETE_POWDER:
case GREEN_GLAZED_TERRACOTTA:
case GREEN_SHULKER_BOX:
case GREEN_STAINED_GLASS:
case GREEN_STAINED_GLASS_PANE:
case GREEN_TERRACOTTA:
case GREEN_WALL_BANNER:
case GREEN_WOOL:
case GRINDSTONE:
case HAY_BLOCK:
case HEAVY_WEIGHTED_PRESSURE_PLATE:
case HONEYCOMB_BLOCK:
case HONEY_BLOCK:
case HOPPER:
case HORN_CORAL_BLOCK:
case ICE:
case INFESTED_CHISELED_STONE_BRICKS:
case INFESTED_COBBLESTONE:
case INFESTED_CRACKED_STONE_BRICKS:
case INFESTED_MOSSY_STONE_BRICKS:
case INFESTED_STONE:
case INFESTED_STONE_BRICKS:
case IRON_BARS:
case IRON_BLOCK:
case IRON_DOOR:
case IRON_ORE:
case IRON_TRAPDOOR:
case JACK_O_LANTERN:
case JIGSAW:
case JUKEBOX:
case JUNGLE_DOOR:
case JUNGLE_FENCE:
case JUNGLE_FENCE_GATE:
case JUNGLE_LEAVES:
case JUNGLE_LOG:
case JUNGLE_PLANKS:
case JUNGLE_PRESSURE_PLATE:
case JUNGLE_SIGN:
case JUNGLE_SLAB:
case JUNGLE_STAIRS:
case JUNGLE_TRAPDOOR:
case JUNGLE_WALL_SIGN:
case JUNGLE_WOOD:
case LANTERN:
case LAPIS_BLOCK:
case LAPIS_ORE:
case LECTERN:
case LIGHT_BLUE_BANNER:
case LIGHT_BLUE_BED:
case LIGHT_BLUE_CONCRETE:
case LIGHT_BLUE_CONCRETE_POWDER:
case LIGHT_BLUE_GLAZED_TERRACOTTA:
case LIGHT_BLUE_SHULKER_BOX:
case LIGHT_BLUE_STAINED_GLASS:
case LIGHT_BLUE_STAINED_GLASS_PANE:
case LIGHT_BLUE_TERRACOTTA:
case LIGHT_BLUE_WALL_BANNER:
case LIGHT_BLUE_WOOL:
case LIGHT_GRAY_BANNER:
case LIGHT_GRAY_BED:
case LIGHT_GRAY_CONCRETE:
case LIGHT_GRAY_CONCRETE_POWDER:
case LIGHT_GRAY_GLAZED_TERRACOTTA:
case LIGHT_GRAY_SHULKER_BOX:
case LIGHT_GRAY_STAINED_GLASS:
case LIGHT_GRAY_STAINED_GLASS_PANE:
case LIGHT_GRAY_TERRACOTTA:
case LIGHT_GRAY_WALL_BANNER:
case LIGHT_GRAY_WOOL:
case LIGHT_WEIGHTED_PRESSURE_PLATE:
case LIME_BANNER:
case LIME_BED:
case LIME_CONCRETE:
case LIME_CONCRETE_POWDER:
case LIME_GLAZED_TERRACOTTA:
case LIME_SHULKER_BOX:
case LIME_STAINED_GLASS:
case LIME_STAINED_GLASS_PANE:
case LIME_TERRACOTTA:
case LIME_WALL_BANNER:
case LIME_WOOL:
case LOOM:
case MAGENTA_BANNER:
case MAGENTA_BED:
case MAGENTA_CONCRETE:
case MAGENTA_CONCRETE_POWDER:
case MAGENTA_GLAZED_TERRACOTTA:
case MAGENTA_SHULKER_BOX:
case MAGENTA_STAINED_GLASS:
case MAGENTA_STAINED_GLASS_PANE:
case MAGENTA_TERRACOTTA:
case MAGENTA_WALL_BANNER:
case MAGENTA_WOOL:
case MAGMA_BLOCK:
case MELON:
case MOSSY_COBBLESTONE:
case MOSSY_COBBLESTONE_SLAB:
case MOSSY_COBBLESTONE_STAIRS:
case MOSSY_COBBLESTONE_WALL:
case MOSSY_STONE_BRICKS:
case MOSSY_STONE_BRICK_SLAB:
case MOSSY_STONE_BRICK_STAIRS:
case MOSSY_STONE_BRICK_WALL:
case MOVING_PISTON:
case MUSHROOM_STEM:
case MYCELIUM:
case NETHERRACK:
case NETHER_BRICKS:
case NETHER_BRICK_FENCE:
case NETHER_BRICK_SLAB:
case NETHER_BRICK_STAIRS:
case NETHER_BRICK_WALL:
case NETHER_QUARTZ_ORE:
case NETHER_WART_BLOCK:
case NOTE_BLOCK:
case OAK_DOOR:
case OAK_FENCE:
case OAK_FENCE_GATE:
case OAK_LEAVES:
case OAK_LOG:
case OAK_PLANKS:
case OAK_PRESSURE_PLATE:
case OAK_SIGN:
case OAK_SLAB:
case OAK_STAIRS:
case OAK_TRAPDOOR:
case OAK_WALL_SIGN:
case OAK_WOOD:
case OBSERVER:
case OBSIDIAN:
case ORANGE_BANNER:
case ORANGE_BED:
case ORANGE_CONCRETE:
case ORANGE_CONCRETE_POWDER:
case ORANGE_GLAZED_TERRACOTTA:
case ORANGE_SHULKER_BOX:
case ORANGE_STAINED_GLASS:
case ORANGE_STAINED_GLASS_PANE:
case ORANGE_TERRACOTTA:
case ORANGE_WALL_BANNER:
case ORANGE_WOOL:
case PACKED_ICE:
case PETRIFIED_OAK_SLAB:
case PINK_BANNER:
case PINK_BED:
case PINK_CONCRETE:
case PINK_CONCRETE_POWDER:
case PINK_GLAZED_TERRACOTTA:
case PINK_SHULKER_BOX:
case PINK_STAINED_GLASS:
case PINK_STAINED_GLASS_PANE:
case PINK_TERRACOTTA:
case PINK_WALL_BANNER:
case PINK_WOOL:
case PISTON:
case PISTON_HEAD:
case PODZOL:
case POLISHED_ANDESITE:
case POLISHED_ANDESITE_SLAB:
case POLISHED_ANDESITE_STAIRS:
case POLISHED_DIORITE:
case POLISHED_DIORITE_SLAB:
case POLISHED_DIORITE_STAIRS:
case POLISHED_GRANITE:
case POLISHED_GRANITE_SLAB:
case POLISHED_GRANITE_STAIRS:
case PRISMARINE:
case PRISMARINE_BRICKS:
case PRISMARINE_BRICK_SLAB:
case PRISMARINE_BRICK_STAIRS:
case PRISMARINE_SLAB:
case PRISMARINE_STAIRS:
case PRISMARINE_WALL:
case PUMPKIN:
case PURPLE_BANNER:
case PURPLE_BED:
case PURPLE_CONCRETE:
case PURPLE_CONCRETE_POWDER:
case PURPLE_GLAZED_TERRACOTTA:
case PURPLE_SHULKER_BOX:
case PURPLE_STAINED_GLASS:
case PURPLE_STAINED_GLASS_PANE:
case PURPLE_TERRACOTTA:
case PURPLE_WALL_BANNER:
case PURPLE_WOOL:
case PURPUR_BLOCK:
case PURPUR_PILLAR:
case PURPUR_SLAB:
case PURPUR_STAIRS:
case QUARTZ_BLOCK:
case QUARTZ_PILLAR:
case QUARTZ_SLAB:
case QUARTZ_STAIRS:
case REDSTONE_BLOCK:
case REDSTONE_LAMP:
case REDSTONE_ORE:
case RED_BANNER:
case RED_BED:
case RED_CONCRETE:
case RED_CONCRETE_POWDER:
case RED_GLAZED_TERRACOTTA:
case RED_MUSHROOM_BLOCK:
case RED_NETHER_BRICKS:
case RED_NETHER_BRICK_SLAB:
case RED_NETHER_BRICK_STAIRS:
case RED_NETHER_BRICK_WALL:
case RED_SAND:
case RED_SANDSTONE:
case RED_SANDSTONE_SLAB:
case RED_SANDSTONE_STAIRS:
case RED_SANDSTONE_WALL:
case RED_SHULKER_BOX:
case RED_STAINED_GLASS:
case RED_STAINED_GLASS_PANE:
case RED_TERRACOTTA:
case RED_WALL_BANNER:
case RED_WOOL:
case REPEATING_COMMAND_BLOCK:
case SAND:
case SANDSTONE:
case SANDSTONE_SLAB:
case SANDSTONE_STAIRS:
case SANDSTONE_WALL:
case SEA_LANTERN:
case SHULKER_BOX:
case SLIME_BLOCK:
case SMITHING_TABLE:
case SMOKER:
case SMOOTH_QUARTZ:
case SMOOTH_QUARTZ_SLAB:
case SMOOTH_QUARTZ_STAIRS:
case SMOOTH_RED_SANDSTONE:
case SMOOTH_RED_SANDSTONE_SLAB:
case SMOOTH_RED_SANDSTONE_STAIRS:
case SMOOTH_SANDSTONE:
case SMOOTH_SANDSTONE_SLAB:
case SMOOTH_SANDSTONE_STAIRS:
case SMOOTH_STONE:
case SMOOTH_STONE_SLAB:
case SNOW_BLOCK:
case SOUL_SAND:
case SPAWNER:
case SPONGE:
case SPRUCE_DOOR:
case SPRUCE_FENCE:
case SPRUCE_FENCE_GATE:
case SPRUCE_LEAVES:
case SPRUCE_LOG:
case SPRUCE_PLANKS:
case SPRUCE_PRESSURE_PLATE:
case SPRUCE_SIGN:
case SPRUCE_SLAB:
case SPRUCE_STAIRS:
case SPRUCE_TRAPDOOR:
case SPRUCE_WALL_SIGN:
case SPRUCE_WOOD:
case STICKY_PISTON:
case STONE:
case STONECUTTER:
case STONE_BRICKS:
case STONE_BRICK_SLAB:
case STONE_BRICK_STAIRS:
case STONE_BRICK_WALL:
case STONE_PRESSURE_PLATE:
case STONE_SLAB:
case STONE_STAIRS:
case STRIPPED_ACACIA_LOG:
case STRIPPED_ACACIA_WOOD:
case STRIPPED_BIRCH_LOG:
case STRIPPED_BIRCH_WOOD:
case STRIPPED_DARK_OAK_LOG:
case STRIPPED_DARK_OAK_WOOD:
case STRIPPED_JUNGLE_LOG:
case STRIPPED_JUNGLE_WOOD:
case STRIPPED_OAK_LOG:
case STRIPPED_OAK_WOOD:
case STRIPPED_SPRUCE_LOG:
case STRIPPED_SPRUCE_WOOD:
case STRUCTURE_BLOCK:
case TERRACOTTA:
case TNT:
case TRAPPED_CHEST:
case TUBE_CORAL_BLOCK:
case TURTLE_EGG:
case WET_SPONGE:
case WHITE_BANNER:
case WHITE_BED:
case WHITE_CONCRETE:
case WHITE_CONCRETE_POWDER:
case WHITE_GLAZED_TERRACOTTA:
case WHITE_SHULKER_BOX:
case WHITE_STAINED_GLASS:
case WHITE_STAINED_GLASS_PANE:
case WHITE_TERRACOTTA:
case WHITE_WALL_BANNER:
case WHITE_WOOL:
case YELLOW_BANNER:
case YELLOW_BED:
case YELLOW_CONCRETE:
case YELLOW_CONCRETE_POWDER:
case YELLOW_GLAZED_TERRACOTTA:
case YELLOW_SHULKER_BOX:
case YELLOW_STAINED_GLASS:
case YELLOW_STAINED_GLASS_PANE:
case YELLOW_TERRACOTTA:
case YELLOW_WALL_BANNER:
case YELLOW_WOOL:
return true;
default:
return false;
}
}
public boolean isLiquid() {
switch (this) {
case WATER:
case LAVA:
return true;
default:
return false;
}
}
public boolean isBlockEntity() {
switch (this) {
case SPAWNER:
case COMMAND_BLOCK:
case BEACON:
case CREEPER_HEAD:
case CREEPER_WALL_HEAD:
case DRAGON_HEAD:
case DRAGON_WALL_HEAD:
case PLAYER_HEAD:
case PLAYER_WALL_HEAD:
case ZOMBIE_HEAD:
case ZOMBIE_WALL_HEAD:
case CONDUIT:
case BLACK_BANNER:
case BLACK_WALL_BANNER:
case BLUE_BANNER:
case BLUE_WALL_BANNER:
case BROWN_BANNER:
case BROWN_WALL_BANNER:
case CYAN_BANNER:
case PURPLE_BANNER:
case GREEN_BANNER:
case RED_BANNER:
case WHITE_WALL_BANNER:
case ORANGE_WALL_BANNER:
case MAGENTA_WALL_BANNER:
case LIGHT_BLUE_WALL_BANNER:
case YELLOW_WALL_BANNER:
case LIME_WALL_BANNER:
case PINK_WALL_BANNER:
case GRAY_WALL_BANNER:
case LIGHT_GRAY_WALL_BANNER:
case CYAN_WALL_BANNER:
case PURPLE_WALL_BANNER:
case GREEN_WALL_BANNER:
case RED_WALL_BANNER:
case STRUCTURE_BLOCK:
case END_GATEWAY:
case OAK_SIGN:
case SPRUCE_SIGN:
case BIRCH_SIGN:
case ACACIA_SIGN:
case JUNGLE_SIGN:
case DARK_OAK_SIGN:
case BLACK_BED:
case WHITE_BED:
case ORANGE_BED:
case MAGENTA_BED:
case LIGHT_BLUE_BED:
case YELLOW_BED:
case LIME_BED:
case PINK_BED:
case GRAY_BED:
case LIGHT_GRAY_BED:
case CYAN_BED:
case PURPLE_BED:
case BLUE_BED:
case BROWN_BED:
case GREEN_BED:
case RED_BED:
case JIGSAW:
case CAMPFIRE:
case BEEHIVE:
return true;
default:
return false;
}
}
public boolean isSign() {
switch (this) {
case OAK_SIGN:
case SPRUCE_SIGN:
case BIRCH_SIGN:
case ACACIA_SIGN:
case JUNGLE_SIGN:
case DARK_OAK_SIGN:
return true;
default:
return false;
}
}
public List<BlockAlternative> getBlockAlternatives() {
return Collections.unmodifiableList(blockAlternatives);
}
public static class BlockAlternative {
private short id;
private String[] properties;
protected BlockAlternative(short id, String... properties) {
this.id = id;
this.properties = properties;
}
public short getId() {
return id;
}
public String[] getProperties() {
return properties;
}
@Override
public String toString() {
return "BlockAlternative{" +
"id=" + id +
", properties=" + Arrays.toString(properties) +
'}';
}
}
}