From a740917e28811298c28f563f1fb087e5b4629bf8 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 8 Jul 2025 20:16:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96non-italic-tag=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/network/PacketConsumers.java | 4 ++-- common-files/src/main/resources/config.yml | 2 ++ .../core/item/AbstractItemManager.java | 23 ++++++++++++------- .../item/modifier/CustomNameModifier.java | 11 ++++++++- .../core/item/modifier/LoreModifier.java | 16 ++++++++++++- .../core/plugin/config/Config.java | 6 +++++ 6 files changed, 50 insertions(+), 12 deletions(-) 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 13bb3c846..9347cd8a9 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 @@ -2441,8 +2441,8 @@ public class PacketConsumers { user.addResourcePackUUID(data.uuid()); } FastNMS.INSTANCE.method$ServerConfigurationPacketListenerImpl$returnToWorld(packetListener); - }).exceptionally(throwable -> { - CraftEngine.instance().logger().warn("Failed to handle ClientboundFinishConfigurationPacket", throwable); + }).exceptionally(t -> { + CraftEngine.instance().logger().warn("Failed to handle ClientboundFinishConfigurationPacket", t); FastNMS.INSTANCE.method$ServerConfigurationPacketListenerImpl$returnToWorld(packetListener); return null; }); diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index 9fd6e0d5a..c76632d9f 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -140,6 +140,8 @@ resource-pack: item: # Make custom-model-data and item-model clientside by default client-bound-model: false + # Add a tag on custom name and lore + non-italic-tag: false equipment: # The sacrificed-vanilla-armor argument determines which vanilla armor gets completely removed (loses all its trims) diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java index 6c920ee8a..30ae96bae 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java @@ -509,14 +509,21 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl ExternalItemProvider provider = AbstractItemManager.this.getExternalItemProvider(plugin); return new ExternalModifier<>(id, Objects.requireNonNull(provider, "Item provider " + plugin + " not found")); }, "external"); - registerDataType((obj) -> { - String name = obj.toString(); - return new CustomNameModifier<>(name); - }, "custom-name"); - registerDataType((obj) -> { - String name = obj.toString(); - return new ItemNameModifier<>(name); - }, "item-name", "display-name"); + if (VersionHelper.isOrAbove1_20_5()) { + registerDataType((obj) -> { + String name = obj.toString(); + return new CustomNameModifier<>(name); + }, "custom-name"); + registerDataType((obj) -> { + String name = obj.toString(); + return new ItemNameModifier<>(name); + }, "item-name", "display-name"); + } else { + registerDataType((obj) -> { + String name = obj.toString(); + return new CustomNameModifier<>(name); + }, "custom-name", "item-name", "display-name"); + } registerDataType((obj) -> { List lore = MiscUtils.getAsStringList(obj); return new LoreModifier<>(lore); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java index ab3b0adfe..818c67a65 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java @@ -4,6 +4,7 @@ import net.momirealms.craftengine.core.item.ComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.NetworkItemHandler; +import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.CompoundTag; @@ -13,7 +14,15 @@ public class CustomNameModifier implements ItemDataModifier { private final String argument; public CustomNameModifier(String argument) { - this.argument = argument; + if (Config.addNonItalicTag()) { + if (argument.startsWith("")) { + this.argument = argument; + } else { + this.argument = "" + argument; + } + } else { + this.argument = argument; + } } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java index aaa1c47fc..f6e5e9651 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java @@ -4,18 +4,32 @@ import net.momirealms.craftengine.core.item.ComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.NetworkItemHandler; +import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.CompoundTag; import net.momirealms.sparrow.nbt.Tag; +import java.util.ArrayList; import java.util.List; public class LoreModifier implements ItemDataModifier { private final List argument; public LoreModifier(List argument) { - this.argument = argument; + if (Config.addNonItalicTag()) { + List processed = new ArrayList<>(argument.size()); + for (String arg : argument) { + if (arg.startsWith("")) { + processed.add(arg); + } else { + processed.add("" + arg); + } + } + this.argument = processed; + } else { + this.argument = argument; + } } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index d2d8bb09b..8664b674a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -146,6 +146,7 @@ public class Config { protected boolean image$intercept_packets$item; protected boolean item$client_bound_model; + protected boolean item$non_italic_tag; protected String equipment$sacrificed_vanilla_armor$type; protected Key equipment$sacrificed_vanilla_armor$asset_id; @@ -344,6 +345,7 @@ public class Config { // item item$client_bound_model = config.getBoolean("item.client-bound-model", false); + item$non_italic_tag = config.getBoolean("item.non-italic-tag", false); // block block$sound_system$enable = config.getBoolean("block.sound-system.enable", true); @@ -747,6 +749,10 @@ public class Config { return instance.chunk_system$cache_system; } + public static boolean addNonItalicTag() { + return instance.item$non_italic_tag; + } + public static boolean fastInjection() { return instance.chunk_system$injection$use_fast_method; }