From a21eb8fc1451d9116dcd90eea7b538fc3a0f79bd Mon Sep 17 00:00:00 2001 From: Xujiayao Date: Sun, 17 Mar 2024 16:33:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=8E=A9=E5=AE=B6=E5=9B=A0?= =?UTF-8?q?=E4=B8=8B=E8=90=BD=E7=9A=84=E6=96=B9=E5=9D=97=E5=92=8C=E5=88=BB?= =?UTF-8?q?=E6=84=8F=E7=9A=84=E6=B8=B8=E6=88=8F=E8=AE=BE=E8=AE=A1=E8=80=8C?= =?UTF-8?q?=E6=AD=BB=E4=BA=A1=E5=AF=BC=E8=87=B4=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #223 --- .../minecraft/MinecraftEventListener.java | 32 +++---------------- .../minecraft/MinecraftEvents.java | 7 ++-- .../minecraft/mixins/MixinServerPlayer.java | 2 +- .../discord_mc_chat/utils/Translations.java | 24 ++++++++++++++ 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEventListener.java b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEventListener.java index 5c800498..4c97b185 100644 --- a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEventListener.java +++ b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEventListener.java @@ -13,9 +13,6 @@ import net.fellbaum.jemoji.EmojiManager; import net.minecraft.ChatFormatting; import net.minecraft.advancements.DisplayInfo; import net.minecraft.network.chat.Component; -//#if MC >= 11900 -import net.minecraft.network.chat.ComponentContents; -//#endif import net.minecraft.network.chat.MutableComponent; //#if MC < 11900 //$$ import net.minecraft.network.chat.TextComponent; @@ -247,40 +244,21 @@ public class MinecraftEventListener { } }); - MinecraftEvents.PLAYER_DIE.register((player, source) -> { + MinecraftEvents.PLAYER_DIE.register(player -> { if (CONFIG.generic.announceDeathMessages) { //#if MC >= 11900 - TranslatableContents deathMessage = (TranslatableContents) source.getLocalizedDeathMessage(player).getContents(); + TranslatableContents deathMessage = (TranslatableContents) player.getCombatTracker().getDeathMessage().getContents(); //#else - //$$ TranslatableComponent deathMessage = (TranslatableComponent) source.getLocalizedDeathMessage(player); + //$$ TranslatableComponent deathMessage = (TranslatableComponent) player.getCombatTracker().getDeathMessage(); //#endif String key = deathMessage.getKey(); - Object[] args = new String[deathMessage.getArgs().length]; - for (int i = 0; i < deathMessage.getArgs().length; i++) { - Object object = deathMessage.getArgs()[i]; - if (object instanceof Component component) { - //#if MC >= 11900 - ComponentContents componentContents = component.getContents(); - if (componentContents instanceof TranslatableContents) { - args[i] = Translations.translate(((TranslatableContents) componentContents).getKey()); - //#else - //$$ if (component instanceof TranslatableComponent) { - //$$ args[i] = Translations.translate(((TranslatableComponent) component).getKey()); - //#endif - } else { - args[i] = component.getString(); - } - } else { - args[i] = object == null ? "null" : object.toString(); - } - } CHANNEL.sendMessage(Translations.translateMessage("message.deathMessage") - .replace("%deathMessage%", MarkdownSanitizer.escape(Translations.translate(key, args))) + .replace("%deathMessage%", MarkdownSanitizer.escape(Translations.translate(key, deathMessage.getArgs()))) .replace("%playerName%", MarkdownSanitizer.escape(Objects.requireNonNull(player.getDisplayName()).getString()))).queue(); if (CONFIG.multiServer.enable) { MULTI_SERVER.sendMessage(false, false, false, null, Translations.translateMessage("message.deathMessage") - .replace("%deathMessage%", MarkdownSanitizer.escape(Translations.translate(key, args))) + .replace("%deathMessage%", MarkdownSanitizer.escape(Translations.translate(key, deathMessage.getArgs()))) .replace("%playerName%", MarkdownSanitizer.escape(player.getDisplayName().getString()))); } } diff --git a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEvents.java b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEvents.java index 2d32d851..417d4303 100644 --- a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEvents.java +++ b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/MinecraftEvents.java @@ -6,7 +6,6 @@ import net.minecraft.advancements.AdvancementHolder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.damagesource.DamageSource; import java.util.Optional; @@ -41,9 +40,9 @@ public interface MinecraftEvents { } }); - Event PLAYER_DIE = EventFactory.createArrayBacked(PlayerDie.class, callbacks -> (player, source) -> { + Event PLAYER_DIE = EventFactory.createArrayBacked(PlayerDie.class, callbacks -> player -> { for (PlayerDie callback : callbacks) { - callback.die(player, source); + callback.die(player); } }); @@ -77,7 +76,7 @@ public interface MinecraftEvents { } interface PlayerDie { - void die(ServerPlayer player, DamageSource source); + void die(ServerPlayer player); } interface PlayerJoin { diff --git a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/mixins/MixinServerPlayer.java b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/mixins/MixinServerPlayer.java index b74254ac..402448c6 100644 --- a/src/main/java/com/xujiayao/discord_mc_chat/minecraft/mixins/MixinServerPlayer.java +++ b/src/main/java/com/xujiayao/discord_mc_chat/minecraft/mixins/MixinServerPlayer.java @@ -16,6 +16,6 @@ public class MixinServerPlayer { @Inject(method = "die(Lnet/minecraft/world/damagesource/DamageSource;)V", at = @At("HEAD")) private void die(DamageSource damageSource, CallbackInfo ci) { - MinecraftEvents.PLAYER_DIE.invoker().die((ServerPlayer) (Object) this, damageSource); + MinecraftEvents.PLAYER_DIE.invoker().die((ServerPlayer) (Object) this); } } diff --git a/src/main/java/com/xujiayao/discord_mc_chat/utils/Translations.java b/src/main/java/com/xujiayao/discord_mc_chat/utils/Translations.java index 39052812..811ff567 100644 --- a/src/main/java/com/xujiayao/discord_mc_chat/utils/Translations.java +++ b/src/main/java/com/xujiayao/discord_mc_chat/utils/Translations.java @@ -5,6 +5,11 @@ import com.google.gson.reflect.TypeToken; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.DetectedVersion; import net.minecraft.locale.Language; +import net.minecraft.network.chat.Component; +//#if MC >= 11900 +import net.minecraft.network.chat.ComponentContents; +//#endif +import net.minecraft.network.chat.contents.TranslatableContents; import okhttp3.CacheControl; import okhttp3.Request; import okhttp3.Response; @@ -105,6 +110,25 @@ public class Translations { } public static String translate(String key, Object... args) { + for (int i = 0; i < args.length; i++) { + Object object = args[i]; + if (object instanceof Component component) { + //#if MC >= 11900 + ComponentContents componentContents = component.getContents(); + if (componentContents instanceof TranslatableContents translatable) { + args[i] = translate(translatable.getKey(), translatable.getArgs()); + //#else + //$$ if (component instanceof TranslatableComponent translatable) { + //$$ args[i] = translate(translatable.getKey(), translatable.getArgs()); + //#endif + } else { + args[i] = component.getString(); + } + } else { + args[i] = object == null ? "null" : object.toString(); + } + } + String translation1 = translations.get(key); if (translation1 != null) { return String.format(translation1, args);