From d602d820dd970c12f79581b4275dab587b3f4ca3 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Tue, 7 Sep 2021 11:56:23 -0400 Subject: [PATCH] Re-use patterns in MinecraftTranslationRegistry --- .../java/org/geysermc/connector/GeyserConnector.java | 2 ++ .../network/translators/chat/MessageTranslator.java | 4 ++++ .../chat/MinecraftTranslationRegistry.java | 12 +++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java index 99ca790ee..234a3b1ca 100644 --- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java +++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java @@ -44,6 +44,7 @@ import org.geysermc.connector.configuration.GeyserConfiguration; import org.geysermc.connector.metrics.Metrics; import org.geysermc.connector.network.ConnectorServerEventHandler; import org.geysermc.connector.network.session.GeyserSession; +import org.geysermc.connector.network.translators.chat.MessageTranslator; import org.geysermc.connector.registry.BlockRegistries; import org.geysermc.connector.registry.Registries; import org.geysermc.connector.network.translators.PacketTranslatorRegistry; @@ -150,6 +151,7 @@ public class GeyserConnector { Registries.init(); ItemTranslator.init(); + MessageTranslator.init(); LocaleUtils.init(); ResourcePack.loadPacks(); diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/chat/MessageTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/chat/MessageTranslator.java index d04ce29d4..7bbf47947 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/chat/MessageTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/chat/MessageTranslator.java @@ -270,4 +270,8 @@ public class MessageTranslator { return false; } + + public static void init() { + // no-op + } } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/chat/MinecraftTranslationRegistry.java b/connector/src/main/java/org/geysermc/connector/network/translators/chat/MinecraftTranslationRegistry.java index a003fc912..75d488ef1 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/chat/MinecraftTranslationRegistry.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/chat/MinecraftTranslationRegistry.java @@ -27,11 +27,10 @@ package org.geysermc.connector.network.translators.chat; import net.kyori.adventure.key.Key; import net.kyori.adventure.translation.Translator; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.checkerframework.checker.nullness.qual.Nullable; import org.geysermc.connector.utils.LocaleUtils; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.text.MessageFormat; import java.util.Locale; import java.util.regex.Matcher; @@ -42,18 +41,21 @@ import java.util.regex.Pattern; * Used in MessageTranslator.java as part of the KyoriPowered/Adventure library */ public class MinecraftTranslationRegistry implements Translator { + private final Pattern stringReplacement = Pattern.compile("%s"); + private final Pattern positionalStringReplacement = Pattern.compile("%([0-9]+)\\$s"); + @Override public @Nonnull Key name() { return Key.key("geyser", "minecraft_translations"); } @Override - public @Nullable MessageFormat translate(@NonNull String key, @NonNull Locale locale) { + public @Nullable MessageFormat translate(@Nonnull String key, @Nonnull Locale locale) { // Get the locale string String localeString = LocaleUtils.getLocaleString(key, locale.toString()); // Replace the `%s` with numbered inserts `{0}` - Pattern p = Pattern.compile("%s"); + Pattern p = stringReplacement; Matcher m = p.matcher(localeString); StringBuffer sb = new StringBuffer(); int i = 0; @@ -63,7 +65,7 @@ public class MinecraftTranslationRegistry implements Translator { m.appendTail(sb); // Replace the `%x$s` with numbered inserts `{x}` - p = Pattern.compile("%([0-9]+)\\$s"); + p = positionalStringReplacement; m = p.matcher(sb.toString()); sb = new StringBuffer(); while (m.find()) {