From 3690ad162397f0557c84f08289538ea8b7c5af4b Mon Sep 17 00:00:00 2001 From: tahmid-23 <60953955+tahmid-23@users.noreply.github.com> Date: Sun, 24 Jul 2022 23:58:03 -0400 Subject: [PATCH] fix component flattening (#1266) --- .../provider/MinestomFlattenerProvider.java | 8 +++++++- .../adventure/provider/TranslationTest.java | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/test/java/net/minestom/server/adventure/provider/TranslationTest.java diff --git a/src/main/java/net/minestom/server/adventure/provider/MinestomFlattenerProvider.java b/src/main/java/net/minestom/server/adventure/provider/MinestomFlattenerProvider.java index d5c47d09f..cecc8ba6a 100644 --- a/src/main/java/net/minestom/server/adventure/provider/MinestomFlattenerProvider.java +++ b/src/main/java/net/minestom/server/adventure/provider/MinestomFlattenerProvider.java @@ -3,6 +3,8 @@ package net.minestom.server.adventure.provider; import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.flattener.ComponentFlattener; import net.kyori.adventure.translation.GlobalTranslator; +import net.kyori.adventure.translation.TranslationRegistry; +import net.kyori.adventure.translation.Translator; import net.minestom.server.adventure.MinestomAdventure; final class MinestomFlattenerProvider { @@ -13,7 +15,11 @@ final class MinestomFlattenerProvider { // handle server-side translations if needed builder.complexMapper(TranslatableComponent.class, ((component, consumer) -> { if (MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION) { - consumer.accept(GlobalTranslator.render(component, MinestomAdventure.getDefaultLocale())); + for (final Translator source : GlobalTranslator.translator().sources()) { + if (source instanceof TranslationRegistry registry && registry.contains(component.key())) { + consumer.accept(GlobalTranslator.render(component, MinestomAdventure.getDefaultLocale())); + } + } } })); diff --git a/src/test/java/net/minestom/server/adventure/provider/TranslationTest.java b/src/test/java/net/minestom/server/adventure/provider/TranslationTest.java new file mode 100644 index 000000000..6754317b8 --- /dev/null +++ b/src/test/java/net/minestom/server/adventure/provider/TranslationTest.java @@ -0,0 +1,20 @@ +package net.minestom.server.adventure.provider; + +import net.kyori.adventure.text.Component; +import net.minestom.server.adventure.MinestomAdventure; +import org.junit.jupiter.api.Test; + +public class TranslationTest { + + @Test + public void testUnregisteredTranslation() { + MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION = true; + try { + MinestomFlattenerProvider.INSTANCE.flatten(Component.translatable("key.unregistered"), text -> { + }); + } finally { + MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION = false; + } + } + +}