diff --git a/src/main/java/vip/fubuki/playersync/sync/ModsSupport.java b/src/main/java/vip/fubuki/playersync/sync/ModsSupport.java index 1c0a3ad..b07db91 100644 --- a/src/main/java/vip/fubuki/playersync/sync/ModsSupport.java +++ b/src/main/java/vip/fubuki/playersync/sync/ModsSupport.java @@ -70,9 +70,7 @@ public class ModsSupport { } String serialized = entry.getValue(); try { - String nbtString = VanillaSync.deserializeString(serialized); - CompoundTag tag = VanillaSync.snbtToFixedCompoundTag(nbtString); - ItemStack stack = ItemStack.of(tag); + ItemStack stack = VanillaSync.deserializeAndCreatePlaceholderIfNeeded(serialized); if (handler.getCurios().containsKey(slotType)) { ICurioStacksHandler stacksHandler = handler.getCurios().get(slotType); IDynamicStackHandler dynStacks = stacksHandler.getStacks(); diff --git a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java index de47a05..fe00ae6 100644 --- a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java @@ -249,7 +249,7 @@ public class VanillaSync { } // deserialize item and potentially create placeholders - private static ItemStack deserializeAndCreatePlaceholderIfNeeded(String serializedNbt) + public static ItemStack deserializeAndCreatePlaceholderIfNeeded(String serializedNbt) throws CommandSyntaxException { if (serializedNbt == null || serializedNbt.isEmpty() || serializedNbt.equals("B64:e30=")) { // Check for empty NBT (Base64 encoded '{}')