9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

修复默认字体emoji会被意外屏蔽

This commit is contained in:
XiaoMoMi
2025-12-10 18:22:21 +08:00
parent c5539b75c3
commit ac40196dc4
3 changed files with 23 additions and 25 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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