diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt | 108 |
1 files changed, 51 insertions, 57 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt b/src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt index 9403f34..84d8a58 100644 --- a/src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt +++ b/src/main/kotlin/io/dico/parcels2/blockvisitor/Attachables.kt @@ -1,67 +1,61 @@ package io.dico.parcels2.blockvisitor +import io.dico.parcels2.util.Vec3i +import io.dico.parcels2.util.ext.getMaterialsWithWoodTypePrefix +import io.dico.parcels2.util.ext.getMaterialsWithWoolColorPrefix import org.bukkit.Material import org.bukkit.Material.* +import org.bukkit.block.BlockFace +import org.bukkit.block.data.BlockData +import org.bukkit.block.data.Directional import java.util.EnumSet -val attachables: Set<Material> = EnumSet.of( - ACACIA_DOOR, - ACTIVATOR_RAIL, - BIRCH_DOOR, - BROWN_MUSHROOM, - CACTUS, - CAKE, - 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, - CARROT, - COCOA, - WHEAT, - DARK_OAK_DOOR, - DEAD_BUSH, - DETECTOR_RAIL, - REPEATER, - TALL_GRASS, TALL_SEAGRASS, - DRAGON_EGG, - FIRE, - FLOWER_POT, - OAK_PRESSURE_PLATE, BIRCH_PRESSURE_PLATE, SPRUCE_PRESSURE_PLATE, JUNGLE_PRESSURE_PLATE, ACACIA_PRESSURE_PLATE, DARK_OAK_PRESSURE_PLATE, +private val attachables = EnumSet.of( + REPEATER, COMPARATOR, + *getMaterialsWithWoodTypePrefix("PRESSURE_PLATE"), STONE_PRESSURE_PLATE, LIGHT_WEIGHTED_PRESSURE_PLATE, HEAVY_WEIGHTED_PRESSURE_PLATE, - IRON_DOOR, - OAK_DOOR, BIRCH_DOOR, SPRUCE_DOOR, JUNGLE_DOOR, ACACIA_DOOR, DARK_OAK_DOOR, - OAK_BUTTON, BIRCH_BUTTON, SPRUCE_BUTTON, JUNGLE_BUTTON, ACACIA_BUTTON, DARK_OAK_BUTTON, - STONE_BUTTON, - OAK_TRAPDOOR, BIRCH_TRAPDOOR, SPRUCE_TRAPDOOR, JUNGLE_TRAPDOOR, ACACIA_TRAPDOOR, DARK_OAK_TRAPDOOR, - IRON_TRAPDOOR, + *getMaterialsWithWoodTypePrefix("BUTTON"), + STONE_BUTTON, LEVER, + *getMaterialsWithWoodTypePrefix("DOOR"), IRON_DOOR, + ACTIVATOR_RAIL, POWERED_RAIL, DETECTOR_RAIL, RAIL, + PISTON, STICKY_PISTON, + REDSTONE_TORCH, REDSTONE_WALL_TORCH, REDSTONE_WIRE, + TRIPWIRE, TRIPWIRE_HOOK, + + BROWN_MUSHROOM, RED_MUSHROOM, CACTUS, CARROT, COCOA, + WHEAT, DEAD_BUSH, CHORUS_FLOWER, DANDELION, SUGAR_CANE, + TALL_GRASS, TALL_SEAGRASS, NETHER_WART, MELON_STEM, + PUMPKIN_STEM, SUNFLOWER, POTATO, LILY_PAD, VINE, + *getMaterialsWithWoodTypePrefix("SAPLING"), + + SAND, RED_SAND, DRAGON_EGG, ANVIL, + *getMaterialsWithWoolColorPrefix("CONCRETE_POWDER"), + + *getMaterialsWithWoolColorPrefix("CARPET"), + CAKE, FIRE, + FLOWER_POT, LADDER, - LEVER, - MELON_STEM, - NETHER_WART, - PISTON, - STICKY_PISTON, - NETHER_PORTAL, - POTATO, - POWERED_RAIL, - PUMPKIN_STEM, - RAIL, - COMPARATOR, - REDSTONE_TORCH, - REDSTONE_WIRE, - RED_MUSHROOM, - SUNFLOWER, + // NETHER_PORTAL, fuck nether portals FLOWER_POT, - CHORUS_FLOWER, - OAK_SAPLING, BIRCH_SAPLING, SPRUCE_SAPLING, JUNGLE_SAPLING, ACACIA_SAPLING, DARK_OAK_SAPLING, - SIGN, SNOW, - SPRUCE_DOOR, - STONE_BUTTON, - SUGAR_CANE, - TORCH, - TRIPWIRE, - TRIPWIRE_HOOK, - VINE, - 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, - WALL_SIGN, - LILY_PAD, - DANDELION -)
\ No newline at end of file + TORCH, WALL_TORCH, + *getMaterialsWithWoolColorPrefix("BANNER"), + *getMaterialsWithWoolColorPrefix("WALL_BANNER"), + SIGN, WALL_SIGN +) + +fun isAttachable(type: Material) = attachables.contains(type) + +fun supportingBlock(data: BlockData): Vec3i = when (data) { + //is MultipleFacing -> // fuck it xD this is good enough + + is Directional -> Vec3i.convert(when (data.material) { + // exceptions + COCOA -> data.facing + OAK_DOOR, BIRCH_DOOR, SPRUCE_DOOR, JUNGLE_DOOR, ACACIA_DOOR, DARK_OAK_DOOR, IRON_DOOR -> BlockFace.DOWN + + else -> data.facing.oppositeFace + }) + + else -> Vec3i.down +} |