From e9447dc5e5db1e04cf4b17c1a4064a985ce9c3cf Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Nov 2024 21:08:50 +1100 Subject: [PATCH] Make BlockDataMeta#setBlockData hide unspecified states --- .../org/bukkit/craftbukkit/block/data/CraftBlockData.java | 8 ++++++-- .../org/bukkit/craftbukkit/inventory/CraftMetaItem.java | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java index 83fc48a16..032e381ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java @@ -253,10 +253,14 @@ public class CraftBlockData implements BlockData { return stateString.toString(); } - public Map toStates() { + public Map toStates(boolean hideUnspecified) { + return (hideUnspecified && parsedStates != null) ? toStates(parsedStates) : toStates(state.getValues()); + } + + private static Map toStates(Map, Comparable> states) { Map compound = new HashMap<>(); - for (Map.Entry, Comparable> entry : state.getValues().entrySet()) { + for (Map.Entry, Comparable> entry : states.entrySet()) { IBlockState iblockstate = (IBlockState) entry.getKey(); compound.put(iblockstate.getName(), iblockstate.getName(entry.getValue())); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index d947ee43a..46216aeff 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -1318,7 +1318,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public void setBlockData(BlockData blockData) { - this.blockData = (blockData == null) ? null : ((CraftBlockData) blockData).toStates(); + this.blockData = (blockData == null) ? null : ((CraftBlockData) blockData).toStates(true); } @Override