feat: use categories in config
This commit is contained in:
parent
b85cd1ee94
commit
08d9c0633b
|
@ -10,7 +10,7 @@ jfMod {
|
|||
minecraftVersion = "1.20.1"
|
||||
yarn("build.9")
|
||||
loaderVersion = "0.14.21"
|
||||
libJfVersion = "3.10.1"
|
||||
libJfVersion = "3.10.2"
|
||||
|
||||
modrinth {
|
||||
projectId = "google-chat"
|
||||
|
|
|
@ -27,7 +27,7 @@ public class GoogleChat implements ModInitializer {
|
|||
String sourceString = toString(source);
|
||||
if (respectRegex && failsRegex(sourceString, direction)) return source;
|
||||
MutableText translated;
|
||||
if (GoogleChatConfig.desugar) {
|
||||
if (GoogleChatConfig.Processing.desugar) {
|
||||
translated = Text.literal(translateIfNeeded(sourceString, direction, true));
|
||||
} else {
|
||||
translated = MutableText.of(translateIfNeeded(source.getContent(), direction, false))
|
||||
|
@ -36,8 +36,8 @@ public class GoogleChat implements ModInitializer {
|
|||
translated.append(translateIfNeeded(sibling, direction, false));
|
||||
}
|
||||
}
|
||||
if (GoogleChatConfig.debugLogs) LOGGER.info("Translated " + sourceString + " to " + toString(translated));
|
||||
if (GoogleChatConfig.translationTooltip) {
|
||||
if (GoogleChatConfig.Advanced.debugLogs) LOGGER.info("Translated " + sourceString + " to " + toString(translated));
|
||||
if (GoogleChatConfig.General.translationTooltip) {
|
||||
return source.copy().styled(style -> addHover(style, Text.literal("Translated: ").append(translated)));
|
||||
} else if (translated.getStyle().getHoverEvent() == null) {
|
||||
return translated.styled(style -> addHover(style, Text.literal("Original: ").append(source)));
|
||||
|
@ -111,12 +111,12 @@ public class GoogleChat implements ModInitializer {
|
|||
|
||||
private static boolean failsRegex(String text, Direction direction) {
|
||||
boolean isSender = (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) == (direction == Direction.C2S);
|
||||
if (isSender) return text.matches(GoogleChatConfig.sendingRegex) == GoogleChatConfig.sendingRegexIsBlacklist;
|
||||
else return text.matches(GoogleChatConfig.receivingRegex) == GoogleChatConfig.receivingRegexIsBlacklist;
|
||||
if (isSender) return text.matches(GoogleChatConfig.Processing.sendingRegex) == GoogleChatConfig.Processing.sendingRegexIsBlacklist;
|
||||
else return text.matches(GoogleChatConfig.Processing.receivingRegex) == GoogleChatConfig.Processing.receivingRegexIsBlacklist;
|
||||
}
|
||||
|
||||
private static boolean shouldSkipOutright(Direction direction) {
|
||||
return !GoogleChatConfig.enabled || !hasTarget(direction);
|
||||
return !GoogleChatConfig.General.enabled || !hasTarget(direction);
|
||||
}
|
||||
|
||||
public static boolean hasTarget(Direction direction) {
|
||||
|
@ -129,15 +129,15 @@ public class GoogleChat implements ModInitializer {
|
|||
|
||||
public String source() {
|
||||
return switch (this) {
|
||||
case C2S -> GoogleChatConfig.clientLanguage;
|
||||
case S2C -> GoogleChatConfig.serverLanguage;
|
||||
case C2S -> GoogleChatConfig.General.clientLanguage;
|
||||
case S2C -> GoogleChatConfig.General.serverLanguage;
|
||||
};
|
||||
}
|
||||
|
||||
public String target() {
|
||||
return switch (this) {
|
||||
case C2S -> GoogleChatConfig.serverLanguage;
|
||||
case S2C -> GoogleChatConfig.clientLanguage;
|
||||
case C2S -> GoogleChatConfig.General.serverLanguage;
|
||||
case S2C -> GoogleChatConfig.General.clientLanguage;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,10 +6,10 @@ import net.minecraft.text.Text;
|
|||
import java.util.Map;
|
||||
|
||||
public class GoogleChatCache {
|
||||
private static Map<Text, Text> s2ct = new FixedSizeMap<>(GoogleChatConfig.cacheSize);
|
||||
private static Map<Text, Text> c2st = new FixedSizeMap<>(GoogleChatConfig.cacheSize);
|
||||
private static Map<String, String> s2cs = new FixedSizeMap<>(GoogleChatConfig.cacheSize);
|
||||
private static Map<String, String> c2ss = new FixedSizeMap<>(GoogleChatConfig.cacheSize);
|
||||
private static Map<Text, Text> s2ct = new FixedSizeMap<>(GoogleChatConfig.Advanced.cacheSize);
|
||||
private static Map<Text, Text> c2st = new FixedSizeMap<>(GoogleChatConfig.Advanced.cacheSize);
|
||||
private static Map<String, String> s2cs = new FixedSizeMap<>(GoogleChatConfig.Advanced.cacheSize);
|
||||
private static Map<String, String> c2ss = new FixedSizeMap<>(GoogleChatConfig.Advanced.cacheSize);
|
||||
|
||||
public static void clear() {
|
||||
s2ct.clear();
|
||||
|
|
|
@ -2,51 +2,57 @@ package io.gitlab.jfronny.googlechat;
|
|||
|
||||
import io.gitlab.jfronny.commons.serialize.gson.api.v1.Ignore;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.*;
|
||||
import io.gitlab.jfronny.libjf.config.api.v1.dsl.ConfigBuilder;
|
||||
import net.fabricmc.api.*;
|
||||
import net.fabricmc.loader.api.*;
|
||||
|
||||
@JfConfig(referencedConfigs = "libjf-translate-v1")
|
||||
@JfConfig(tweaker = GoogleChatConfig.class)
|
||||
public class GoogleChatConfig {
|
||||
@Entry public static boolean enabled = true;
|
||||
@Entry public static String serverLanguage = "auto";
|
||||
@Entry public static String clientLanguage = "en";
|
||||
@Entry public static boolean translationTooltip = false;
|
||||
@Entry public static boolean desugar = false;
|
||||
@Entry public static String receivingRegex = "";
|
||||
@Entry public static boolean receivingRegexIsBlacklist = true;
|
||||
@Entry public static String sendingRegex = "";
|
||||
@Entry public static boolean sendingRegexIsBlacklist = true;
|
||||
@Entry(min = 1, max = 1024) public static int cacheSize = 256;
|
||||
@Entry public static boolean debugLogs = FabricLoader.getInstance().isDevelopmentEnvironment();
|
||||
@Category(referencedConfigs = "libjf-translate-v1")
|
||||
public static class General {
|
||||
@Entry public static boolean enabled = true;
|
||||
@Entry public static String serverLanguage = "auto";
|
||||
@Entry public static String clientLanguage = "en";
|
||||
@Entry public static boolean translationTooltip = false;
|
||||
|
||||
@Preset
|
||||
public static void client() {
|
||||
enabled = true;
|
||||
if (!serverLanguage.equals("auto")) {
|
||||
serverLanguage = "auto";
|
||||
clientLanguage = "en";
|
||||
String tmp = receivingRegex;
|
||||
receivingRegex = sendingRegex;
|
||||
sendingRegex = tmp;
|
||||
@Preset
|
||||
public static void client() {
|
||||
enabled = true;
|
||||
if (!serverLanguage.equals("auto")) {
|
||||
serverLanguage = "auto";
|
||||
clientLanguage = "en";
|
||||
}
|
||||
}
|
||||
|
||||
@Preset
|
||||
public static void server() {
|
||||
enabled = true;
|
||||
if (!clientLanguage.equals("auto")) {
|
||||
clientLanguage = "auto";
|
||||
serverLanguage = "en";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preset
|
||||
public static void server() {
|
||||
enabled = true;
|
||||
if (!clientLanguage.equals("auto")) {
|
||||
clientLanguage = "auto";
|
||||
serverLanguage = "en";
|
||||
String tmp = receivingRegex;
|
||||
receivingRegex = sendingRegex;
|
||||
sendingRegex = tmp;
|
||||
}
|
||||
@Category
|
||||
public static class Processing {
|
||||
@Entry public static boolean desugar = false;
|
||||
@Entry public static String receivingRegex = "";
|
||||
@Entry public static boolean receivingRegexIsBlacklist = true;
|
||||
@Entry public static String sendingRegex = "";
|
||||
@Entry public static boolean sendingRegexIsBlacklist = true;
|
||||
}
|
||||
|
||||
@Category
|
||||
public static class Advanced {
|
||||
@Entry(min = 1, max = 1024) public static int cacheSize = 256;
|
||||
@Entry public static boolean debugLogs = FabricLoader.getInstance().isDevelopmentEnvironment();
|
||||
}
|
||||
|
||||
@Ignore private static boolean initial = true;
|
||||
@Verifier
|
||||
public static void verify() {
|
||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER && !clientLanguage.equals("auto")) {
|
||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER && !General.clientLanguage.equals("auto")) {
|
||||
System.err.println("""
|
||||
Your client language is not set to "auto" and you are using a server.
|
||||
This setup is not recommended! Please set up GoogleChat according to its documentation!""");
|
||||
|
@ -55,6 +61,21 @@ public class GoogleChatConfig {
|
|||
initial = false;
|
||||
}
|
||||
|
||||
public static ConfigBuilder<?> tweak(ConfigBuilder<?> builder) {
|
||||
return builder
|
||||
.addMigration("enabled", reader -> General.enabled = reader.nextBoolean())
|
||||
.addMigration("serverLanguage", reader -> General.serverLanguage = reader.nextString())
|
||||
.addMigration("clientLanguage", reader -> General.clientLanguage = reader.nextString())
|
||||
.addMigration("translationTooltip", reader -> General.translationTooltip = reader.nextBoolean())
|
||||
.addMigration("desugar", reader -> Processing.desugar = reader.nextBoolean())
|
||||
.addMigration("receivingRegex", reader -> Processing.receivingRegex = reader.nextString())
|
||||
.addMigration("receivingRegexIsBlacklist", reader -> Processing.receivingRegexIsBlacklist = reader.nextBoolean())
|
||||
.addMigration("sendingRegex", reader -> Processing.sendingRegex = reader.nextString())
|
||||
.addMigration("sendingRegexIsBlacklist", reader -> Processing.sendingRegexIsBlacklist = reader.nextBoolean())
|
||||
.addMigration("cacheSize", reader -> Advanced.cacheSize = reader.nextInt())
|
||||
.addMigration("debugLogs", reader -> Advanced.debugLogs = reader.nextBoolean());
|
||||
}
|
||||
|
||||
static {
|
||||
JFC_GoogleChatConfig.ensureInitialized();
|
||||
}
|
||||
|
|
|
@ -28,12 +28,12 @@ public class GoogleChatServer implements DedicatedServerModInitializer {
|
|||
return CompletableFuture.completedFuture(message);
|
||||
original = message;
|
||||
message = GoogleChatCache.c2s(message);
|
||||
if (GoogleChatConfig.debugLogs) LOGGER.info("Applied C2S translation from " + original + " to " + message);
|
||||
if (GoogleChatConfig.Advanced.debugLogs) LOGGER.info("Applied C2S translation from " + original + " to " + message);
|
||||
}
|
||||
// All messages should be translated to the client language before sending
|
||||
original = message;
|
||||
message = GoogleChatCache.s2c(message);
|
||||
if (GoogleChatConfig.debugLogs) LOGGER.info("Applied S2C translation from " + original + " to " + message);
|
||||
if (GoogleChatConfig.Advanced.debugLogs) LOGGER.info("Applied S2C translation from " + original + " to " + message);
|
||||
return CompletableFuture.completedFuture(message);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,27 +1,30 @@
|
|||
{
|
||||
"google-chat.jfconfig.title": "GoogleChat",
|
||||
"google-chat.jfconfig.enabled": "Enabled",
|
||||
"google-chat.jfconfig.enabled.tooltip": "Whether translations should be applied",
|
||||
"google-chat.jfconfig.serverLanguage": "Server Language",
|
||||
"google-chat.jfconfig.serverLanguage.tooltip": "The language of the server used in translations. \"auto\" will disable translating your own messages",
|
||||
"google-chat.jfconfig.clientLanguage": "Client Language",
|
||||
"google-chat.jfconfig.clientLanguage.tooltip": "Your own language used in translations. \"auto\" will disable translating messages by other server members",
|
||||
"google-chat.jfconfig.translationTooltip": "Translation Tooltip",
|
||||
"google-chat.jfconfig.translationTooltip.tooltip": "Display translations as a tooltip (on hover) and keep the original message. This will overwrite other tooltips",
|
||||
"google-chat.jfconfig.desugar": "Desugar",
|
||||
"google-chat.jfconfig.desugar.tooltip": "Translate all messages as plain strings. This will remove formatting but may be more accurate",
|
||||
"google-chat.jfconfig.receivingRegex": "Receiving Regex",
|
||||
"google-chat.jfconfig.receivingRegex.tooltip": "A Regex pattern to check whether a received message should be translated",
|
||||
"google-chat.jfconfig.receivingRegexIsBlacklist": "Receiving Regex Is Blacklist",
|
||||
"google-chat.jfconfig.receivingRegexIsBlacklist.tooltip": "Whether the relevant regex should blacklist messages from translation instead of whitelisting",
|
||||
"google-chat.jfconfig.sendingRegex": "Sending Regex",
|
||||
"google-chat.jfconfig.sendingRegex.tooltip": "A Regex pattern to check whether a sent message should be translated",
|
||||
"google-chat.jfconfig.sendingRegexIsBlacklist": "Sending Regex Is Blacklist",
|
||||
"google-chat.jfconfig.sendingRegexIsBlacklist.tooltip": "Whether the relevant regex should blacklist messages from translation instead of whitelisting",
|
||||
"google-chat.jfconfig.cacheSize": "Cache Size",
|
||||
"google-chat.jfconfig.cacheSize.tooltips": "The size of each message cache. Since there are four caches, the actual size will be four times this.",
|
||||
"google-chat.jfconfig.debugLogs": "Debug Logs",
|
||||
"google-chat.jfconfig.debugLogs.tooltips": "Log additional information about message processing. Useful for debugging",
|
||||
"google-chat.jfconfig.general.title": "General",
|
||||
"google-chat.jfconfig.general.enabled": "Enabled",
|
||||
"google-chat.jfconfig.general.enabled.tooltip": "Whether translations should be applied",
|
||||
"google-chat.jfconfig.general.serverLanguage": "Server Language",
|
||||
"google-chat.jfconfig.general.serverLanguage.tooltip": "The language of the server used in translations. \"auto\" will disable translating your own messages",
|
||||
"google-chat.jfconfig.general.clientLanguage": "Client Language",
|
||||
"google-chat.jfconfig.general.clientLanguage.tooltip": "Your own language used in translations. \"auto\" will disable translating messages by other server members",
|
||||
"google-chat.jfconfig.general.translationTooltip": "Translation Tooltip",
|
||||
"google-chat.jfconfig.general.translationTooltip.tooltip": "Display translations as a tooltip (on hover) and keep the original message. This will overwrite other tooltips",
|
||||
"google-chat.jfconfig.processing.title": "Processing",
|
||||
"google-chat.jfconfig.processing.desugar": "Desugar",
|
||||
"google-chat.jfconfig.processing.desugar.tooltip": "Translate all messages as plain strings. This improves translation quality but removes all message styling",
|
||||
"google-chat.jfconfig.processing.receivingRegex": "Receiving Regex",
|
||||
"google-chat.jfconfig.processing.receivingRegex.tooltip": "A Regex pattern to check whether a received message should be translated",
|
||||
"google-chat.jfconfig.processing.receivingRegexIsBlacklist": "Receiving Regex Is Blacklist",
|
||||
"google-chat.jfconfig.processing.receivingRegexIsBlacklist.tooltip": "Whether the relevant regex should blacklist messages from translation instead of whitelisting",
|
||||
"google-chat.jfconfig.processing.sendingRegex": "Sending Regex",
|
||||
"google-chat.jfconfig.processing.sendingRegex.tooltip": "A Regex pattern to check whether a sent message should be translated",
|
||||
"google-chat.jfconfig.processing.sendingRegexIsBlacklist": "Sending Regex Is Blacklist",
|
||||
"google-chat.jfconfig.processing.sendingRegexIsBlacklist.tooltip": "Whether the relevant regex should blacklist messages from translation instead of whitelisting",
|
||||
"google-chat.jfconfig.advanced.title": "Advanced",
|
||||
"google-chat.jfconfig.advanced.cacheSize": "Cache Size",
|
||||
"google-chat.jfconfig.advanced.cacheSize.tooltips": "The size of each message cache. Since there are four caches, the actual size will be four times this.",
|
||||
"google-chat.jfconfig.advanced.debugLogs": "Debug Logs",
|
||||
"google-chat.jfconfig.advanced.debugLogs.tooltips": "Log additional information about message processing. Useful for debugging",
|
||||
|
||||
"google-chat.jfconfig.client": "Client",
|
||||
"google-chat.jfconfig.server": "Server"
|
||||
|
|
Loading…
Reference in New Issue