From f5f5071468155031f72ee21afae114539b72d2c3 Mon Sep 17 00:00:00 2001 From: JFronny <33260128+JFronny@users.noreply.github.com> Date: Fri, 7 Aug 2020 12:47:37 +0200 Subject: [PATCH] Fix some things (hopefully) --- .gitignore | 126 +++++++++++++++--- LICENSE | 21 +++ build.gradle | 96 ++++++------- gradle.properties | 21 ++- gradle/wrapper/gradle-wrapper.jar | Bin 58694 -> 58910 bytes gradlew | 2 + gradlew.bat | 1 + renovate.json | 5 - .../translater/CachingTransformer.java | 70 ---------- .../io/gitlab/jfronny/translater/Cfg.java | 9 +- .../translater/IMinecraftClientMixin.java | 5 + .../io/gitlab/jfronny/translater/ModInit.java | 49 ------- .../io/gitlab/jfronny/translater/ModMenu.java | 3 - .../gitlab/jfronny/translater/Translater.java | 62 +++++++++ .../translater/interfaces/IMClient.java | 5 - .../interfaces/StringTransformer.java | 5 - .../translater/mixin/MixinLanguage.java | 13 +- .../mixin/MixinMinecraftClient.java | 7 +- .../translater/mixin/MixinSplashScreen.java | 11 +- .../{MixinPlugin.java => mixin/Plugin.java} | 14 +- .../transformer/CachingTransformer.java | 74 ++++++++++ .../translater/transformer/ITransformer.java | 5 + .../{ => transformer}/TransformingMap.java | 18 +-- .../{ => transformer}/YnTransformer.java | 70 +++++----- src/main/resources/fabric.mod.json | 24 ++-- src/main/resources/translater.mixins.json | 6 +- 26 files changed, 423 insertions(+), 299 deletions(-) create mode 100644 LICENSE delete mode 100644 renovate.json delete mode 100644 src/main/java/io/gitlab/jfronny/translater/CachingTransformer.java create mode 100644 src/main/java/io/gitlab/jfronny/translater/IMinecraftClientMixin.java delete mode 100644 src/main/java/io/gitlab/jfronny/translater/ModInit.java create mode 100644 src/main/java/io/gitlab/jfronny/translater/Translater.java delete mode 100644 src/main/java/io/gitlab/jfronny/translater/interfaces/IMClient.java delete mode 100644 src/main/java/io/gitlab/jfronny/translater/interfaces/StringTransformer.java rename src/main/java/io/gitlab/jfronny/translater/{MixinPlugin.java => mixin/Plugin.java} (78%) create mode 100644 src/main/java/io/gitlab/jfronny/translater/transformer/CachingTransformer.java create mode 100644 src/main/java/io/gitlab/jfronny/translater/transformer/ITransformer.java rename src/main/java/io/gitlab/jfronny/translater/{ => transformer}/TransformingMap.java (78%) rename src/main/java/io/gitlab/jfronny/translater/{ => transformer}/YnTransformer.java (56%) diff --git a/.gitignore b/.gitignore index b7b48e7..3c37caf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,118 @@ -#Gradle -.gradle/ -build/ -out/ -classes/ - -#IDEA +# User-specific stuff .idea/ + *.iml *.ipr *.iws -#vscode -.settings/ -.vscode/ -bin/ -.classpath -.project +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ -#fabric +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory run/ -remappedSrc/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bc87a97 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 JFronny + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/build.gradle b/build.gradle index fd11f08..622dcd6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,90 +1,92 @@ plugins { - id 'fabric-loom' version '0.5.11' - id 'maven-publish' + id 'fabric-loom' version '0.5-SNAPSHOT' + id 'maven-publish' } repositories { - maven { - url "https://jitpack.io" - } + maven { + url "https://jitpack.io" + } } sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name -version = "${project.mod_version}+${project.minecraft_version}" +version = project.mod_version group = project.maven_group dependencies { - //to change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + //to change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + // Fabric API. This is technically optional, but you probably want it anyway. + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modCompile "com.github.vbauer:yandex-translate-api:1.4.2" - include "com.github.vbauer:yandex-translate-api:1.4.2" + // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. + // You may need to force-disable transitiveness on them. + modCompile "com.github.vbauer:yandex-translate-api:1.4.2" + include "com.github.vbauer:yandex-translate-api:1.4.2" - modCompile "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable" - include "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable" - modApi "me.shedaniel.cloth:config-2:4.7.0-unstable" - include "me.shedaniel.cloth:config-2:4.7.0-unstable" + modApi "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable" + include "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable" + modApi "me.shedaniel.cloth:config-2:4.6.0" + include "me.shedaniel.cloth:config-2:4.6.0" - modCompile("io.github.prospector:modmenu:1.14.6+build.31") + modCompile("io.github.prospector:modmenu:1.14.5+build.30") } processResources { - inputs.property "version", project.version + inputs.property "version", project.version - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } + from(sourceSets.main.resources.srcDirs) { + include "fabric.mod.json" + expand "version": project.version + } - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } + from(sourceSets.main.resources.srcDirs) { + exclude "fabric.mod.json" + } } // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html tasks.withType(JavaCompile) { - options.encoding = "UTF-8" + options.encoding = "UTF-8" } // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task // if it is present. // If you remove this task, sources will not be generated. task sourcesJar(type: Jar, dependsOn: classes) { - classifier = "sources" - from sourceSets.main.allSource + classifier = "sources" + from sourceSets.main.allSource } jar { - from "LICENSE" + from "LICENSE" } // configure the maven publication publishing { - publications { - mavenJava(MavenPublication) { - // add all the jars that should be included when publishing to maven - artifact(remapJar) { - builtBy remapJar - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } - } - } + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } - // select the repositories you want to publish to - repositories { - // uncomment to publish to the local maven - // mavenLocal() - } + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } } diff --git a/gradle.properties b/gradle.properties index 734295a..79d2a91 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,17 +1,14 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx1G - # Fabric Properties - # check these on https://fabricmc.net/use - minecraft_version=1.16.1 - yarn_mappings=1.16.1+build.1 - loader_version=0.8.8+build.202 - +# check these on https://modmuss50.me/fabric.html +minecraft_version=1.16.1 +yarn_mappings=1.16.1+build.21 +loader_version=0.9.0+build.204 # Mod Properties - mod_version = 1.0.3 - maven_group = io.gitlab.jfronny - archives_base_name = translater - +mod_version=1.0.4 +maven_group=io.gitlab.jfronny +archives_base_name=translater # Dependencies - # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.13.1+build.370-1.16 +# check this on https://modmuss50.me/fabric.html +fabric_version=0.16.2+build.385-1.16.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 490fda8577df6c95960ba7077c43220e5bb2c0d9..62d4c053550b91381bbd28b1afc82d634bf73a8a 100644 GIT binary patch delta 6447 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 F{|nTN-B$nr diff --git a/gradlew b/gradlew index 2fe81a7..fbd7c51 100644 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9..5093609 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -84,6 +84,7 @@ set CMD_LINE_ARGS=%* set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% diff --git a/renovate.json b/renovate.json deleted file mode 100644 index f45d8f1..0000000 --- a/renovate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "config:base" - ] -} diff --git a/src/main/java/io/gitlab/jfronny/translater/CachingTransformer.java b/src/main/java/io/gitlab/jfronny/translater/CachingTransformer.java deleted file mode 100644 index 18fc1ae..0000000 --- a/src/main/java/io/gitlab/jfronny/translater/CachingTransformer.java +++ /dev/null @@ -1,70 +0,0 @@ -package io.gitlab.jfronny.translater; - -import io.gitlab.jfronny.translater.interfaces.StringTransformer; -import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; -import me.sargunvohra.mcmods.autoconfig1u.ConfigManager; -import net.fabricmc.loader.api.FabricLoader; - -import java.io.*; -import java.util.Properties; - -public abstract class CachingTransformer implements StringTransformer { - private static final File cacheFile = new File(FabricLoader.getInstance().getConfigDirectory(), "Translater.cache"); - Properties cache = null; - - @Override - public String transform(String str) { - if (str == null) - return null; - if (cache == null) { - cache = new Properties(); - if (ModInit.cfg.forceRegenerate) { - ModInit.cfg.forceRegenerate = false; - ((ConfigManager) AutoConfig.getConfigHolder(Cfg.class)).save(); - } else { - if (cacheFile.exists()) { - try { - FileInputStream inS = new FileInputStream(cacheFile); - cache.load(inS); - inS.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } else { - if (!ModInit.cfg.breakFully && ModInit.cfg.rounds == 5) { - try { - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - InputStream inS = classLoader.getResourceAsStream("namecache.ini"); - if (inS != null) { - cache.load(inS); - inS.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } - try { - FileOutputStream outS = new FileOutputStream(cacheFile); - cache.store(outS, "---Lang---"); - outS.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (!cache.containsKey(str)) { - cache.put(str, getTransformed(str)); - try { - FileOutputStream outS = new FileOutputStream(cacheFile); - cache.store(outS, "---Lang---"); - outS.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return (String) cache.get(str); - } - - public abstract String getTransformed(String str); -} diff --git a/src/main/java/io/gitlab/jfronny/translater/Cfg.java b/src/main/java/io/gitlab/jfronny/translater/Cfg.java index e4a4c11..393e360 100644 --- a/src/main/java/io/gitlab/jfronny/translater/Cfg.java +++ b/src/main/java/io/gitlab/jfronny/translater/Cfg.java @@ -2,9 +2,8 @@ package io.gitlab.jfronny.translater; import me.sargunvohra.mcmods.autoconfig1u.ConfigData; import me.sargunvohra.mcmods.autoconfig1u.annotation.Config; +import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry; import me.sargunvohra.mcmods.autoconfig1u.shadowed.blue.endless.jankson.Comment; -import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry.Gui.EnumHandler; -import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry.Gui.RequiresRestart; @Config(name = "TranslaterCF") public class Cfg implements ConfigData { @@ -17,10 +16,10 @@ public class Cfg implements ConfigData { @Comment("The language to translate to - Leave empty for auto-detection (might break text even more)") public String targetLanguage = "en"; @Comment("Significantly slows down the loading time but gives a visual of the progress. Values: Full, Console, None") - @EnumHandler(option = EnumHandler.EnumDisplayOption.BUTTON) + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) public progressMode renderProgress = progressMode.None; - @Comment("Use this if something is broken. This initiate the regeneration of the cache") - @RequiresRestart + @Comment("Use this if something is broken. This initiates the regeneration of the cache") + @ConfigEntry.Gui.RequiresRestart public boolean forceRegenerate = false; public enum progressMode { diff --git a/src/main/java/io/gitlab/jfronny/translater/IMinecraftClientMixin.java b/src/main/java/io/gitlab/jfronny/translater/IMinecraftClientMixin.java new file mode 100644 index 0000000..6f0037f --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/translater/IMinecraftClientMixin.java @@ -0,0 +1,5 @@ +package io.gitlab.jfronny.translater; + +public interface IMinecraftClientMixin { + void forceRender(); +} diff --git a/src/main/java/io/gitlab/jfronny/translater/ModInit.java b/src/main/java/io/gitlab/jfronny/translater/ModInit.java deleted file mode 100644 index 413a7da..0000000 --- a/src/main/java/io/gitlab/jfronny/translater/ModInit.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.gitlab.jfronny.translater; - -import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; -import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.ModInitializer; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class ModInit implements ClientModInitializer { - public static final String MOD_NAME = "translater"; - public static final String MOD_ID = "translater"; - private static final Logger logger = LogManager.getFormatterLogger(MOD_ID); - public static Cfg cfg; - - public static void loadCfg() { - if (cfg == null) { - AutoConfig.register(Cfg.class, JanksonConfigSerializer::new); - cfg = AutoConfig.getConfigHolder(Cfg.class).getConfig(); - } - } - - public ModInit() { - loadCfg(); - } - - public static void Log(String msg) { - logger.log(Level.INFO, "[" + MOD_NAME + "] " + msg); - } - - public static void Warn(String msg) { - logger.log(Level.WARN, "[" + MOD_NAME + "] " + msg); - } - - @Override - public void onInitializeClient() { - Log("Loaded translater"); - } - - public static TransformingMap map = null; - - public static boolean Gui() { - return cfg.renderProgress == Cfg.progressMode.Full; - } - public static boolean Cli() { - return cfg.renderProgress == Cfg.progressMode.Full || cfg.renderProgress == Cfg.progressMode.Console; - } -} diff --git a/src/main/java/io/gitlab/jfronny/translater/ModMenu.java b/src/main/java/io/gitlab/jfronny/translater/ModMenu.java index 56091eb..02df04b 100644 --- a/src/main/java/io/gitlab/jfronny/translater/ModMenu.java +++ b/src/main/java/io/gitlab/jfronny/translater/ModMenu.java @@ -3,10 +3,7 @@ package io.gitlab.jfronny.translater; import io.github.prospector.modmenu.api.ConfigScreenFactory; import io.github.prospector.modmenu.api.ModMenuApi; import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -@Environment(EnvType.CLIENT) public class ModMenu implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { diff --git a/src/main/java/io/gitlab/jfronny/translater/Translater.java b/src/main/java/io/gitlab/jfronny/translater/Translater.java new file mode 100644 index 0000000..f6dabda --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/translater/Translater.java @@ -0,0 +1,62 @@ +package io.gitlab.jfronny.translater; + +import io.gitlab.jfronny.translater.transformer.CachingTransformer; +import io.gitlab.jfronny.translater.transformer.TransformingMap; +import io.gitlab.jfronny.translater.transformer.YnTransformer; +import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; +import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Map; + +@Environment(EnvType.CLIENT) +public class Translater implements ClientModInitializer { + public static final String MOD_NAME = "Translater"; + public static final String MOD_ID = "translater"; + private static final Logger logger; + public static Cfg cfg; + private static TransformingMap map; + + static { + AutoConfig.register(Cfg.class, JanksonConfigSerializer::new); + cfg = AutoConfig.getConfigHolder(Cfg.class).getConfig(); + logger = LogManager.getFormatterLogger(MOD_ID); + } + + @Override + public void onInitializeClient() { + + } + + public static boolean Gui() { + return cfg.renderProgress == Cfg.progressMode.Full; + } + public static boolean Cli() { + return cfg.renderProgress == Cfg.progressMode.Full || cfg.renderProgress == Cfg.progressMode.Console; + } + + public static void Warn(String msg) { + logger.log(Level.WARN, "[" + MOD_NAME + "] " + msg); + } + + public static void Log(String msg) { + logger.log(Level.INFO, "[" + MOD_NAME + "] " + msg); + } + + public static TransformingMap getMap(Map base) { + if (map == null) { + map = new TransformingMap(base, new CachingTransformer(new YnTransformer())); + map.init(); + } + return map; + } + + public static TransformingMap getMap() { + return map; + } +} diff --git a/src/main/java/io/gitlab/jfronny/translater/interfaces/IMClient.java b/src/main/java/io/gitlab/jfronny/translater/interfaces/IMClient.java deleted file mode 100644 index 233ba18..0000000 --- a/src/main/java/io/gitlab/jfronny/translater/interfaces/IMClient.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.gitlab.jfronny.translater.interfaces; - -public interface IMClient { - void render(); -} diff --git a/src/main/java/io/gitlab/jfronny/translater/interfaces/StringTransformer.java b/src/main/java/io/gitlab/jfronny/translater/interfaces/StringTransformer.java deleted file mode 100644 index 8d4dd68..0000000 --- a/src/main/java/io/gitlab/jfronny/translater/interfaces/StringTransformer.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.gitlab.jfronny.translater.interfaces; - -public interface StringTransformer { - String transform(String str); -} diff --git a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinLanguage.java b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinLanguage.java index 2c9d738..0d60a85 100644 --- a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinLanguage.java +++ b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinLanguage.java @@ -1,8 +1,6 @@ package io.gitlab.jfronny.translater.mixin; -import io.gitlab.jfronny.translater.ModInit; -import io.gitlab.jfronny.translater.TransformingMap; -import io.gitlab.jfronny.translater.YnTransformer; +import io.gitlab.jfronny.translater.Translater; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.MappingResolver; import net.minecraft.client.resource.language.TranslationStorage; @@ -16,6 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.lang.reflect.Field; import java.util.Map; +//This is where the actual magic happens @Mixin(Language.class) public class MixinLanguage { private static final MappingResolver mr = FabricLoader.getInstance().getMappingResolver(); @@ -30,16 +29,12 @@ public class MixinLanguage { @Inject(at = @At("HEAD"), method = "setInstance") private static void languageSetInstance(Language language, CallbackInfo ci) { if (FIELD == null) { - ModInit.Warn("Could not set language map, field not found"); + Translater.Warn("Could not set language map, field not found"); return; } if (language instanceof TranslationStorage) { try { - if (ModInit.map == null) { - ModInit.map = new TransformingMap((Map) FIELD.get(language), new YnTransformer()); - ModInit.map.init(); - } - FIELD.set(language, ModInit.map); + FIELD.set(language, Translater.getMap((Map) FIELD.get(language))); } catch (IllegalAccessException | ClassCastException e) { e.printStackTrace(); } diff --git a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinMinecraftClient.java b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinMinecraftClient.java index 17a524f..252da08 100644 --- a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinMinecraftClient.java +++ b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinMinecraftClient.java @@ -1,18 +1,19 @@ package io.gitlab.jfronny.translater.mixin; -import io.gitlab.jfronny.translater.interfaces.IMClient; +import io.gitlab.jfronny.translater.IMinecraftClientMixin; import net.minecraft.client.MinecraftClient; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +//This exposes the render method to other code, used for updating the loading screen @Mixin(MinecraftClient.class) -public class MixinMinecraftClient implements IMClient { +public class MixinMinecraftClient implements IMinecraftClientMixin { @Shadow private void render(boolean tick) { } @Override - public void render() { + public void forceRender() { render(false); } } diff --git a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinSplashScreen.java b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinSplashScreen.java index e0a77d4..8ed2c51 100644 --- a/src/main/java/io/gitlab/jfronny/translater/mixin/MixinSplashScreen.java +++ b/src/main/java/io/gitlab/jfronny/translater/mixin/MixinSplashScreen.java @@ -1,7 +1,8 @@ package io.gitlab.jfronny.translater.mixin; import com.google.gson.JsonParser; -import io.gitlab.jfronny.translater.ModInit; +import io.gitlab.jfronny.translater.Translater; +import io.gitlab.jfronny.translater.transformer.TransformingMap; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.FontStorage; import net.minecraft.client.font.FontType; @@ -21,13 +22,15 @@ import java.util.Collections; @Mixin(SplashScreen.class) public abstract class MixinSplashScreen extends Overlay { - @Shadow @Final + @Shadow + @Final private MinecraftClient client; @Inject(at = @At("RETURN"), method = "renderProgressBar") private void RenderTrnslProgress(MatrixStack matrixStack, int i, int j, int k, int l, float f, CallbackInfo ci) { - if (ModInit.map != null && ModInit.map.initializing) { - renderer.draw(matrixStack, "Transforming " + ModInit.map.initI + "/" + ModInit.map.initMax, 10, 10, 0); + TransformingMap map = Translater.getMap(); + if (map != null && map.initializing) { + renderer.draw(matrixStack, "Transforming " + map.initI + "/" + map.initMax, 10, 10, 0); } } diff --git a/src/main/java/io/gitlab/jfronny/translater/MixinPlugin.java b/src/main/java/io/gitlab/jfronny/translater/mixin/Plugin.java similarity index 78% rename from src/main/java/io/gitlab/jfronny/translater/MixinPlugin.java rename to src/main/java/io/gitlab/jfronny/translater/mixin/Plugin.java index d09f005..008d18b 100644 --- a/src/main/java/io/gitlab/jfronny/translater/MixinPlugin.java +++ b/src/main/java/io/gitlab/jfronny/translater/mixin/Plugin.java @@ -1,8 +1,6 @@ -package io.gitlab.jfronny.translater; +package io.gitlab.jfronny.translater.mixin; -import io.gitlab.jfronny.translater.mixin.MixinLanguage; -import io.gitlab.jfronny.translater.mixin.MixinMinecraftClient; -import io.gitlab.jfronny.translater.mixin.MixinSplashScreen; +import io.gitlab.jfronny.translater.Translater; import org.objectweb.asm.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; @@ -11,7 +9,7 @@ import java.util.List; import java.util.Objects; import java.util.Set; -public class MixinPlugin implements IMixinConfigPlugin { +public class Plugin implements IMixinConfigPlugin { @Override public void onLoad(String mixinPackage) { @@ -22,15 +20,15 @@ public class MixinPlugin implements IMixinConfigPlugin { return null; } + @SuppressWarnings("ReferenceToMixin") @Override public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - ModInit.loadCfg(); if (Objects.equals(mixinClassName, MixinLanguage.class.getName())) return true; else if (Objects.equals(mixinClassName, MixinMinecraftClient.class.getName())) - return ModInit.Gui(); + return Translater.Gui(); else if (Objects.equals(mixinClassName, MixinSplashScreen.class.getName())) - return ModInit.Gui(); + return Translater.Gui(); else throw new IllegalStateException("Unrecognized mixin! This should never happen"); } diff --git a/src/main/java/io/gitlab/jfronny/translater/transformer/CachingTransformer.java b/src/main/java/io/gitlab/jfronny/translater/transformer/CachingTransformer.java new file mode 100644 index 0000000..4b5b1f8 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/translater/transformer/CachingTransformer.java @@ -0,0 +1,74 @@ +package io.gitlab.jfronny.translater.transformer; + +import io.gitlab.jfronny.translater.Cfg; +import io.gitlab.jfronny.translater.Translater; +import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; +import me.sargunvohra.mcmods.autoconfig1u.ConfigManager; +import net.fabricmc.loader.api.FabricLoader; + +import java.io.*; +import java.util.Properties; + +public class CachingTransformer implements ITransformer { + private static final File cacheFile = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Translater.cache"); + Properties cache; + private final ITransformer transformer; + + @Override + public String transform(String str) { + if (str == null) + return null; + //Transform and cache if not present + if (!cache.containsKey(str)) { + cache.put(str, transformer.transform(str)); + Save(); + } + //Return cached result + return (String) cache.get(str); + } + + public CachingTransformer(ITransformer baseTransformer) { + transformer = baseTransformer; + cache = new Properties(); + if (Translater.cfg.forceRegenerate) { + Translater.cfg.forceRegenerate = false; + ((ConfigManager) AutoConfig.getConfigHolder(Cfg.class)).save(); + } else { + //Load cache + if (cacheFile.exists()) { + try { + FileInputStream inS = new FileInputStream(cacheFile); + cache.load(inS); + inS.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + //Save default cache if parameters are default + if (!Translater.cfg.breakFully && Translater.cfg.rounds == 5) { + try { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inS = classLoader.getResourceAsStream("namecache.ini"); + if (inS != null) { + cache.load(inS); + inS.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + Save(); + } + + private void Save() { + try { + FileOutputStream outS = new FileOutputStream(cacheFile); + cache.store(outS, "---Lang---"); + outS.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/io/gitlab/jfronny/translater/transformer/ITransformer.java b/src/main/java/io/gitlab/jfronny/translater/transformer/ITransformer.java new file mode 100644 index 0000000..3dde3b6 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/translater/transformer/ITransformer.java @@ -0,0 +1,5 @@ +package io.gitlab.jfronny.translater.transformer; + +public interface ITransformer { + String transform(String str); +} diff --git a/src/main/java/io/gitlab/jfronny/translater/TransformingMap.java b/src/main/java/io/gitlab/jfronny/translater/transformer/TransformingMap.java similarity index 78% rename from src/main/java/io/gitlab/jfronny/translater/TransformingMap.java rename to src/main/java/io/gitlab/jfronny/translater/transformer/TransformingMap.java index 0b66649..07d9beb 100644 --- a/src/main/java/io/gitlab/jfronny/translater/TransformingMap.java +++ b/src/main/java/io/gitlab/jfronny/translater/transformer/TransformingMap.java @@ -1,7 +1,7 @@ -package io.gitlab.jfronny.translater; +package io.gitlab.jfronny.translater.transformer; -import io.gitlab.jfronny.translater.interfaces.IMClient; -import io.gitlab.jfronny.translater.interfaces.StringTransformer; +import io.gitlab.jfronny.translater.IMinecraftClientMixin; +import io.gitlab.jfronny.translater.Translater; import net.minecraft.client.MinecraftClient; import java.util.Collection; @@ -10,12 +10,12 @@ import java.util.Set; public class TransformingMap implements Map { private final Map backer; - private final StringTransformer transformer; + private final ITransformer transformer; public boolean initializing; public int initI; public int initMax; - public TransformingMap(Map m, StringTransformer t) { + public TransformingMap(Map m, ITransformer t) { backer = m; transformer = t; } @@ -26,12 +26,12 @@ public class TransformingMap implements Map { initMax = strings.size(); initializing = true; for (String value : strings) { - if (ModInit.Cli() || ModInit.Gui()) { + if (Translater.Cli()) { initI++; - ModInit.Log("Transforming " + initI + "/" + initMax); - if (ModInit.Gui() && initI % 10 == 0) - ((IMClient)MinecraftClient.getInstance()).render(); + Translater.Log("Transforming " + initI + "/" + initMax); } + if (Translater.Gui() && initI % 10 == 0) + ((IMinecraftClientMixin) MinecraftClient.getInstance()).forceRender(); transformer.transform(value); } initializing = false; diff --git a/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java b/src/main/java/io/gitlab/jfronny/translater/transformer/YnTransformer.java similarity index 56% rename from src/main/java/io/gitlab/jfronny/translater/YnTransformer.java rename to src/main/java/io/gitlab/jfronny/translater/transformer/YnTransformer.java index 742ff46..a25ce1c 100644 --- a/src/main/java/io/gitlab/jfronny/translater/YnTransformer.java +++ b/src/main/java/io/gitlab/jfronny/translater/transformer/YnTransformer.java @@ -1,26 +1,22 @@ -package io.gitlab.jfronny.translater; +package io.gitlab.jfronny.translater.transformer; import com.github.vbauer.yta.model.Direction; import com.github.vbauer.yta.model.Language; import com.github.vbauer.yta.service.YTranslateApiImpl; +import io.gitlab.jfronny.translater.Translater; import org.apache.commons.lang3.StringUtils; import java.util.Random; import java.util.Set; -public class YnTransformer extends CachingTransformer { - - private static final Random rnd = new Random(); - private static YTranslateApiImpl api = null; - private static Set languages = null; - +//The actual translation methods +public class YnTransformer implements ITransformer { + private static Random rnd; + private static YTranslateApiImpl api; + private static Set languages; @Override - public String getTransformed(String str) { + public String transform(String str) { try { - if (api == null) - api = new YTranslateApiImpl(ModInit.cfg.key); - if (languages == null) - languages = api.languageApi().all().languages(); if (str.contains("%")) { StringBuilder res = new StringBuilder(); boolean f = true; @@ -28,9 +24,9 @@ public class YnTransformer extends CachingTransformer { if (!f) { res.append("%"); if (s.length() > 0) - res.append(s.charAt(0)).append(getTransformed(s.substring(1)).replace("%", "")); + res.append(s.charAt(0)).append(transform(s.substring(1)).replace("%", "")); } else - res.append(getTransformed(s)); + res.append(transform(s)); f = false; } return res.toString(); @@ -39,9 +35,9 @@ public class YnTransformer extends CachingTransformer { boolean f = true; for (String s : str.split("\\$")) { if (!f) { - res.append("$").append(s.charAt(0)).append(getTransformed(s.substring(1)).replace("$", "")); + res.append("$").append(s.charAt(0)).append(transform(s.substring(1)).replace("$", "")); } else - res.append(getTransformed(s)); + res.append(transform(s)); f = false; } return res.toString(); @@ -50,18 +46,19 @@ public class YnTransformer extends CachingTransformer { boolean f = true; for (String s : str.split("§")) { if (!f) { - res.append("§").append(s.charAt(0)).append(getTransformed(s.substring(1)).replace("§", "")); + res.append("§").append(s.charAt(0)).append(transform(s.substring(1)).replace("§", "")); } else - res.append(getTransformed(s)); + res.append(transform(s)); f = false; } return res.toString(); } else { return Break(str); } - } catch (Exception e) { - ModInit.Warn("Failed to transform: " + str + " (" + str.length() + " characters)"); - ModInit.Warn("Please report this bug with the mod containing the lang file"); + } + catch (Exception e) { + Translater.Warn("Failed to transform: " + str + " (" + str.length() + " characters)"); + Translater.Warn("Please report this bug with the mod containing the lang file"); throw e; } } @@ -71,28 +68,28 @@ public class YnTransformer extends CachingTransformer { if (invalid(str)) return str; - Language startLang = StringUtils.isAlpha(ModInit.cfg.targetLanguage) && ModInit.cfg.targetLanguage.length() == 2 - ? Language.of(ModInit.cfg.targetLanguage) + Language startLang = StringUtils.isAlpha(Translater.cfg.targetLanguage) && Translater.cfg.targetLanguage.length() == 2 + ? Language.of(Translater.cfg.targetLanguage) : api.detectionApi().detect(str).orElse(Language.EN); if (invalid(startLang.code())) { - ModInit.Warn("Could not detect language for: " + str); - ModInit.Warn("Defaulting to EN"); + Translater.Warn("Could not detect language for: " + str); + Translater.Warn("Defaulting to EN"); startLang = Language.EN; } String currentState = str; Language currentLang = startLang; - for (int i = 0; i < ModInit.cfg.rounds; i++) { + for (int i = 0; i < Translater.cfg.rounds; i++) { Language newLang = selectRandom(); - currentState = api.translationApi().translate(currentState, Direction.of(ModInit.cfg.breakFully ? selectRandom() : currentLang, newLang)).text(); + currentState = api.translationApi().translate(currentState, Direction.of(Translater.cfg.breakFully ? selectRandom() : currentLang, newLang)).text(); currentLang = newLang; } currentState = api.translationApi().translate(currentState, startLang).text(); - if (ModInit.Cli()) - ModInit.Log("Transformed: \"" + str + "\" to: \"" + currentState + "\""); + if (Translater.Cli()) + Translater.Log("Transformed: \"" + str + "\" to: \"" + currentState + "\""); return currentState; } catch (Exception e) { - ModInit.Warn("Failed to break: " + str + " (" + str.length() + " characters)"); - ModInit.Warn("Please report this bug with the mod containing the lang file"); + Translater.Warn("Failed to break: " + str + " (" + str.length() + " characters)"); + Translater.Warn("Please report this bug with the mod containing the lang file"); throw e; } } @@ -111,4 +108,15 @@ public class YnTransformer extends CachingTransformer { private Language selectRandom() { return languages.stream().skip(rnd.nextInt(languages.size())).findFirst().get(); } + + public YnTransformer() { + try { + rnd = new Random(); + api = new YTranslateApiImpl(Translater.cfg.key); + languages = api.languageApi().all(Language.EN).languages(); + } catch (Exception e) { + Translater.Warn("Failed to initialize transformer. Is your API key valid?"); + Translater.Warn("Minecraft will continue but issues should be expected"); + } + } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6cf0a61..120b013 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -2,44 +2,38 @@ "schemaVersion": 1, "id": "translater", "version": "${version}", - "name": "Translater", "description": "Translates minecraft back and forth", "authors": [ "JFronny" ], - - "contributors": [], - "contact": {}, - + "contact": { + "website": "https://jfronny.gitlab.io", + "repo": "https://gitlab.com/JFronny/translater" + }, "license": "MIT", "icon": "assets/translater/icon.png", - - "environment": "*", + "environment": "client", "entrypoints": { "client": [ - "io.gitlab.jfronny.translater.ModInit" + "io.gitlab.jfronny.translater.Translater" ], "modmenu": [ "io.gitlab.jfronny.translater.ModMenu" ] - }, "mixins": [ "translater.mixins.json" ], - "depends": { - "fabricloader": ">=0.7.4", + "fabricloader": ">=0.9.0+build.204", "fabric": "*", - "minecraft": "1.16.x" + "minecraft": "1.16.1" }, - "custom": { "modupdater": { "strategy": "curseforge", "projectID": 394823 - }, - "modmenu:clientsideOnly": true + } } } diff --git a/src/main/resources/translater.mixins.json b/src/main/resources/translater.mixins.json index bfe1312..daf9b72 100644 --- a/src/main/resources/translater.mixins.json +++ b/src/main/resources/translater.mixins.json @@ -3,7 +3,7 @@ "minVersion": "0.8", "package": "io.gitlab.jfronny.translater.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "io.gitlab.jfronny.translater.MixinPlugin", + "plugin": "io.gitlab.jfronny.translater.mixin.Plugin", "client": [ "MixinLanguage", "MixinMinecraftClient", @@ -11,7 +11,5 @@ ], "injectors": { "defaultRequire": 1 - }, - "mixins": [ - ] + } }