9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-06 15:52:03 +00:00

Merge branch 'Xiao-MoMi:dev' into dev

This commit is contained in:
jhqwqmc
2025-12-10 18:41:13 +08:00
committed by GitHub
3 changed files with 22 additions and 24 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,4 +1,4 @@
org.gradle.jvmargs=-Xmx1G
org.gradle.jvmargs=-Xmx4G
# Project settings
project_version=0.0.66.3