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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user