From b5505ec06d4b1a2ccbbbd3fe3cc7e39777fcf5c7 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Mon, 14 Apr 2025 04:26:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DNBT=20parser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/item/factory/ComponentItemFactory.java | 4 ++++ .../bukkit/item/factory/ComponentItemFactory1_21_5.java | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory.java index f4bd8b6e8..afe9f24b4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory.java @@ -67,6 +67,10 @@ public class ComponentItemFactory extends BukkitItemFactory { ComponentType.parseJson(type, value).ifPresent(it -> FastNMS.INSTANCE.setComponent(item.getLiteralObject(), KeyUtils.toResourceLocation(type), it)); } + protected void setNBTComponentDirectly(ItemWrapper item, Key type, Object value) { + ComponentType.parseNbt(type, value).ifPresent(it -> FastNMS.INSTANCE.setComponent(item.getLiteralObject(), KeyUtils.toResourceLocation(type), it)); + } + @Override public Object encodeJava(Key componentType, @Nullable Object component) { return ComponentType.encodeJava(componentType, component).orElse(null); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java index 66575ee7e..1d9f23576 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java @@ -28,7 +28,7 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { if (json == null) { resetComponent(item, ComponentKeys.CUSTOM_NAME); } else { - setJavaComponentDirectly(item, ComponentKeys.CUSTOM_NAME, ChatComponent.toTag(ComponentUtils.jsonToMinecraft(json))); + setNBTComponentDirectly(item, ComponentKeys.CUSTOM_NAME, ChatComponent.toTag(ComponentUtils.jsonToMinecraft(json))); } } @@ -43,7 +43,7 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { if (json == null) { resetComponent(item, ComponentKeys.ITEM_NAME); } else { - setJavaComponentDirectly(item, ComponentKeys.ITEM_NAME, ChatComponent.toTag(ComponentUtils.jsonToMinecraft(json))); + setNBTComponentDirectly(item, ComponentKeys.ITEM_NAME, ChatComponent.toTag(ComponentUtils.jsonToMinecraft(json))); } } @@ -77,7 +77,7 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { for (String json : lore) { loreTags.add(ChatComponent.toTag(ComponentUtils.jsonToMinecraft(json))); } - setJavaComponentDirectly(item, ComponentKeys.LORE, TagList.newTag(loreTags)); + setNBTComponentDirectly(item, ComponentKeys.LORE, TagList.newTag(loreTags)); } } }