From aba6e4d9c8d736c8d80ebad917136c417d767182 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Thu, 2 Jul 2020 04:33:18 +0200 Subject: [PATCH] Add some missing special block handlings for 1.16 --- .../blockstate/BlockStateCodecSign.java | 3 +- .../LogBlock/listeners/InteractLogging.java | 14 +++ src/main/java/de/diddiz/util/BukkitUtils.java | 91 +++++++++++-------- 3 files changed, 71 insertions(+), 37 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java b/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java index 5f3a6e6..ee88302 100644 --- a/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java +++ b/src/main/java/de/diddiz/LogBlock/blockstate/BlockStateCodecSign.java @@ -1,5 +1,6 @@ package de.diddiz.LogBlock.blockstate; +import de.diddiz.util.BukkitUtils; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -12,7 +13,7 @@ import org.bukkit.configuration.file.YamlConfiguration; public class BlockStateCodecSign implements BlockStateCodec { @Override public Material[] getApplicableMaterials() { - return new Material[] { Material.ACACIA_SIGN, Material.ACACIA_WALL_SIGN, Material.BIRCH_SIGN, Material.BIRCH_WALL_SIGN, Material.DARK_OAK_SIGN, Material.DARK_OAK_WALL_SIGN, Material.JUNGLE_SIGN, Material.JUNGLE_WALL_SIGN, Material.OAK_SIGN, Material.OAK_WALL_SIGN, Material.SPRUCE_SIGN, Material.SPRUCE_WALL_SIGN }; + return BukkitUtils.getAllSignsArray(); } @Override diff --git a/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java index acfbceb..350c431 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/InteractLogging.java @@ -60,12 +60,16 @@ public class InteractLogging extends LoggingListener { case JUNGLE_FENCE_GATE: case ACACIA_FENCE_GATE: case DARK_OAK_FENCE_GATE: + case WARPED_FENCE_GATE: + case CRIMSON_FENCE_GATE: case OAK_TRAPDOOR: case SPRUCE_TRAPDOOR: case BIRCH_TRAPDOOR: case JUNGLE_TRAPDOOR: case ACACIA_TRAPDOOR: case DARK_OAK_TRAPDOOR: + case WARPED_TRAPDOOR: + case CRIMSON_TRAPDOOR: if (wcfg.isLogging(Logging.DOORINTERACT) && event.getAction() == Action.RIGHT_CLICK_BLOCK) { Openable newBlockData = (Openable) blockData.clone(); newBlockData.setOpen(!newBlockData.isOpen()); @@ -121,6 +125,8 @@ public class InteractLogging extends LoggingListener { case JUNGLE_PRESSURE_PLATE: case ACACIA_PRESSURE_PLATE: case DARK_OAK_PRESSURE_PLATE: + case WARPED_PRESSURE_PLATE: + case CRIMSON_PRESSURE_PLATE: case STONE_PRESSURE_PLATE: case HEAVY_WEIGHTED_PRESSURE_PLATE: case LIGHT_WEIGHTED_PRESSURE_PLATE: @@ -187,6 +193,8 @@ public class InteractLogging extends LoggingListener { case JUNGLE_DOOR: case ACACIA_DOOR: case DARK_OAK_DOOR: + case WARPED_DOOR: + case CRIMSON_DOOR: if (wcfg.isLogging(Logging.DOORINTERACT) && event.getAction() == Action.RIGHT_CLICK_BLOCK) { Door newBlockData = (Door) blockData.clone(); newBlockData.setOpen(!newBlockData.isOpen()); @@ -200,6 +208,8 @@ public class InteractLogging extends LoggingListener { case JUNGLE_BUTTON: case ACACIA_BUTTON: case DARK_OAK_BUTTON: + case WARPED_BUTTON: + case CRIMSON_BUTTON: case LEVER: if (wcfg.isLogging(Logging.SWITCHINTERACT) && event.getAction() == Action.RIGHT_CLICK_BLOCK) { Switch newBlockData = (Switch) blockData.clone(); @@ -215,12 +225,16 @@ public class InteractLogging extends LoggingListener { case JUNGLE_SIGN: case ACACIA_SIGN: case DARK_OAK_SIGN: + case WARPED_SIGN: + case CRIMSON_SIGN: case OAK_WALL_SIGN: case SPRUCE_WALL_SIGN: case BIRCH_WALL_SIGN: case JUNGLE_WALL_SIGN: case ACACIA_WALL_SIGN: case DARK_OAK_WALL_SIGN: + case WARPED_WALL_SIGN: + case CRIMSON_WALL_SIGN: if (wcfg.isLogging(Logging.SIGNTEXT) && event.getAction() == Action.RIGHT_CLICK_BLOCK) { ItemStack stack = event.getItem(); if (stack != null && BukkitUtils.isDye(stack.getType())) { diff --git a/src/main/java/de/diddiz/util/BukkitUtils.java b/src/main/java/de/diddiz/util/BukkitUtils.java index b45ac7a..d75c520 100644 --- a/src/main/java/de/diddiz/util/BukkitUtils.java +++ b/src/main/java/de/diddiz/util/BukkitUtils.java @@ -65,6 +65,9 @@ public class BukkitUtils { private static final Set bedBlocks; private static final Map projectileItems; + private static final EnumSet signs; + private static final EnumSet wallSigns; + private static final EnumSet allSigns; private static final EnumSet buttons; private static final EnumSet pressurePlates; private static final EnumSet woodenDoors; @@ -80,6 +83,8 @@ public class BukkitUtils { pressurePlates.add(Material.JUNGLE_PRESSURE_PLATE); pressurePlates.add(Material.ACACIA_PRESSURE_PLATE); pressurePlates.add(Material.DARK_OAK_PRESSURE_PLATE); + pressurePlates.add(Material.WARPED_PRESSURE_PLATE); + pressurePlates.add(Material.CRIMSON_PRESSURE_PLATE); pressurePlates.add(Material.STONE_PRESSURE_PLATE); pressurePlates.add(Material.LIGHT_WEIGHTED_PRESSURE_PLATE); pressurePlates.add(Material.HEAVY_WEIGHTED_PRESSURE_PLATE); @@ -91,6 +96,8 @@ public class BukkitUtils { woodenDoors.add(Material.JUNGLE_DOOR); woodenDoors.add(Material.ACACIA_DOOR); woodenDoors.add(Material.DARK_OAK_DOOR); + woodenDoors.add(Material.WARPED_DOOR); + woodenDoors.add(Material.CRIMSON_DOOR); EnumSet saplings = EnumSet.noneOf(Material.class); saplings.add(Material.OAK_SAPLING); @@ -99,6 +106,8 @@ public class BukkitUtils { saplings.add(Material.JUNGLE_SAPLING); saplings.add(Material.ACACIA_SAPLING); saplings.add(Material.DARK_OAK_SAPLING); + saplings.add(Material.WARPED_FUNGUS); + saplings.add(Material.CRIMSON_FUNGUS); EnumSet carpets = EnumSet.noneOf(Material.class); carpets.add(Material.BLACK_CARPET); @@ -125,6 +134,8 @@ public class BukkitUtils { slabs.add(Material.JUNGLE_SLAB); slabs.add(Material.ACACIA_SLAB); slabs.add(Material.DARK_OAK_SLAB); + slabs.add(Material.WARPED_SLAB); + slabs.add(Material.CRIMSON_SLAB); slabs.add(Material.STONE_SLAB); slabs.add(Material.STONE_BRICK_SLAB); slabs.add(Material.COBBLESTONE_SLAB); @@ -138,6 +149,8 @@ public class BukkitUtils { slabs.add(Material.PRISMARINE_SLAB); slabs.add(Material.DARK_PRISMARINE_SLAB); slabs.add(Material.PRISMARINE_BRICK_SLAB); + slabs.add(Material.BLACKSTONE_SLAB); + slabs.add(Material.POLISHED_BLACKSTONE_SLAB); buttons = EnumSet.noneOf(Material.class); buttons.add(Material.STONE_BUTTON); @@ -147,6 +160,32 @@ public class BukkitUtils { buttons.add(Material.JUNGLE_BUTTON); buttons.add(Material.ACACIA_BUTTON); buttons.add(Material.DARK_OAK_BUTTON); + buttons.add(Material.WARPED_BUTTON); + buttons.add(Material.CRIMSON_BUTTON); + + signs = EnumSet.noneOf(Material.class); + signs.add(Material.OAK_SIGN); + signs.add(Material.SPRUCE_SIGN); + signs.add(Material.BIRCH_SIGN); + signs.add(Material.JUNGLE_SIGN); + signs.add(Material.DARK_OAK_SIGN); + signs.add(Material.ACACIA_SIGN); + signs.add(Material.WARPED_SIGN); + signs.add(Material.CRIMSON_SIGN); + + wallSigns = EnumSet.noneOf(Material.class); + wallSigns.add(Material.OAK_WALL_SIGN); + wallSigns.add(Material.SPRUCE_WALL_SIGN); + wallSigns.add(Material.BIRCH_WALL_SIGN); + wallSigns.add(Material.JUNGLE_WALL_SIGN); + wallSigns.add(Material.DARK_OAK_WALL_SIGN); + wallSigns.add(Material.ACACIA_WALL_SIGN); + wallSigns.add(Material.WARPED_WALL_SIGN); + wallSigns.add(Material.CRIMSON_WALL_SIGN); + + allSigns = EnumSet.noneOf(Material.class); + allSigns.addAll(signs); + allSigns.addAll(wallSigns); singleBlockPlants = EnumSet.noneOf(Material.class); singleBlockPlants.add(Material.GRASS); @@ -194,12 +233,7 @@ public class BukkitUtils { // Blocks that break when they are attached to a block relativeBreakable = EnumSet.noneOf(Material.class); - relativeBreakable.add(Material.ACACIA_WALL_SIGN); - relativeBreakable.add(Material.BIRCH_WALL_SIGN); - relativeBreakable.add(Material.DARK_OAK_WALL_SIGN); - relativeBreakable.add(Material.JUNGLE_WALL_SIGN); - relativeBreakable.add(Material.OAK_WALL_SIGN); - relativeBreakable.add(Material.SPRUCE_WALL_SIGN); + relativeBreakable.addAll(wallSigns); relativeBreakable.add(Material.LADDER); relativeBreakable.addAll(buttons); relativeBreakable.add(Material.REDSTONE_WALL_TORCH); @@ -225,17 +259,13 @@ public class BukkitUtils { relativeTopBreakable.add(Material.ACTIVATOR_RAIL); relativeTopBreakable.add(Material.RAIL); relativeTopBreakable.add(Material.REDSTONE_WIRE); - relativeTopBreakable.add(Material.ACACIA_SIGN); - relativeTopBreakable.add(Material.BIRCH_SIGN); - relativeTopBreakable.add(Material.DARK_OAK_SIGN); - relativeTopBreakable.add(Material.JUNGLE_SIGN); - relativeTopBreakable.add(Material.OAK_SIGN); - relativeTopBreakable.add(Material.SPRUCE_SIGN); + relativeTopBreakable.addAll(signs); relativeTopBreakable.addAll(pressurePlates); relativeTopBreakable.add(Material.SNOW); relativeTopBreakable.add(Material.REPEATER); relativeTopBreakable.add(Material.COMPARATOR); relativeTopBreakable.add(Material.TORCH); + relativeTopBreakable.add(Material.SOUL_TORCH); relativeTopBreakable.add(Material.REDSTONE_TORCH); relativeTopBreakable.addAll(woodenDoors); relativeTopBreakable.add(Material.IRON_DOOR); @@ -253,32 +283,13 @@ public class BukkitUtils { // Blocks that break falling entities fallingEntityKillers = EnumSet.noneOf(Material.class); - fallingEntityKillers.add(Material.ACACIA_SIGN); - fallingEntityKillers.add(Material.ACACIA_WALL_SIGN); - fallingEntityKillers.add(Material.BIRCH_SIGN); - fallingEntityKillers.add(Material.BIRCH_WALL_SIGN); - fallingEntityKillers.add(Material.DARK_OAK_SIGN); - fallingEntityKillers.add(Material.DARK_OAK_WALL_SIGN); - fallingEntityKillers.add(Material.JUNGLE_SIGN); - fallingEntityKillers.add(Material.JUNGLE_WALL_SIGN); - fallingEntityKillers.add(Material.OAK_SIGN); - fallingEntityKillers.add(Material.OAK_WALL_SIGN); - fallingEntityKillers.add(Material.SPRUCE_SIGN); - fallingEntityKillers.add(Material.SPRUCE_WALL_SIGN); + fallingEntityKillers.addAll(signs); + fallingEntityKillers.addAll(wallSigns); fallingEntityKillers.addAll(pressurePlates); fallingEntityKillers.addAll(saplings); - fallingEntityKillers.add(Material.DANDELION); - fallingEntityKillers.add(Material.POPPY); - fallingEntityKillers.add(Material.BLUE_ORCHID); - fallingEntityKillers.add(Material.ALLIUM); - fallingEntityKillers.add(Material.AZURE_BLUET); - fallingEntityKillers.add(Material.ORANGE_TULIP); - fallingEntityKillers.add(Material.WHITE_TULIP); - fallingEntityKillers.add(Material.PINK_TULIP); - fallingEntityKillers.add(Material.RED_TULIP); - fallingEntityKillers.add(Material.OXEYE_DAISY); - fallingEntityKillers.add(Material.BROWN_MUSHROOM); - fallingEntityKillers.add(Material.RED_MUSHROOM); + fallingEntityKillers.addAll(singleBlockPlants); + fallingEntityKillers.remove(Material.GRASS); + fallingEntityKillers.remove(Material.NETHER_SPROUTS); fallingEntityKillers.addAll(doublePlants); fallingEntityKillers.add(Material.WHEAT); fallingEntityKillers.add(Material.CARROT); @@ -289,6 +300,8 @@ public class BukkitUtils { fallingEntityKillers.addAll(slabs); fallingEntityKillers.add(Material.TORCH); fallingEntityKillers.add(Material.WALL_TORCH); + fallingEntityKillers.add(Material.SOUL_TORCH); + fallingEntityKillers.add(Material.SOUL_WALL_TORCH); fallingEntityKillers.add(Material.FLOWER_POT); fallingEntityKillers.add(Material.POWERED_RAIL); fallingEntityKillers.add(Material.DETECTOR_RAIL); @@ -380,6 +393,7 @@ public class BukkitUtils { nonFluidProofBlocks.add(Material.REDSTONE_WALL_TORCH); nonFluidProofBlocks.add(Material.LEVER); nonFluidProofBlocks.add(Material.WALL_TORCH); + nonFluidProofBlocks.add(Material.SOUL_WALL_TORCH); nonFluidProofBlocks.add(Material.TRIPWIRE_HOOK); nonFluidProofBlocks.add(Material.COCOA); nonFluidProofBlocks.addAll(pressurePlates); @@ -390,6 +404,7 @@ public class BukkitUtils { nonFluidProofBlocks.add(Material.BEETROOT); nonFluidProofBlocks.add(Material.NETHER_WART); nonFluidProofBlocks.add(Material.TORCH); + nonFluidProofBlocks.add(Material.SOUL_TORCH); nonFluidProofBlocks.add(Material.FLOWER_POT); nonFluidProofBlocks.add(Material.POWERED_RAIL); nonFluidProofBlocks.add(Material.DETECTOR_RAIL); @@ -1014,4 +1029,8 @@ public class BukkitUtils { } return false; } + + public static Material[] getAllSignsArray() { + return allSigns.toArray(new Material[allSigns.size()]); + } }