From 2c7935dd411fdfa3b0fc9d45b49d741f78bbba6d Mon Sep 17 00:00:00 2001 From: CloudM1nd3 <74379891+CloudM1nd3@users.noreply.github.com> Date: Fri, 25 Sep 2026 12:12:44 +0300 Subject: [PATCH 1/2] Add #sign block-group --- .../java/net/coreprotect/command/parser/MaterialParser.java | 1 + src/main/java/net/coreprotect/model/BlockGroup.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/net/coreprotect/command/parser/MaterialParser.java b/src/main/java/net/coreprotect/command/parser/MaterialParser.java index ba4c62bbe..bf05476b1 100644 --- a/src/main/java/net/coreprotect/command/parser/MaterialParser.java +++ b/src/main/java/net/coreprotect/command/parser/MaterialParser.java @@ -225,6 +225,7 @@ else if (iMaterial != null) { public static Map> getTags() { Map> tagMap = new HashMap<>(); tagMap.put("#button", BlockGroup.BUTTONS); + tagMap.put("#signs", BlockGroup.SIGNS); tagMap.put("#container", BlockGroup.CONTAINERS); tagMap.put("#door", BlockGroup.DOORS); tagMap.put("#natural", BlockGroup.NATURAL_BLOCKS); diff --git a/src/main/java/net/coreprotect/model/BlockGroup.java b/src/main/java/net/coreprotect/model/BlockGroup.java index 2b6146829..e8a29a427 100644 --- a/src/main/java/net/coreprotect/model/BlockGroup.java +++ b/src/main/java/net/coreprotect/model/BlockGroup.java @@ -35,6 +35,10 @@ public final class BlockGroup { public static Set UPDATE_STATE = new HashSet<>(Arrays.asList(Material.TORCH, Material.WALL_TORCH, Material.REDSTONE_WIRE, Material.RAIL, Material.POWERED_RAIL, Material.DETECTOR_RAIL, Material.FURNACE, Material.BLAST_FURNACE, Material.SMOKER, Material.LEVER, Material.REDSTONE_TORCH, Material.REDSTONE_WALL_TORCH, Material.GLOWSTONE, Material.JACK_O_LANTERN, Material.REPEATER, Material.REDSTONE_LAMP, Material.BEACON, Material.COMPARATOR, Material.DAYLIGHT_DETECTOR, Material.REDSTONE_BLOCK, Material.HOPPER, Material.CHEST, Material.TRAPPED_CHEST, Material.ACTIVATOR_RAIL, Material.SOUL_TORCH, Material.SOUL_WALL_TORCH, Material.SHROOMLIGHT, Material.RESPAWN_ANCHOR, Material.CRYING_OBSIDIAN, Material.TARGET)); public static Set NATURAL_BLOCKS = new HashSet<>(Arrays.asList(Material.STONE, Material.GOLD_ORE, Material.IRON_ORE, Material.COAL_ORE, Material.LAPIS_ORE, Material.SANDSTONE, Material.COBWEB, Material.FERN, Material.DEAD_BUSH, Material.DANDELION, Material.POPPY, Material.BLUE_ORCHID, Material.ALLIUM, Material.AZURE_BLUET, Material.RED_TULIP, Material.ORANGE_TULIP, Material.WHITE_TULIP, Material.PINK_TULIP, Material.OXEYE_DAISY, Material.BROWN_MUSHROOM, Material.RED_MUSHROOM, Material.OBSIDIAN, Material.DIAMOND_ORE, Material.WHEAT, Material.REDSTONE_ORE, Material.SNOW, Material.ICE, Material.CACTUS, Material.CLAY, Material.SUGAR_CANE, Material.PUMPKIN, Material.NETHERRACK, Material.SOUL_SAND, Material.MELON, Material.PUMPKIN_STEM, Material.MELON_STEM, Material.MYCELIUM, Material.LILY_PAD, Material.NETHER_WART, Material.END_STONE, Material.EMERALD_ORE, Material.CARROT, Material.POTATO, Material.KELP, Material.CHORUS_FLOWER, Material.CHORUS_PLANT, Material.CORNFLOWER, Material.LILY_OF_THE_VALLEY, Material.WITHER_ROSE, Material.SWEET_BERRY_BUSH)); public static Set SCULK = new HashSet<>(Arrays.asList()); + public static Set SIGNS = new HashSet<>(Arrays.asList(Material.OAK_SIGN, Material.SPRUCE_SIGN, Material.BIRCH_SIGN, Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, Material.WARPED_SIGN, Material.CHERRY_SIGN, Material.MANGROVE_SIGN, Material.PALE_OAK_SIGN, Material.BAMBOO_SIGN, + Material.OAK_WALL_SIGN, Material.SPRUCE_WALL_SIGN, Material.BIRCH_WALL_SIGN, Material.JUNGLE_WALL_SIGN, Material.ACACIA_WALL_SIGN, Material.DARK_OAK_WALL_SIGN, Material.WARPED_WALL_SIGN, Material.CHERRY_WALL_SIGN, Material.MANGROVE_WALL_SIGN, Material.PALE_OAK_WALL_SIGN, Material.BAMBOO_WALL_SIGN, + Material.OAK_HANGING_SIGN, Material.SPRUCE_HANGING_SIGN, Material.BIRCH_HANGING_SIGN, Material.JUNGLE_HANGING_SIGN, Material.ACACIA_HANGING_SIGN, Material.DARK_OAK_HANGING_SIGN, Material.WARPED_HANGING_SIGN, Material.CHERRY_HANGING_SIGN, Material.MANGROVE_HANGING_SIGN, Material.PALE_OAK_HANGING_SIGN, Material.BAMBOO_HANGING_SIGN, + Material.OAK_WALL_HANGING_SIGN, Material.SPRUCE_WALL_HANGING_SIGN, Material.BIRCH_WALL_HANGING_SIGN, Material.JUNGLE_WALL_HANGING_SIGN, Material.ACACIA_WALL_HANGING_SIGN, Material.DARK_OAK_WALL_HANGING_SIGN, Material.WARPED_WALL_HANGING_SIGN, Material.CHERRY_WALL_HANGING_SIGN, Material.MANGROVE_WALL_HANGING_SIGN, Material.PALE_OAK_WALL_HANGING_SIGN, Material.BAMBOO_WALL_HANGING_SIGN)); /* blocks that support vertical scanning */ public static Set VERTICAL_TOP_BOTTOM = new HashSet<>(Arrays.asList()); @@ -69,6 +73,7 @@ public static void initialize() { NON_ATTACHABLE.add(shortGrass); } + TRACK_ANY.addAll(SIGNS); TRACK_ANY.addAll(BUTTONS); TRACK_TOP.addAll(DOORS); TRACK_TOP.addAll(PRESSURE_PLATES); From ef2617063d5bc17951aea033549d6afd7f52c35d Mon Sep 17 00:00:00 2001 From: CloudM1nd3 <74379891+CloudM1nd3@users.noreply.github.com> Date: Sat, 26 Sep 2026 12:29:23 +0300 Subject: [PATCH 2/2] Fix #sign group: use singular name, version-aware detection, remove TRACK_ANY --- .../command/parser/MaterialParser.java | 2 +- .../java/net/coreprotect/model/BlockGroup.java | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/coreprotect/command/parser/MaterialParser.java b/src/main/java/net/coreprotect/command/parser/MaterialParser.java index bf05476b1..3c566b2f3 100644 --- a/src/main/java/net/coreprotect/command/parser/MaterialParser.java +++ b/src/main/java/net/coreprotect/command/parser/MaterialParser.java @@ -225,7 +225,7 @@ else if (iMaterial != null) { public static Map> getTags() { Map> tagMap = new HashMap<>(); tagMap.put("#button", BlockGroup.BUTTONS); - tagMap.put("#signs", BlockGroup.SIGNS); + tagMap.put("#sign", BlockGroup.SIGNS); tagMap.put("#container", BlockGroup.CONTAINERS); tagMap.put("#door", BlockGroup.DOORS); tagMap.put("#natural", BlockGroup.NATURAL_BLOCKS); diff --git a/src/main/java/net/coreprotect/model/BlockGroup.java b/src/main/java/net/coreprotect/model/BlockGroup.java index e8a29a427..ab5838e33 100644 --- a/src/main/java/net/coreprotect/model/BlockGroup.java +++ b/src/main/java/net/coreprotect/model/BlockGroup.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Set; +import net.coreprotect.bukkit.BukkitAdapter; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -35,10 +36,7 @@ public final class BlockGroup { public static Set UPDATE_STATE = new HashSet<>(Arrays.asList(Material.TORCH, Material.WALL_TORCH, Material.REDSTONE_WIRE, Material.RAIL, Material.POWERED_RAIL, Material.DETECTOR_RAIL, Material.FURNACE, Material.BLAST_FURNACE, Material.SMOKER, Material.LEVER, Material.REDSTONE_TORCH, Material.REDSTONE_WALL_TORCH, Material.GLOWSTONE, Material.JACK_O_LANTERN, Material.REPEATER, Material.REDSTONE_LAMP, Material.BEACON, Material.COMPARATOR, Material.DAYLIGHT_DETECTOR, Material.REDSTONE_BLOCK, Material.HOPPER, Material.CHEST, Material.TRAPPED_CHEST, Material.ACTIVATOR_RAIL, Material.SOUL_TORCH, Material.SOUL_WALL_TORCH, Material.SHROOMLIGHT, Material.RESPAWN_ANCHOR, Material.CRYING_OBSIDIAN, Material.TARGET)); public static Set NATURAL_BLOCKS = new HashSet<>(Arrays.asList(Material.STONE, Material.GOLD_ORE, Material.IRON_ORE, Material.COAL_ORE, Material.LAPIS_ORE, Material.SANDSTONE, Material.COBWEB, Material.FERN, Material.DEAD_BUSH, Material.DANDELION, Material.POPPY, Material.BLUE_ORCHID, Material.ALLIUM, Material.AZURE_BLUET, Material.RED_TULIP, Material.ORANGE_TULIP, Material.WHITE_TULIP, Material.PINK_TULIP, Material.OXEYE_DAISY, Material.BROWN_MUSHROOM, Material.RED_MUSHROOM, Material.OBSIDIAN, Material.DIAMOND_ORE, Material.WHEAT, Material.REDSTONE_ORE, Material.SNOW, Material.ICE, Material.CACTUS, Material.CLAY, Material.SUGAR_CANE, Material.PUMPKIN, Material.NETHERRACK, Material.SOUL_SAND, Material.MELON, Material.PUMPKIN_STEM, Material.MELON_STEM, Material.MYCELIUM, Material.LILY_PAD, Material.NETHER_WART, Material.END_STONE, Material.EMERALD_ORE, Material.CARROT, Material.POTATO, Material.KELP, Material.CHORUS_FLOWER, Material.CHORUS_PLANT, Material.CORNFLOWER, Material.LILY_OF_THE_VALLEY, Material.WITHER_ROSE, Material.SWEET_BERRY_BUSH)); public static Set SCULK = new HashSet<>(Arrays.asList()); - public static Set SIGNS = new HashSet<>(Arrays.asList(Material.OAK_SIGN, Material.SPRUCE_SIGN, Material.BIRCH_SIGN, Material.JUNGLE_SIGN, Material.ACACIA_SIGN, Material.DARK_OAK_SIGN, Material.CRIMSON_SIGN, Material.WARPED_SIGN, Material.CHERRY_SIGN, Material.MANGROVE_SIGN, Material.PALE_OAK_SIGN, Material.BAMBOO_SIGN, - Material.OAK_WALL_SIGN, Material.SPRUCE_WALL_SIGN, Material.BIRCH_WALL_SIGN, Material.JUNGLE_WALL_SIGN, Material.ACACIA_WALL_SIGN, Material.DARK_OAK_WALL_SIGN, Material.WARPED_WALL_SIGN, Material.CHERRY_WALL_SIGN, Material.MANGROVE_WALL_SIGN, Material.PALE_OAK_WALL_SIGN, Material.BAMBOO_WALL_SIGN, - Material.OAK_HANGING_SIGN, Material.SPRUCE_HANGING_SIGN, Material.BIRCH_HANGING_SIGN, Material.JUNGLE_HANGING_SIGN, Material.ACACIA_HANGING_SIGN, Material.DARK_OAK_HANGING_SIGN, Material.WARPED_HANGING_SIGN, Material.CHERRY_HANGING_SIGN, Material.MANGROVE_HANGING_SIGN, Material.PALE_OAK_HANGING_SIGN, Material.BAMBOO_HANGING_SIGN, - Material.OAK_WALL_HANGING_SIGN, Material.SPRUCE_WALL_HANGING_SIGN, Material.BIRCH_WALL_HANGING_SIGN, Material.JUNGLE_WALL_HANGING_SIGN, Material.ACACIA_WALL_HANGING_SIGN, Material.DARK_OAK_WALL_HANGING_SIGN, Material.WARPED_WALL_HANGING_SIGN, Material.CHERRY_WALL_HANGING_SIGN, Material.MANGROVE_WALL_HANGING_SIGN, Material.PALE_OAK_WALL_HANGING_SIGN, Material.BAMBOO_WALL_HANGING_SIGN)); + public static Set SIGNS = new HashSet<>(Arrays.asList()); /* blocks that support vertical scanning */ public static Set VERTICAL_TOP_BOTTOM = new HashSet<>(Arrays.asList()); @@ -64,6 +62,14 @@ public static void initialize() { } } + if (SIGNS.isEmpty()) { + for (Material material : Material.values()) { + if (BukkitAdapter.ADAPTER.isSign(material)) { + SIGNS.add(material); + } + } + } + Material shortGrass = Material.getMaterial("SHORT_GRASS"); if (shortGrass == null) { shortGrass = Material.getMaterial("GRASS"); @@ -73,7 +79,6 @@ public static void initialize() { NON_ATTACHABLE.add(shortGrass); } - TRACK_ANY.addAll(SIGNS); TRACK_ANY.addAll(BUTTONS); TRACK_TOP.addAll(DOORS); TRACK_TOP.addAll(PRESSURE_PLATES);