From ac40196dc4726dd16cee0394ff5a0b9ab1ba9fea Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Wed, 10 Dec 2025 18:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=BB=98=E8=AE=A4=E5=AD=97?= =?UTF-8?q?=E4=BD=93emoji=E4=BC=9A=E8=A2=AB=E6=84=8F=E5=A4=96=E5=B1=8F?= =?UTF-8?q?=E8=94=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/font/BukkitFontManager.java | 42 +++++++++---------- .../resources/default/configuration/emoji.yml | 2 +- gradle.properties | 4 +- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java index 637fb20a5..bb182cc20 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java @@ -4,7 +4,9 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import io.papermc.paper.event.player.AsyncChatCommandDecorateEvent; import io.papermc.paper.event.player.AsyncChatDecorateEvent; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.reflection.paper.PaperReflections; @@ -16,6 +18,7 @@ import net.momirealms.craftengine.core.font.*; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.AdventureHelper; +import net.momirealms.craftengine.core.util.MinecraftVersion; import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -36,6 +39,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.*; public class BukkitFontManager extends AbstractFontManager implements Listener { + private static BukkitFontManager instance; private final BukkitCraftEngine plugin; @@ -213,6 +217,7 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { } } + // fixme 这些做法其实是错误的,我们只应该修改字体为minecraft:default的部分 @SuppressWarnings("UnstableApiUsage") private void processChatEvent(AsyncChatDecorateEvent event) { Player player = event.player(); @@ -220,31 +225,24 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { try { Object originalMessage = PaperReflections.field$AsyncChatDecorateEvent$originalMessage.get(event); String rawJsonMessage = ComponentUtils.paperAdventureToJson(originalMessage); + boolean changed = false; + if (!player.hasPermission(FontManager.BYPASS_CHAT)) { + IllegalCharacterProcessResult result = processIllegalCharacters(rawJsonMessage); + if (result.has()) { + rawJsonMessage = result.text(); + changed = true; + } + } if (Config.allowEmojiChat()) { - EmojiTextProcessResult processResult = replaceJsonEmoji(rawJsonMessage, BukkitAdaptors.adapt(player)); - boolean hasChanged = processResult.replaced(); - if (!player.hasPermission(FontManager.BYPASS_CHAT)) { - IllegalCharacterProcessResult result = processIllegalCharacters(processResult.text()); - if (result.has()) { - Object component = ComponentUtils.jsonToPaperAdventure(result.text()); - PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, component); - } else if (hasChanged) { - Object component = ComponentUtils.jsonToPaperAdventure(processResult.text()); - PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, component); - } - } else if (hasChanged) { - Object component = ComponentUtils.jsonToPaperAdventure(processResult.text()); - PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, component); - } - } else { - if (!player.hasPermission(FontManager.BYPASS_CHAT)) { - IllegalCharacterProcessResult result = processIllegalCharacters(rawJsonMessage); - if (result.has()) { - Object component = ComponentUtils.jsonToPaperAdventure(result.text()); - PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, component); - } + EmojiTextProcessResult result = replaceJsonEmoji(rawJsonMessage, BukkitAdaptors.adapt(player)); + if (result.replaced()) { + rawJsonMessage = result.text(); + changed = true; } } + if (changed) { + PaperReflections.method$AsyncChatDecorateEvent$result.invoke(event, ComponentUtils.jsonToPaperAdventure(rawJsonMessage)); + } } catch (IllegalAccessException | InvocationTargetException e) { throw new RuntimeException(e); } diff --git a/common-files/src/main/resources/resources/default/configuration/emoji.yml b/common-files/src/main/resources/resources/default/configuration/emoji.yml index 4fe4b0e69..1490fff0d 100644 --- a/common-files/src/main/resources/resources/default/configuration/emoji.yml +++ b/common-files/src/main/resources/resources/default/configuration/emoji.yml @@ -120,6 +120,6 @@ images: default:emojis: height: 11 ascent: 9 - font: minecraft:emoji + font: minecraft:default # If your chat plugin supports custom font, better using a custom font here file: minecraft:font/image/emojis.png grid-size: 4,4 \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 28ff1616a..ce7822ca3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,11 @@ -org.gradle.jvmargs=-Xmx1G +org.gradle.jvmargs=-Xmx4G # Project settings project_version=0.0.66.3 config_version=60 lang_version=43 project_group=net.momirealms -latest_supported_version=1.21.10 +latest_supported_version=1.21.11 # Supported languages supported_languages=en,zh_cn,zh_tw,es,tr,de,ru_ru,fr_fr