diff --git a/src/client/java/io/gitlab/jfronny/googlechat/mixin/ChatScreenMixin.java b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ChatScreenMixin.java similarity index 93% rename from src/client/java/io/gitlab/jfronny/googlechat/mixin/ChatScreenMixin.java rename to src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ChatScreenMixin.java index 1e66c41..1450d2a 100644 --- a/src/client/java/io/gitlab/jfronny/googlechat/mixin/ChatScreenMixin.java +++ b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ChatScreenMixin.java @@ -1,4 +1,4 @@ -package io.gitlab.jfronny.googlechat.mixin; +package io.gitlab.jfronny.googlechat.client.mixin; import io.gitlab.jfronny.googlechat.GoogleChat; import net.minecraft.client.gui.screen.ChatScreen; diff --git a/src/client/java/io/gitlab/jfronny/googlechat/mixin/ClientPlayerEntityMixin.java b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ClientPlayerEntityMixin.java similarity index 92% rename from src/client/java/io/gitlab/jfronny/googlechat/mixin/ClientPlayerEntityMixin.java rename to src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ClientPlayerEntityMixin.java index 70b45f9..341eb3e 100644 --- a/src/client/java/io/gitlab/jfronny/googlechat/mixin/ClientPlayerEntityMixin.java +++ b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/ClientPlayerEntityMixin.java @@ -1,4 +1,4 @@ -package io.gitlab.jfronny.googlechat.mixin; +package io.gitlab.jfronny.googlechat.client.mixin; import io.gitlab.jfronny.googlechat.GoogleChat; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/client/java/io/gitlab/jfronny/googlechat/mixin/MessageHandlerMixin.java b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/MessageHandlerMixin.java similarity index 98% rename from src/client/java/io/gitlab/jfronny/googlechat/mixin/MessageHandlerMixin.java rename to src/client/java/io/gitlab/jfronny/googlechat/client/mixin/MessageHandlerMixin.java index 41d2c1c..75e5ac6 100644 --- a/src/client/java/io/gitlab/jfronny/googlechat/mixin/MessageHandlerMixin.java +++ b/src/client/java/io/gitlab/jfronny/googlechat/client/mixin/MessageHandlerMixin.java @@ -1,4 +1,4 @@ -package io.gitlab.jfronny.googlechat.mixin; +package io.gitlab.jfronny.googlechat.client.mixin; import com.mojang.authlib.GameProfile; import io.gitlab.jfronny.googlechat.GoogleChat; diff --git a/src/client/resources/google-chat.client.mixins.json b/src/client/resources/google-chat.client.mixins.json index 8320acf..331889b 100644 --- a/src/client/resources/google-chat.client.mixins.json +++ b/src/client/resources/google-chat.client.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "io.gitlab.jfronny.googlechat.mixin", + "package": "io.gitlab.jfronny.googlechat.client.mixin", "compatibilityLevel": "JAVA_17", "client": [ "ChatScreenMixin", diff --git a/src/main/java/io/gitlab/jfronny/googlechat/GoogleChat.java b/src/main/java/io/gitlab/jfronny/googlechat/GoogleChat.java index a2e5c95..b942f9d 100644 --- a/src/main/java/io/gitlab/jfronny/googlechat/GoogleChat.java +++ b/src/main/java/io/gitlab/jfronny/googlechat/GoogleChat.java @@ -1,39 +1,19 @@ package io.gitlab.jfronny.googlechat; -import io.gitlab.jfronny.commons.log.*; +import io.gitlab.jfronny.commons.log.Logger; import io.gitlab.jfronny.libjf.translate.api.*; -import net.fabricmc.api.*; -import net.fabricmc.fabric.api.message.v1.*; -import net.fabricmc.loader.api.*; +import net.fabricmc.api.EnvType; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.text.*; -import java.util.*; -import java.util.concurrent.*; +import java.util.Arrays; +import java.util.Optional; -public class GoogleChat implements ModInitializer { +public class GoogleChat { public static final String MOD_ID = "google-chat"; public static final Logger LOGGER = Logger.forName(MOD_ID); public static final TranslateService TRANSLATE_SERVICE = TranslateService.getConfigured(); - @Override - public void onInitialize() { - ServerMessageDecoratorEvent.EVENT.register(ServerMessageDecoratorEvent.CONTENT_PHASE, (sender, message) -> { - Text original; - if (sender != null) { // Client messages should first be translated to the server language - if (hasTarget(Direction.C2S) && hasTarget(Direction.S2C)) // Do not translate back and forth - return CompletableFuture.completedFuture(message); - original = message; - message = translateIfNeeded(message, Direction.C2S, true); - if (GoogleChatConfig.debugLogs) LOGGER.info("Applied C2S translation from " + original + " to " + message); - } - // All messages should be translated to the client language before sending - original = message; - message = translateIfNeeded(message, Direction.S2C, true); - if (GoogleChatConfig.debugLogs) LOGGER.info("Applied S2C translation from " + original + " to " + message); - return CompletableFuture.completedFuture(message); - }); - } - public static Text translateIfNeeded(Text source, Direction direction, boolean respectRegex) { if (shouldSkipOutright(direction)) return source; String sourceString = toString(source); @@ -130,7 +110,7 @@ public class GoogleChat implements ModInitializer { return !GoogleChatConfig.enabled || !hasTarget(direction); } - private static boolean hasTarget(Direction direction) { + public static boolean hasTarget(Direction direction) { return !TRANSLATE_SERVICE.parseLang(switch (direction) { case C2S -> GoogleChatConfig.serverLanguage; case S2C -> GoogleChatConfig.clientLanguage; diff --git a/src/main/java/io/gitlab/jfronny/googlechat/server/GoogleChatServer.java b/src/main/java/io/gitlab/jfronny/googlechat/server/GoogleChatServer.java new file mode 100644 index 0000000..f727557 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/googlechat/server/GoogleChatServer.java @@ -0,0 +1,34 @@ +package io.gitlab.jfronny.googlechat.server; + +import io.gitlab.jfronny.googlechat.GoogleChat; +import io.gitlab.jfronny.googlechat.GoogleChatConfig; +import net.fabricmc.api.DedicatedServerModInitializer; +import net.fabricmc.fabric.api.message.v1.ServerMessageDecoratorEvent; +import net.minecraft.text.Text; + +import java.util.concurrent.CompletableFuture; + +import static io.gitlab.jfronny.googlechat.GoogleChat.hasTarget; +import static io.gitlab.jfronny.googlechat.GoogleChat.translateIfNeeded; +import static io.gitlab.jfronny.libjf.LibJf.LOGGER; + +public class GoogleChatServer implements DedicatedServerModInitializer { + @Override + public void onInitializeServer() { + ServerMessageDecoratorEvent.EVENT.register(ServerMessageDecoratorEvent.CONTENT_PHASE, (sender, message) -> { + Text original; + if (sender != null) { // Client messages should first be translated to the server language + if (hasTarget(GoogleChat.Direction.C2S) && hasTarget(GoogleChat.Direction.S2C)) // Do not translate back and forth + return CompletableFuture.completedFuture(message); + original = message; + message = translateIfNeeded(message, GoogleChat.Direction.C2S, true); + if (GoogleChatConfig.debugLogs) LOGGER.info("Applied C2S translation from " + original + " to " + message); + } + // All messages should be translated to the client language before sending + original = message; + message = translateIfNeeded(message, GoogleChat.Direction.S2C, true); + if (GoogleChatConfig.debugLogs) LOGGER.info("Applied S2C translation from " + original + " to " + message); + return CompletableFuture.completedFuture(message); + }); + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a2b30b8..0ec627a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "environment": "*", "entrypoints": { "libjf:config": ["io.gitlab.jfronny.googlechat.JFC_GoogleChatConfig"], - "main": ["io.gitlab.jfronny.googlechat.GoogleChat"] + "server": ["io.gitlab.jfronny.googlechat.server.GoogleChatServer"] }, "mixins": [ {