diff --git a/bukkit/loader/src/main/resources/config.yml b/bukkit/loader/src/main/resources/config.yml index e4aa5638c..d0d39a52e 100644 --- a/bukkit/loader/src/main/resources/config.yml +++ b/bukkit/loader/src/main/resources/config.yml @@ -136,6 +136,8 @@ furniture: # If you want to remove all invalid furniture, please set this list to empty, otherwise only furniture in the list will be removed. list: - "xxx:invalid_furniture" + # Whether to hide the entity containing metadata + hide-base-entity: true image: # Prevent players from using images set in minecraft:default font diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 8e315fc3a..d588863b8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -598,6 +598,9 @@ public class PacketConsumers { if (furniture != null) { user.furnitureView().computeIfAbsent(furniture.baseEntityId(), k -> new ArrayList<>()).addAll(furniture.subEntityIds()); user.sendPacket(furniture.spawnPacket(), false); + if (ConfigManager.hideBaseEntity()) { + event.setCancelled(true); + } } } } catch (Exception e) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java index 746769d83..c61e8ccec 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigManager.java @@ -99,6 +99,7 @@ public class ConfigManager implements Reloadable { protected boolean furniture$remove_invalid_furniture_on_chunk_load$enable; protected Set furniture$remove_invalid_furniture_on_chunk_load$list; + protected boolean furniture$hide_base_entity; protected boolean block$sound_system$enable; protected boolean recipe$enable; @@ -248,6 +249,7 @@ public class ConfigManager implements Reloadable { // furniture furniture$remove_invalid_furniture_on_chunk_load$enable = config.getBoolean("furniture.remove-invalid-furniture-on-chunk-load.enable", false); furniture$remove_invalid_furniture_on_chunk_load$list = new HashSet<>(config.getStringList("furniture.remove-invalid-furniture-on-chunk-load.list")); + furniture$hide_base_entity = config.getBoolean("furniture.hide-base-entity", true); // block block$sound_system$enable = config.getBoolean("block.sound-system.enable", true); @@ -533,6 +535,10 @@ public class ConfigManager implements Reloadable { return instance().image$illegal_characters_filter$sign; } + public static boolean hideBaseEntity() { + return instance().furniture$hide_base_entity; + } + public YamlDocument loadOrCreateYamlData(String fileName) { File file = new File(this.plugin.dataFolderFile(), fileName); if (!file.exists()) {