From c9a81b7d281f1583a75f4c3e443433f5f836fbb8 Mon Sep 17 00:00:00 2001 From: Christos Miniotis Date: Thu, 2 Aug 2018 15:48:14 +0300 Subject: SPIGOT-3936: Add isInteractable to Material --- src/main/java/org/bukkit/Material.java | 165 +++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) (limited to 'src/main/java/org') diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java index af0ec817..359187da 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java @@ -4888,4 +4888,169 @@ public enum Material implements Keyed { return true; } } + + /** + * Checks if this Material can be interacted with. + * + * Interactable materials include those with functionality when they are + * interacted with by a player such as chests, furnaces, etc. + * + * Some blocks such as piston heads and stairs are considered interactable + * though may not perform any additional functionality. + * + * Note that the interactability of some materials may be dependant on their + * state as well. This method will return true if there is at least one + * state in which additional interact handling is performed for the + * material. + * + * @return true if this material can be interacted with. + */ + public boolean isInteractable() { + switch (this) { + // + case ACACIA_BUTTON: + case ACACIA_DOOR: + case ACACIA_FENCE: + case ACACIA_FENCE_GATE: + case ACACIA_STAIRS: + case ACACIA_TRAPDOOR: + case ANVIL: + case BEACON: + case BIRCH_BUTTON: + case BIRCH_DOOR: + case BIRCH_FENCE: + case BIRCH_FENCE_GATE: + case BIRCH_STAIRS: + case BIRCH_TRAPDOOR: + case BLACK_BED: + case BLACK_SHULKER_BOX: + case BLUE_BED: + case BLUE_SHULKER_BOX: + case BREWING_STAND: + case BRICK_STAIRS: + case BROWN_BED: + case BROWN_SHULKER_BOX: + case CAKE: + case CAULDRON: + case CHAIN_COMMAND_BLOCK: + case CHEST: + case CHIPPED_ANVIL: + case COBBLESTONE_STAIRS: + case COMMAND_BLOCK: + case COMPARATOR: + case CRAFTING_TABLE: + case CYAN_BED: + case CYAN_SHULKER_BOX: + case DAMAGED_ANVIL: + case DARK_OAK_BUTTON: + case DARK_OAK_DOOR: + case DARK_OAK_FENCE: + case DARK_OAK_FENCE_GATE: + case DARK_OAK_STAIRS: + case DARK_OAK_TRAPDOOR: + case DARK_PRISMARINE_STAIRS: + case DAYLIGHT_DETECTOR: + case DISPENSER: + case DRAGON_EGG: + case DROPPER: + case ENCHANTING_TABLE: + case ENDER_CHEST: + case FLOWER_POT: + case FURNACE: + case GRAY_BED: + case GRAY_SHULKER_BOX: + case GREEN_BED: + case GREEN_SHULKER_BOX: + case HOPPER: + case IRON_DOOR: + case IRON_TRAPDOOR: + case JUKEBOX: + case JUNGLE_BUTTON: + case JUNGLE_DOOR: + case JUNGLE_FENCE: + case JUNGLE_FENCE_GATE: + case JUNGLE_STAIRS: + case JUNGLE_TRAPDOOR: + case LEVER: + case LIGHT_BLUE_BED: + case LIGHT_BLUE_SHULKER_BOX: + case LIGHT_GRAY_BED: + case LIGHT_GRAY_SHULKER_BOX: + case LIME_BED: + case LIME_SHULKER_BOX: + case MAGENTA_BED: + case MAGENTA_SHULKER_BOX: + case MOVING_PISTON: + case NETHER_BRICK_FENCE: + case NETHER_BRICK_STAIRS: + case NOTE_BLOCK: + case OAK_BUTTON: + case OAK_DOOR: + case OAK_FENCE: + case OAK_FENCE_GATE: + case OAK_STAIRS: + case OAK_TRAPDOOR: + case ORANGE_BED: + case ORANGE_SHULKER_BOX: + case PINK_BED: + case PINK_SHULKER_BOX: + case POTTED_ACACIA_SAPLING: + case POTTED_ALLIUM: + case POTTED_AZURE_BLUET: + case POTTED_BIRCH_SAPLING: + case POTTED_BLUE_ORCHID: + case POTTED_BROWN_MUSHROOM: + case POTTED_CACTUS: + case POTTED_DANDELION: + case POTTED_DARK_OAK_SAPLING: + case POTTED_DEAD_BUSH: + case POTTED_FERN: + case POTTED_JUNGLE_SAPLING: + case POTTED_OAK_SAPLING: + case POTTED_ORANGE_TULIP: + case POTTED_OXEYE_DAISY: + case POTTED_PINK_TULIP: + case POTTED_POPPY: + case POTTED_RED_MUSHROOM: + case POTTED_RED_TULIP: + case POTTED_SPRUCE_SAPLING: + case POTTED_WHITE_TULIP: + case PRISMARINE_BRICK_STAIRS: + case PRISMARINE_STAIRS: + case PUMPKIN: + case PURPLE_BED: + case PURPLE_SHULKER_BOX: + case PURPUR_STAIRS: + case QUARTZ_STAIRS: + case REDSTONE_ORE: + case RED_BED: + case RED_SANDSTONE_STAIRS: + case RED_SHULKER_BOX: + case REPEATER: + case REPEATING_COMMAND_BLOCK: + case SANDSTONE_STAIRS: + case SHULKER_BOX: + case SIGN: + case SPRUCE_BUTTON: + case SPRUCE_DOOR: + case SPRUCE_FENCE: + case SPRUCE_FENCE_GATE: + case SPRUCE_STAIRS: + case SPRUCE_TRAPDOOR: + case STONE_BRICK_STAIRS: + case STONE_BUTTON: + case STRUCTURE_BLOCK: + case TNT: + case TRAPPED_CHEST: + case WALL_SIGN: + case WHITE_BED: + case WHITE_SHULKER_BOX: + case YELLOW_BED: + case YELLOW_SHULKER_BOX: + // + return true; + default: + return false; + } + } } -- cgit v1.2.3