Properly separate client and server parts
This commit is contained in:
parent
3c916a560e
commit
60e3c5c125
|
@ -1,4 +1,4 @@
|
||||||
package io.gitlab.jfronny.googlechat.mixin;
|
package io.gitlab.jfronny.googlechat.client.mixin;
|
||||||
|
|
||||||
import io.gitlab.jfronny.googlechat.GoogleChat;
|
import io.gitlab.jfronny.googlechat.GoogleChat;
|
||||||
import net.minecraft.client.gui.screen.ChatScreen;
|
import net.minecraft.client.gui.screen.ChatScreen;
|
|
@ -1,4 +1,4 @@
|
||||||
package io.gitlab.jfronny.googlechat.mixin;
|
package io.gitlab.jfronny.googlechat.client.mixin;
|
||||||
|
|
||||||
import io.gitlab.jfronny.googlechat.GoogleChat;
|
import io.gitlab.jfronny.googlechat.GoogleChat;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
|
@ -1,4 +1,4 @@
|
||||||
package io.gitlab.jfronny.googlechat.mixin;
|
package io.gitlab.jfronny.googlechat.client.mixin;
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import io.gitlab.jfronny.googlechat.GoogleChat;
|
import io.gitlab.jfronny.googlechat.GoogleChat;
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "io.gitlab.jfronny.googlechat.mixin",
|
"package": "io.gitlab.jfronny.googlechat.client.mixin",
|
||||||
"compatibilityLevel": "JAVA_17",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"client": [
|
"client": [
|
||||||
"ChatScreenMixin",
|
"ChatScreenMixin",
|
||||||
|
|
|
@ -1,39 +1,19 @@
|
||||||
package io.gitlab.jfronny.googlechat;
|
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 io.gitlab.jfronny.libjf.translate.api.*;
|
||||||
import net.fabricmc.api.*;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.fabric.api.message.v1.*;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.fabricmc.loader.api.*;
|
|
||||||
import net.minecraft.text.*;
|
import net.minecraft.text.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.*;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class GoogleChat implements ModInitializer {
|
public class GoogleChat {
|
||||||
public static final String MOD_ID = "google-chat";
|
public static final String MOD_ID = "google-chat";
|
||||||
public static final Logger LOGGER = Logger.forName(MOD_ID);
|
public static final Logger LOGGER = Logger.forName(MOD_ID);
|
||||||
public static final TranslateService<?> TRANSLATE_SERVICE = TranslateService.getConfigured();
|
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) {
|
public static Text translateIfNeeded(Text source, Direction direction, boolean respectRegex) {
|
||||||
if (shouldSkipOutright(direction)) return source;
|
if (shouldSkipOutright(direction)) return source;
|
||||||
String sourceString = toString(source);
|
String sourceString = toString(source);
|
||||||
|
@ -130,7 +110,7 @@ public class GoogleChat implements ModInitializer {
|
||||||
return !GoogleChatConfig.enabled || !hasTarget(direction);
|
return !GoogleChatConfig.enabled || !hasTarget(direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean hasTarget(Direction direction) {
|
public static boolean hasTarget(Direction direction) {
|
||||||
return !TRANSLATE_SERVICE.parseLang(switch (direction) {
|
return !TRANSLATE_SERVICE.parseLang(switch (direction) {
|
||||||
case C2S -> GoogleChatConfig.serverLanguage;
|
case C2S -> GoogleChatConfig.serverLanguage;
|
||||||
case S2C -> GoogleChatConfig.clientLanguage;
|
case S2C -> GoogleChatConfig.clientLanguage;
|
||||||
|
|
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,7 +16,7 @@
|
||||||
"environment": "*",
|
"environment": "*",
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"libjf:config": ["io.gitlab.jfronny.googlechat.JFC_GoogleChatConfig"],
|
"libjf:config": ["io.gitlab.jfronny.googlechat.JFC_GoogleChatConfig"],
|
||||||
"main": ["io.gitlab.jfronny.googlechat.GoogleChat"]
|
"server": ["io.gitlab.jfronny.googlechat.server.GoogleChatServer"]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue