From a50ae42051d8b71c9a315ebc1bedf137d4099353 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sat, 5 Dec 2020 11:18:58 +0100 Subject: [PATCH 01/25] update to work with 20w49a --- build.gradle | 8 ++++---- .../mixins/ReloadableResourceManagerImplMixin.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 7b2246c..a580f79 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ sourceCompatibility = 1.8 targetCompatibility = 1.8 archivesBaseName = "crowdin-translate" -version = "1.3-pre1-hugman" +version = "1.3+1.17-alpha20w49a" minecraft { refmapName = "crowdin-translate-refmap.json"; @@ -31,9 +31,9 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.15.2" - mappings "net.fabricmc:yarn:1.15.2+build.7:v2" - modImplementation "net.fabricmc:fabric-loader:0.7.2+build.174" + minecraft "com.mojang:minecraft:20w49a" + mappings "net.fabricmc:yarn:20w49a+build.5:v2" + modImplementation "net.fabricmc:fabric-loader:0.10.8" } diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java index e2a8191..be4b3c8 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java @@ -28,7 +28,7 @@ public abstract class ReloadableResourceManagerImplMixin implements ReloadableRe method = "beginMonitoredReload", at = @At( value = "INVOKE", - target = "Lnet/minecraft/resource/ReloadableResourceManagerImpl;beginReloadInner(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/List;Ljava/util/concurrent/CompletableFuture;)Lnet/minecraft/resource/ResourceReloadMonitor;", + target = "Lorg/apache/logging/log4j/Logger;isDebugEnabled()Z", shift = At.Shift.BEFORE ) ) From 8e3c84afe1b3acf58871d43db6a18c1ff2953fd7 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sat, 5 Dec 2020 11:45:44 +0100 Subject: [PATCH 02/25] add another call for mod developers --- .../de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index db7b7bc..b30cceb 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -75,6 +75,10 @@ public static void downloadTranslations(String crowdinProjectName, String minecr downloadTranslations(crowdinProjectName, minecraftProjectName, null, verbose); } + public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourcefileOverride) { + downloadTranslations(crowdinProjectName, minecraftProjectName, sourcefileOverride, false); + } + public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourcefileOverride, boolean verbose) { registeredMods.add(minecraftProjectName); From cc0b1f1a85b189cbf4347a018a3ed4ecbf13c2fe Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sat, 5 Dec 2020 11:46:22 +0100 Subject: [PATCH 03/25] document having several mod translations in the same crowdin project --- README.md | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f28bda..d357b35 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ In your build.gradle, at the very top (before `plugins`), add this: ``` buildscript { dependencies { - classpath 'de.guntram.mcmod:crowdin-translate:1.2' + classpath 'de.guntram.mcmod:crowdin-translate:1.3+1.16' } repositories { maven { @@ -53,7 +53,10 @@ buildscript { } ``` -and somewhere later (after plugins) add: +(note that you can use this no matter which Minecraft version you're compiling +for, even if the maven version number says 1.16). + +Then, somewhere later (after plugins) add: ``` apply plugin: 'de.guntram.mcmod.crowdin-translate' @@ -91,11 +94,15 @@ repositories { } } dependencies { - modImplementation "de.guntram.mcmod:crowdin-translate:1.2" - include "de.guntram.mcmod:crowdin-translate:1.2" + modImplementation "de.guntram.mcmod:crowdin-translate:" + include "de.guntram.mcmod:crowdin-translate:" } ``` +where `version` is currently either `1.3+1.16` or `1.3+1.17-alpha20w49a`. +(The `1.3+1.16` version actually works for all versions from 1.15.2 to 20w48a, +20w49a introduced an incompatible change.) + and this to your ClientModInitializer: ``` @@ -126,7 +133,35 @@ This will download the translations from `https://crowdin.com/project/projectname` to `assets/modid/lang`. +### What if I have the translation files for several mods in the same crowdin +project? + +Since version 1.3, you can override the translation source name that +crowdin-translate checks for. So, if your mods are named foo, bar, and baz, +you can have one single crowdin project that has them all, and have file names +`foo.json`, `bar.json` and `thisisnotbaz.json` for your source. + +Assuming your crowdin project name is `allmymods`, +adjust the above use cases like this: + +* manual usage: +``` +java -jar crowdintranslate-.jar allmymods foo foo +java -jar crowdintranslate-.jar allmymods bar bar +java -jar crowdintranslate-.jar allmymods baz thisisnotbaz +``` + +* usage in gradle: add a 'jsonSourceName' parameter + +``` +crowdintranslate.jsonSourceName = 'thisisnotbaz' +``` +* usage in your `ClientModInitializer`: use the 3 argument call: + +``` +CrowdinTranslate.downloadTranslations("allmymods", "baz", "thisisnotbaz"); +``` ### Getting started (this needs some redoing) From 3d48afa304a692c834dd659a7fd99b0d86c2580e Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sat, 5 Dec 2020 11:48:52 +0100 Subject: [PATCH 04/25] fix header word wrap in README --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index d357b35..ba00fe4 100644 --- a/README.md +++ b/README.md @@ -133,8 +133,7 @@ This will download the translations from `https://crowdin.com/project/projectname` to `assets/modid/lang`. -### What if I have the translation files for several mods in the same crowdin -project? +### What if I have the translation files for several mods in the same crowdin project? Since version 1.3, you can override the translation source name that crowdin-translate checks for. So, if your mods are named foo, bar, and baz, From 589b15479827c5b0fbe35c46fefd07a85870b2d2 Mon Sep 17 00:00:00 2001 From: Hugman Date: Fri, 4 Jun 2021 10:31:50 +0200 Subject: [PATCH 05/25] Update DownloadTask.java --- .../mcmod/crowdintranslate/GradlePlugin/DownloadTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/GradlePlugin/DownloadTask.java b/src/main/java/de/guntram/mcmod/crowdintranslate/GradlePlugin/DownloadTask.java index 059c248..3e0832a 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/GradlePlugin/DownloadTask.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/GradlePlugin/DownloadTask.java @@ -1,10 +1,10 @@ package de.guntram.mcmod.crowdintranslate.GradlePlugin; import de.guntram.mcmod.crowdintranslate.CrowdinTranslate; -import org.gradle.api.internal.AbstractTask; +import org.gradle.api.DefaultTask; import org.gradle.api.tasks.TaskAction; -public class DownloadTask extends AbstractTask { +public class DownloadTask extends DefaultTask { @TaskAction public void action() { CrowdinTranslateParameters parms = CrowdinTranslatePlugin.parameters; From b955d26771d7741f560d2dcf21080f74af66005f Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Fri, 4 Jun 2021 13:07:00 +0200 Subject: [PATCH 06/25] temporary version, creates wrong dependency --- build.gradle | 56 +++++++++++-------- settings.gradle | 2 + .../ReloadableResourceManagerImplMixin.java | 6 +- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/build.gradle b/build.gradle index a580f79..d1fd3e0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,39 +1,34 @@ plugins { - id 'fabric-loom' version '0.4-SNAPSHOT' + id 'fabric-loom' version '0.7-SNAPSHOT' id 'java-gradle-plugin' + id 'maven-publish' } -apply plugin: 'maven' - -sourceCompatibility = 1.8 -targetCompatibility = 1.8 +sourceCompatibility = 16 +targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.3+1.17-alpha20w49a" +version = "1.3+1.17-pre5" minecraft { - refmapName = "crowdin-translate-refmap.json"; + refmapName = "crowdin-translate-refmap.json"; } 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) { - exclude "fabric.mod.json" - } + filesMatching("fabric.mod.json") { + expand "version": project.version + } } // These are, actually, not even used in this project. // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:20w49a" - mappings "net.fabricmc:yarn:20w49a+build.5:v2" - modImplementation "net.fabricmc:fabric-loader:0.10.8" + minecraft "com.mojang:minecraft:1.17-pre5" + mappings "net.fabricmc:yarn:1.17-pre5+build.1:v2" + modImplementation "net.fabricmc:fabric-loader:0.11.3" } @@ -41,12 +36,12 @@ dependencies { // 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" manifest { attributes( 'Main-Class': 'de.guntram.mcmod.crowdintranslate.CrowdinTranslate' @@ -65,10 +60,26 @@ gradlePlugin { } group = "de.guntram.mcmod" +publishing { + publications { + mavenJava(MavenPublication) { + artifact(remapJar) { + builtBy remapJar + } + } + } + repositories { + maven { + url = "file://tmp/mymavenrepo" + } + } +} + +/* uploadArchives { repositories { mavenDeployer { - repository(url: "file://localhost/tmp/mymavenrepo") + repository(url: "file://localhost/tmp/mymavenrepo") } } } @@ -76,3 +87,4 @@ uploadArchives { task publish(dependsOn: uploadArchives, type: Exec) { commandLine "rsync", "-av", "/tmp/mymavenrepo/", "maven@minecraft.guntram.de:/var/www/html/maven/" } +*/ diff --git a/settings.gradle b/settings.gradle index 5b60df3..e17db3c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,3 +8,5 @@ pluginManagement { gradlePluginPortal() } } + +rootProject.name = 'crowdin-translate' diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java index be4b3c8..226714b 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java @@ -25,14 +25,14 @@ public abstract class ReloadableResourceManagerImplMixin implements ReloadableRe public abstract void addPack(ResourcePack resourcePack); @Inject( - method = "beginMonitoredReload", + method = "reload", at = @At( value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;isDebugEnabled()Z", shift = At.Shift.BEFORE ) ) - private void onPostReload(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) + private void onPostReload(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { if (this.type != ResourceType.CLIENT_RESOURCES) return; @@ -40,4 +40,4 @@ private void onPostReload(Executor prepareExecutor, Executor applyExecutor, Comp System.out.println("Inject generated resource packs."); this.addPack(new CTResourcePack()); } -} \ No newline at end of file +} From d95fdcd9e37545b86da6135cfec7e3a4b4267ae8 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Fri, 4 Jun 2021 18:20:29 +0200 Subject: [PATCH 07/25] update to 1.17-pre5 --- build.gradle | 2 +- .../de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d1fd3e0..38d0c1a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.3+1.17-pre5" +version = "1.3+1.17-pre5b" minecraft { refmapName = "crowdin-translate-refmap.json"; diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index b30cceb..2f1a292 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -242,6 +242,8 @@ private void saveBufferToJsonFile(byte[] buffer, String filename) { stream.write(buffer); } catch (IOException ex) { System.err.println("failed to write "+filename); + System.err.println("absolute path is "+file.getAbsolutePath()); + ex.printStackTrace(System.err); } } From b1fc62a9be050843ef0c627853299dc2edbdbc8c Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Tue, 8 Jun 2021 19:22:18 +0200 Subject: [PATCH 08/25] update to 1.17 --- README.md | 24 ++++-------------------- build.gradle | 23 ++++++----------------- 2 files changed, 10 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index ba00fe4..601d195 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ In your build.gradle, at the very top (before `plugins`), add this: ``` buildscript { dependencies { - classpath 'de.guntram.mcmod:crowdin-translate:1.3+1.16' + classpath 'de.guntram.mcmod:crowdin-translate:1.3+1.17' } repositories { maven { @@ -54,7 +54,7 @@ buildscript { ``` (note that you can use this no matter which Minecraft version you're compiling -for, even if the maven version number says 1.16). +for, even if the maven version number says 1.17). Then, somewhere later (after plugins) add: @@ -99,9 +99,9 @@ dependencies { } ``` -where `version` is currently either `1.3+1.16` or `1.3+1.17-alpha20w49a`. +where `version` is currently either `1.3+1.16` or `1.3+1.17`. (The `1.3+1.16` version actually works for all versions from 1.15.2 to 20w48a, -20w49a introduced an incompatible change.) +20w49a introduced an incompatible change. 1.3+1.17 works from 1.17 on.) and this to your ClientModInitializer: @@ -161,19 +161,3 @@ crowdintranslate.jsonSourceName = 'thisisnotbaz' ``` CrowdinTranslate.downloadTranslations("allmymods", "baz", "thisisnotbaz"); ``` - -### Getting started -(this needs some redoing) -- Create an account on CrowdIn (https://crowdin.com) -- Optional but recommended: apply for a open source membership so you can start multiple projects, for free -- Create a project. This will ask for a project name, and a project address. -If possible, select your address so the identifier matches your mod id -(the mod `foobar` should have `https://crowdin.com/project/foobar`). -- Switch the source language from English to English, United States. This is not -100% neccesary, but will make things easier, especially if your original json -file is named `en_us.json`. -- Add the target languages you want to use. (In a future version of CrowdinTranslate, -there will be an easy way to consistently set the languages for a collection -of mods) -- Once your project is created, upload your en_us.json. Then, do some translations, -or get people to do that for you. diff --git a/build.gradle b/build.gradle index 38d0c1a..648a925 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.7-SNAPSHOT' + id 'fabric-loom' version '0.8-SNAPSHOT' id 'java-gradle-plugin' id 'maven-publish' } @@ -8,7 +8,7 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.3+1.17-pre5b" +version = "1.3+1.17" minecraft { refmapName = "crowdin-translate-refmap.json"; @@ -26,8 +26,8 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.17-pre5" - mappings "net.fabricmc:yarn:1.17-pre5+build.1:v2" + minecraft "com.mojang:minecraft:1.17" + mappings "net.fabricmc:yarn:1.17+build.1:v2" modImplementation "net.fabricmc:fabric-loader:0.11.3" } @@ -47,7 +47,6 @@ jar { 'Main-Class': 'de.guntram.mcmod.crowdintranslate.CrowdinTranslate' ) } - } gradlePlugin { @@ -64,7 +63,7 @@ publishing { publications { mavenJava(MavenPublication) { artifact(remapJar) { - builtBy remapJar + // builtBy remapJar } } } @@ -75,16 +74,6 @@ publishing { } } -/* -uploadArchives { - repositories { - mavenDeployer { - repository(url: "file://localhost/tmp/mymavenrepo") - } - } -} - -task publish(dependsOn: uploadArchives, type: Exec) { +task mypublish(dependsOn: publish, type: Exec) { commandLine "rsync", "-av", "/tmp/mymavenrepo/", "maven@minecraft.guntram.de:/var/www/html/maven/" } -*/ From d98f16790636d85aaca42b5b0d41dd0fa6b79254 Mon Sep 17 00:00:00 2001 From: Flourick Date: Thu, 9 Sep 2021 09:37:57 +0200 Subject: [PATCH 09/25] better .gitignore --- .gitignore | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.gitignore b/.gitignore index 67bcc2f..0b5cc2f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,35 @@ +# gradle + .gradle/ build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +.vs/ +bin/ +.classpath +.project + +# macos + +*.DS_Store + +# fabric + +run/ +remappedSrc/ \ No newline at end of file From 8daf49cb662931609267eb407a80067f2f7ca4e3 Mon Sep 17 00:00:00 2001 From: Flourick Date: Thu, 9 Sep 2021 09:46:08 +0200 Subject: [PATCH 10/25] support for all MC languages --- .../crowdintranslate/CrowdinTranslate.java | 106 ++++++++++++++++-- 1 file changed, 98 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index 2f1a292..82e1ac0 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -28,34 +28,124 @@ public class CrowdinTranslate extends Thread { mcCodetoCrowdinCode = new HashMap<>(); registeredMods = new HashSet<>(); + add("af_za", "af"); + add("ar_sa", "ar"); + add("ast_es", "ast"); + add("az_az", "az"); + add("ba_ru", "ba"); + //add("bar", "bar"); // Bavaria + add("be_by", "be"); + add("bg_bg", "bg"); + add("br_fr", "br-FR"); + //add("brb", "brb"); // Brabantian + add("bs_ba", "bs"); + add("ca_es", "ca"); add("cs_cz", "cs"); + add("cy_gb", "cy"); + add("da_dk", "da"); + add("de_at", "de-AT"); + add("de_ch", "de-CH"); add("de_de", "de"); add("el_gr", "el"); - add("es_ar", "es-ES"); - add("es_cl", "es-ES"); - add("es_ec", "es-ES"); + add("en_au", "de-AT"); + add("en_ca", "en-CA"); + add("en_gb", "en-GB"); + add("en_nz", "en-NZ"); + add("en_pt", "en-PT"); + add("en_ud", "en-UD"); + add("en_us", "en-US"); + //add("enp", "enp"); // Anglish + //add("enws", "enws"); // Shakespearean English + add("eo_uy", "eo"); + add("es_ar", "es-AR"); + add("es_cl", "es-CL"); + add("es_ec", "es-EC"); add("es_es", "es-ES"); - add("es_mx", "es-ES"); - add("es_uy", "es-ES"); - add("es_ve", "es-ES"); + add("es_mx", "es-MX"); + add("es_uy", "es-UY"); + add("es_ve", "es-VE"); + //add("esan", "esan"); // Andalusian add("et_ee", "et"); + add("eu_es", "eu"); + add("fa_ir", "fa"); add("fi_fi", "fi"); + add("fil_ph", "fil"); + add("fo_fo", "fo"); + add("fr_ca", "fr-CA"); add("fr_fr", "fr"); + add("fra_de", "fra-DE"); + add("fy_nl", "fy-NL"); + add("ga_ie", "ga-IE"); + add("gd_gb", "gd"); + add("gl_es", "gl"); + add("haw_us", "haw"); add("he_il", "he"); + add("hi_in", "hi"); + add("hr_hr", "hr"); + add("hu_hu", "hu"); + add("hy_am", "hy-AM"); + add("id_id", "id"); + add("ig_ng", "ig"); + add("io_en", "ido"); + add("is_is", "is"); + //add("isv", "isv"); // Interslavic add("it_it", "it"); add("ja_jp", "ja"); + add("jbo_en", "jbo"); + add("ka_ge", "ka"); + add("kk_kz", "kk"); + add("kn_in", "kn"); add("ko_kr", "ko"); + //add("ksh", "ksh"); // Ripuarian + add("kw_gb", "kw"); + add("la_la", "la-LA"); + add("lb_lu", "lb"); + add("li_li", "li"); + add("lol_us", "lol"); + add("lt_lt", "lt"); + add("lv_lv", "lv"); + //add("lzh", "lzh"); // Classical Chinese + add("mk_mk", "mk"); + add("mn_mn", "mn"); + add("ms_my", "ms"); + add("mt_mt", "mt"); + add("nds_de", "nds"); + add("nl_be", "nl-BE"); add("nl_nl", "nl"); - add("no_no", "no"); + add("nn_no", "nn-NO"); + add("no_no‌", "no"); + add("oc_fr", "oc"); + //add("ovd", "ovd"); // Elfdalian add("pl_pl", "pl"); - add("pt_br", "pt-PT"); + add("pt_br", "pt-BR"); add("pt_pt", "pt-PT"); + add("qya_aa", "qya-AA"); add("ro_ro", "ro"); + //add("rpr", "rpr"); // Russian (pre-revolutionary) add("ru_ru", "ru"); + add("se_no", "se"); + add("sk_sk", "sk"); + add("sl_si", "sl"); + add("so_so", "so"); + add("sq_al", "sq"); add("sr_sp", "sr"); add("sv_se", "sv-SE"); + //add("sxu", "sxu"); // Upper Saxon German + //add("szl", "szl"); // Silesian + add("ta_in", "ta"); + add("th_th", "th"); + add("tl_ph", "tl"); + add("tlh_aa", "tlh-AA"); add("tr_tr", "tr"); + add("tt_ru", "tt-RU"); + add("uk_ua", "uk"); + add("val_es", "val-ES"); + add("vec_it", "vec"); + add("vi_vn", "vi"); + add("yi_de", "yi"); + add("yo_ng", "yo"); add("zh_cn", "zh-CN"); + add("zh_hk", "zh-HK"); add("zh_tw", "zh-TW"); } From 05c1fdf292a634db0b58af245c53b43bb20ea8b8 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sun, 21 Nov 2021 15:00:56 +0100 Subject: [PATCH 11/25] update to 1.18-pre1, add a lot of languages, and allow several "source languages" for the same "minecraft language" --- build.gradle | 14 +-- .../crowdintranslate/CrowdinTranslate.java | 104 +++++++++++++----- 2 files changed, 83 insertions(+), 35 deletions(-) diff --git a/build.gradle b/build.gradle index 648a925..884d97f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.8-SNAPSHOT' + id 'fabric-loom' version '0.10-SNAPSHOT' id 'java-gradle-plugin' id 'maven-publish' } @@ -8,10 +8,10 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.3+1.17" +version = "1.4+1.18-pre1" -minecraft { - refmapName = "crowdin-translate-refmap.json"; +loom { + mixin.defaultRefmapName = "crowdin-translate-refmap.json"; } processResources { @@ -26,9 +26,9 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.17" - mappings "net.fabricmc:yarn:1.17+build.1:v2" - modImplementation "net.fabricmc:fabric-loader:0.11.3" + minecraft "com.mojang:minecraft:1.18-pre1" + mappings "net.fabricmc:yarn:1.18-pre1+build.14:v2" + modImplementation "net.fabricmc:fabric-loader:0.12.5" } diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index 82e1ac0..471b34e 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -1,8 +1,11 @@ package de.guntram.mcmod.crowdintranslate; +import java.io.BufferedReader; import java.io.Closeable; import java.io.File; import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -16,6 +19,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; + public class CrowdinTranslate extends Thread { private static final Map mcCodetoCrowdinCode; @@ -23,6 +27,8 @@ public class CrowdinTranslate extends Thread { private static String rootDir = "ModTranslations"; private static boolean thisIsAMod = true; private static final Set registeredMods; + enum Tristate { UNKNOWN,YES,NO }; + private static Tristate downloadsAllowed = Tristate.UNKNOWN; static { mcCodetoCrowdinCode = new HashMap<>(); @@ -43,27 +49,27 @@ public class CrowdinTranslate extends Thread { add("cs_cz", "cs"); add("cy_gb", "cy"); add("da_dk", "da"); - add("de_at", "de-AT"); - add("de_ch", "de-CH"); + add("de_at", "de-AT,de"); + add("de_ch", "de-CH,de"); add("de_de", "de"); add("el_gr", "el"); - add("en_au", "de-AT"); - add("en_ca", "en-CA"); - add("en_gb", "en-GB"); - add("en_nz", "en-NZ"); - add("en_pt", "en-PT"); - add("en_ud", "en-UD"); + add("en_au", "en-AU,en-GB,en-US"); + add("en_ca", "en-CA,en-GB,en-US"); + add("en_gb", "en-GB,en-US"); + add("en_nz", "en-NZ,en-GB,en-US"); + add("en_pt", "en-PT,en-GB,en-US"); + add("en_ud", "en-UD,en-GB,en-US"); add("en_us", "en-US"); //add("enp", "enp"); // Anglish //add("enws", "enws"); // Shakespearean English add("eo_uy", "eo"); - add("es_ar", "es-AR"); - add("es_cl", "es-CL"); - add("es_ec", "es-EC"); + add("es_ar", "es-AR,es-ES"); + add("es_cl", "es-CL,es-ES"); + add("es_ec", "es-EC,es-ES"); add("es_es", "es-ES"); - add("es_mx", "es-MX"); - add("es_uy", "es-UY"); - add("es_ve", "es-VE"); + add("es_mx", "es-MX,es-ES"); + add("es_uy", "es-UY,es-ES"); + add("es_ve", "es-VE,es-ES"); //add("esan", "esan"); // Andalusian add("et_ee", "et"); add("eu_es", "eu"); @@ -71,7 +77,7 @@ public class CrowdinTranslate extends Thread { add("fi_fi", "fi"); add("fil_ph", "fil"); add("fo_fo", "fo"); - add("fr_ca", "fr-CA"); + add("fr_ca", "fr-CA,fr"); add("fr_fr", "fr"); add("fra_de", "fra-DE"); add("fy_nl", "fy-NL"); @@ -110,15 +116,15 @@ public class CrowdinTranslate extends Thread { add("ms_my", "ms"); add("mt_mt", "mt"); add("nds_de", "nds"); - add("nl_be", "nl-BE"); + add("nl_be", "nl-BE,nl"); add("nl_nl", "nl"); - add("nn_no", "nn-NO"); + add("nn_no", "nn-NO,no"); add("no_no‌", "no"); add("oc_fr", "oc"); //add("ovd", "ovd"); // Elfdalian add("pl_pl", "pl"); - add("pt_br", "pt-BR"); - add("pt_pt", "pt-PT"); + add("pt_br", "pt-BR,pt-PT"); + add("pt_pt", "pt-PT,pt-BR"); add("qya_aa", "qya-AA"); add("ro_ro", "ro"); //add("rpr", "rpr"); // Russian (pre-revolutionary) @@ -144,8 +150,8 @@ public class CrowdinTranslate extends Thread { add("vi_vn", "vi"); add("yi_de", "yi"); add("yo_ng", "yo"); - add("zh_cn", "zh-CN"); - add("zh_hk", "zh-HK"); + add("zh_cn", "zh-CN,zh-HK"); + add("zh_hk", "zh-HK,zh-CN"); add("zh_tw", "zh-TW"); } @@ -172,7 +178,7 @@ public static void downloadTranslations(String crowdinProjectName, String minecr public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourcefileOverride, boolean verbose) { registeredMods.add(minecraftProjectName); - if (thisIsAMod && projectDownloadedRecently(minecraftProjectName)) { + if (thisIsAMod && ( !downloadsAllowed() || projectDownloadedRecently(minecraftProjectName))) { return; } CrowdinTranslate runner = new CrowdinTranslate(crowdinProjectName, minecraftProjectName); @@ -191,6 +197,44 @@ public static void downloadTranslations(String crowdinProjectName, String minecr } } } + + // This is a bit of a stretch, but the method gets called in fabric mod + // context only. We don't want to add a dependency on a whole json library + // or anything, so we just check if there's a config/crowdin.txt file. + // If there is, and it contains "download=no" or "download=false" or "download=0", + // we don't download anything. + // This should be synchronized in case Fabric ever initializes two mods at + // once; they shouldn't access the file at the same time. + private static synchronized boolean downloadsAllowed() { + if (downloadsAllowed != Tristate.UNKNOWN) { + return downloadsAllowed == Tristate.YES; + } + File file = new File("config/crowdin.txt"); + if (file.exists()) { + try (FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr)) + { + String line; + while ((line = br.readLine()) != null) { + if (line.startsWith("download=")) { + String val = line.substring(9); + if ("0".equals(val) || "false".equalsIgnoreCase(val) || "no".equalsIgnoreCase(val)) { + downloadsAllowed=Tristate.NO; + return false; + } + } + } + } catch (IOException ex) { + } + } else { + try (FileWriter fw = new FileWriter(file)) { + fw.append("#Change this to no to prevent mod translation downloads\ndownload=yes\n"); + } catch (IOException ex) { + } + } + downloadsAllowed=Tristate.YES; + return true; + } private static void forceClose(Closeable c) { try { @@ -247,13 +291,17 @@ public void run() { new File(assetDir).mkdirs(); for (Map.Entry entry: mcCodetoCrowdinCode.entrySet()) { - byte[] buffer = translations.get(entry.getValue()); - if (buffer != null) { - String filePath = assetDir+File.separatorChar+entry.getKey()+".json"; - if (verbose) { - System.out.println("writing "+buffer.length+" bytes from \""+entry.getValue()+"\" to MC file "+filePath); + String[] sourcesByPreference = entry.getValue().split(","); + for (String attemptingSource: sourcesByPreference) { + byte[] buffer = translations.get(attemptingSource); + if (buffer != null) { + String filePath = assetDir+File.separatorChar+entry.getKey()+".json"; + if (verbose) { + System.out.println("writing "+buffer.length+" bytes from \""+attemptingSource+"\" to MC file "+filePath); + } + saveBufferToJsonFile(buffer, filePath); + break; } - saveBufferToJsonFile(buffer, filePath); } } if (thisIsAMod) { From 0b4c070dc37e90e1523f5718b61372a74d5e866a Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sun, 21 Nov 2021 16:41:28 +0100 Subject: [PATCH 12/25] 1.18-pre5 --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 884d97f..5e5fa3e 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.4+1.18-pre1" +version = "1.4+1.18-pre5" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json"; @@ -26,8 +26,8 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.18-pre1" - mappings "net.fabricmc:yarn:1.18-pre1+build.14:v2" + minecraft "com.mojang:minecraft:1.18-pre5" + mappings "net.fabricmc:yarn:1.18-pre5+build.4:v2" modImplementation "net.fabricmc:fabric-loader:0.12.5" } From 19869d054c0fd573bcf6c8c5d7b3c829dc0c7960 Mon Sep 17 00:00:00 2001 From: Emma Waffle Date: Thu, 20 Jan 2022 21:57:38 -0500 Subject: [PATCH 13/25] Add support for new SLF4J logger --- build.gradle | 9 +++---- .../ReloadableResourceManagerImplMixin.java | 25 ++++++++++++++++--- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 5e5fa3e..31b9e4e 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.4+1.18-pre5" +version = "1.4+22w03a" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json"; @@ -28,16 +28,15 @@ processResources { dependencies { minecraft "com.mojang:minecraft:1.18-pre5" mappings "net.fabricmc:yarn:1.18-pre5+build.4:v2" - modImplementation "net.fabricmc:fabric-loader:0.12.5" + modImplementation "net.fabricmc:fabric-loader:0.12.12" } // 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 +java { + withSourcesJar() } jar { diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java index 226714b..2848c74 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java @@ -24,20 +24,39 @@ public abstract class ReloadableResourceManagerImplMixin implements ReloadableRe @Shadow public abstract void addPack(ResourcePack resourcePack); + // Compatibility with 22w03a+ using slf4j logger instead of log4j @Inject( method = "reload", at = @At( value = "INVOKE", - target = "Lorg/apache/logging/log4j/Logger;isDebugEnabled()Z", + target = "Lorg/slf4j/Logger;isDebugEnabled()Z", shift = At.Shift.BEFORE - ) + ), + require = 0 ) private void onPostReload(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { if (this.type != ResourceType.CLIENT_RESOURCES) return; - System.out.println("Inject generated resource packs."); + this.addPack(new CTResourcePack()); + } + + // Compatibility with 1.18.1 and below using log4j + @Inject( + method = "reload", + at = @At( + value = "INVOKE", + target = "Lorg/apache/logging/log4j/Logger;isDebugEnabled()Z", + shift = At.Shift.BEFORE + ), + require = 0 + ) + private void onPostReloadLegacy(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) + { + if (this.type != ResourceType.CLIENT_RESOURCES) + return; + this.addPack(new CTResourcePack()); } } From c7d8a42f62f3f4dad5472eed7708c6701ea6f8ee Mon Sep 17 00:00:00 2001 From: MeeniMc <68366846+MeeniMc@users.noreply.github.com> Date: Wed, 9 Feb 2022 11:14:53 -0500 Subject: [PATCH 14/25] Make the mod a 'library' in modmenu fixes issue #10 Signed-off-by: MeeniMc <68366846+MeeniMc@users.noreply.github.com> --- src/main/resources/fabric.mod.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b15ba7c..3bd356f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,7 +6,11 @@ }, "custom": { "ThanksGoTo": "LambdAurora for letting me use the virtual resource pack loader", - "modmenu:api": true + "modmenu": { + "badges": [ + "library" + ] + } }, "mixins": [ "mixins.crowdintranslate.json" From 0823ebeec9bb3e1abc2b3658c29528cabc29251f Mon Sep 17 00:00:00 2001 From: Emma Waffle Date: Fri, 11 Mar 2022 15:14:57 -0500 Subject: [PATCH 15/25] Update to 1.18.2 --- build.gradle | 25 +++++----- gradle.properties | 1 + .../ReloadableResourceManagerImplMixin.java | 50 +++++-------------- src/main/resources/fabric.mod.json | 2 +- 4 files changed, 26 insertions(+), 52 deletions(-) create mode 100644 gradle.properties diff --git a/build.gradle b/build.gradle index 31b9e4e..4ee9c53 100644 --- a/build.gradle +++ b/build.gradle @@ -1,17 +1,17 @@ plugins { - id 'fabric-loom' version '0.10-SNAPSHOT' + id 'fabric-loom' version '0.11.+' id 'java-gradle-plugin' id 'maven-publish' } -sourceCompatibility = 16 -targetCompatibility = 16 +sourceCompatibility = 17 +targetCompatibility = 17 archivesBaseName = "crowdin-translate" -version = "1.4+22w03a" +version = "1.4+1.18.2" loom { - mixin.defaultRefmapName = "crowdin-translate-refmap.json"; + mixin.defaultRefmapName = "crowdin-translate-refmap.json" } processResources { @@ -26,9 +26,10 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.18-pre5" - mappings "net.fabricmc:yarn:1.18-pre5+build.4:v2" - modImplementation "net.fabricmc:fabric-loader:0.12.12" + minecraft "com.mojang:minecraft:1.18.2" + mappings "net.fabricmc:yarn:1.18.2+build.2:v2" + modImplementation "net.fabricmc:fabric-loader:0.13.3" + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.47.10+1.18.2") } @@ -60,11 +61,9 @@ gradlePlugin { group = "de.guntram.mcmod" publishing { publications { - mavenJava(MavenPublication) { - artifact(remapJar) { - // builtBy remapJar - } - } + mavenJava(MavenPublication) { + from components.java + } } repositories { maven { diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..bf86fb7 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx2G \ No newline at end of file diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java index 2848c74..ceffb42 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/mixins/ReloadableResourceManagerImplMixin.java @@ -1,62 +1,36 @@ package de.guntram.mcmod.crowdintranslate.mixins; import de.guntram.mcmod.crowdintranslate.CTResourcePack; + +import java.util.ArrayList; import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; import net.minecraft.resource.*; -import net.minecraft.util.Unit; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.ModifyArg; @Mixin(ReloadableResourceManagerImpl.class) -public abstract class ReloadableResourceManagerImplMixin implements ReloadableResourceManager +public abstract class ReloadableResourceManagerImplMixin { @Shadow @Final private ResourceType type; - @Shadow - public abstract void addPack(ResourcePack resourcePack); - - // Compatibility with 22w03a+ using slf4j logger instead of log4j - @Inject( - method = "reload", - at = @At( - value = "INVOKE", - target = "Lorg/slf4j/Logger;isDebugEnabled()Z", - shift = At.Shift.BEFORE - ), - require = 0 - ) - private void onPostReload(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) - { - if (this.type != ResourceType.CLIENT_RESOURCES) - return; - - this.addPack(new CTResourcePack()); - } - - // Compatibility with 1.18.1 and below using log4j - @Inject( + @ModifyArg( method = "reload", - at = @At( - value = "INVOKE", - target = "Lorg/apache/logging/log4j/Logger;isDebugEnabled()Z", - shift = At.Shift.BEFORE - ), - require = 0 + at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/LifecycledResourceManagerImpl;(Lnet/minecraft/resource/ResourceType;Ljava/util/List;)V"), + index = 1 ) - private void onPostReloadLegacy(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) + private List onPostReload(List packs) { if (this.type != ResourceType.CLIENT_RESOURCES) - return; + return packs; - this.addPack(new CTResourcePack()); + List list = new ArrayList<>(packs); + list.add(new CTResourcePack()); + return list; } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b15ba7c..c82cdf5 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -12,7 +12,7 @@ "mixins.crowdintranslate.json" ], "depends": { - "fabric": "*" + "fabric-resource-loader-v0": "*" }, "name": "CrowdinTranslate", "description": "Downloads translations (xx_xx.json) files from Crowdin", From 053b83c53814d036ba944653e0cf468974612168 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sun, 13 Mar 2022 09:10:48 +0100 Subject: [PATCH 16/25] update to 1.18, should have commited this long ago --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 5e5fa3e..db975be 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 16 targetCompatibility = 16 archivesBaseName = "crowdin-translate" -version = "1.4+1.18-pre5" +version = "1.4+1.18" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json"; @@ -26,9 +26,9 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.18-pre5" - mappings "net.fabricmc:yarn:1.18-pre5+build.4:v2" - modImplementation "net.fabricmc:fabric-loader:0.12.5" + minecraft "com.mojang:minecraft:1.18" + mappings "net.fabricmc:yarn:1.18+build.1:v2" + modImplementation "net.fabricmc:fabric-loader:0.12.8" } From 2f30b5f422bcf96a704e48f278c0432720d0763d Mon Sep 17 00:00:00 2001 From: OliviaTheVampire Date: Fri, 15 Apr 2022 16:20:54 +0200 Subject: [PATCH 17/25] =?UTF-8?q?Added=20Shakespearean=20English,=20Pirate?= =?UTF-8?q?=20Speak=20and=20Upside=20Down=20English=20+=20added=20nb=20as?= =?UTF-8?q?=20a=20fallback=20for=20norwegian=20bokm=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index 471b34e..510708c 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -61,7 +61,9 @@ enum Tristate { UNKNOWN,YES,NO }; add("en_ud", "en-UD,en-GB,en-US"); add("en_us", "en-US"); //add("enp", "enp"); // Anglish - //add("enws", "enws"); // Shakespearean English + add("en_ws", "en-WS"); + add("en_pt", "en-PT"); + add("en_ud", "en-UD"); add("eo_uy", "eo"); add("es_ar", "es-AR,es-ES"); add("es_cl", "es-CL,es-ES"); @@ -119,7 +121,7 @@ enum Tristate { UNKNOWN,YES,NO }; add("nl_be", "nl-BE,nl"); add("nl_nl", "nl"); add("nn_no", "nn-NO,no"); - add("no_no‌", "no"); + add("no_no", "no,nb"); add("oc_fr", "oc"); //add("ovd", "ovd"); // Elfdalian add("pl_pl", "pl"); From 6cbdef05c7eccc12b7735d5a78acdb3b4b5f6465 Mon Sep 17 00:00:00 2001 From: OliviaTheVampire Date: Fri, 15 Apr 2022 16:24:00 +0200 Subject: [PATCH 18/25] Update CrowdinTranslate.java --- .../de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index 510708c..076bb4d 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -62,7 +62,7 @@ enum Tristate { UNKNOWN,YES,NO }; add("en_us", "en-US"); //add("enp", "enp"); // Anglish add("en_ws", "en-WS"); - add("en_pt", "en-PT"); + add("en_7s", "en-PT"); add("en_ud", "en-UD"); add("eo_uy", "eo"); add("es_ar", "es-AR,es-ES"); From 41f01f77178c7bcd8b854b1f35173a0e4eb80f4f Mon Sep 17 00:00:00 2001 From: OliverDeBrisbane <53711590+OliverDeBrisbane@users.noreply.github.com> Date: Sat, 2 Oct 2021 16:46:35 +1000 Subject: [PATCH 19/25] Update CrowdinTranslate.java --- .../java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index 076bb4d..a5443f7 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -113,6 +113,7 @@ enum Tristate { UNKNOWN,YES,NO }; add("lt_lt", "lt"); add("lv_lv", "lv"); //add("lzh", "lzh"); // Classical Chinese + add("mi_NZ", "mi"); add("mk_mk", "mk"); add("mn_mn", "mn"); add("ms_my", "ms"); From 79e448238e10608c2d3bfef9c9a17c8a3d5e127e Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Tue, 24 May 2022 08:45:41 +0200 Subject: [PATCH 20/25] 1.19-pre2 --- build.gradle | 10 +++++----- .../guntram/mcmod/crowdintranslate/CTResourcePack.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 4ee9c53..2d356c6 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 17 targetCompatibility = 17 archivesBaseName = "crowdin-translate" -version = "1.4+1.18.2" +version = "1.4+1.19-pre2" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json" @@ -26,10 +26,10 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.18.2" - mappings "net.fabricmc:yarn:1.18.2+build.2:v2" - modImplementation "net.fabricmc:fabric-loader:0.13.3" - modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.47.10+1.18.2") + minecraft "com.mojang:minecraft:1.19-pre2" + mappings "net.fabricmc:yarn:1.19-pre2+build.1:v2" + modImplementation "net.fabricmc:fabric-loader:0.14.6" + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.53.3+1.19") } diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java index f4a2bf4..e08f78f 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java @@ -51,7 +51,7 @@ public InputStream open(ResourceType type, Identifier id) throws IOException } @Override - public Collection findResources(ResourceType type, String namespace, String prefix, int maxDepth, Predicate pathFilter) + public Collection findResources(ResourceType type, String namespace, String prefix, Predicate pathFilter) { if (type == ResourceType.SERVER_DATA) return Collections.emptyList(); String start = CrowdinTranslate.getRootDir()+"/assets/" + namespace + "/" + prefix; From 8e3a2713fc7563c11f7fe970a60d1513feb193f6 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sun, 12 Jun 2022 06:58:15 +0200 Subject: [PATCH 21/25] 1.19 --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 2d356c6..542b664 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 17 targetCompatibility = 17 archivesBaseName = "crowdin-translate" -version = "1.4+1.19-pre2" +version = "1.4+1.19" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json" @@ -26,9 +26,9 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.19-pre2" - mappings "net.fabricmc:yarn:1.19-pre2+build.1:v2" - modImplementation "net.fabricmc:fabric-loader:0.14.6" + minecraft "com.mojang:minecraft:1.19" + mappings "net.fabricmc:yarn:1.19+build.2:v2" + modImplementation "net.fabricmc:fabric-loader:0.14.7" modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.53.3+1.19") } From c2bb9c8076df0f107c20aa5a6925e390c29f2155 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Sat, 12 Nov 2022 18:01:38 +0100 Subject: [PATCH 22/25] 22w45a --- build.gradle | 10 ++-- .../crowdintranslate/CTResourcePack.java | 48 +++++++++++-------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/build.gradle b/build.gradle index 542b664..000d934 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 17 targetCompatibility = 17 archivesBaseName = "crowdin-translate" -version = "1.4+1.19" +version = "1.4+1.19.3-alpha22w45a" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json" @@ -26,10 +26,10 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.19" - mappings "net.fabricmc:yarn:1.19+build.2:v2" - modImplementation "net.fabricmc:fabric-loader:0.14.7" - modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.53.3+1.19") + minecraft "com.mojang:minecraft:22w45a" + mappings "net.fabricmc:yarn:22w45a+build.10:v2" + modImplementation "net.fabricmc:fabric-loader:0.14.10" + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.66.1+1.19.3") } diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java index e08f78f..d9532d3 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java @@ -1,16 +1,18 @@ package de.guntram.mcmod.crowdintranslate; +import com.mojang.logging.LogUtils; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; +import net.minecraft.resource.InputSupplier; import net.minecraft.resource.ResourcePack; import net.minecraft.resource.ResourceType; import net.minecraft.resource.metadata.ResourceMetadataReader; import net.minecraft.util.Identifier; +import org.slf4j.Logger; /** * Code taken from LambdAurora, oral permission on Discord on 2020-10-04 @@ -18,7 +20,8 @@ public class CTResourcePack implements ResourcePack { - private final List namespaces = new ArrayList<>(); + private final List namespaces = new ArrayList<>(); + private static final Logger LOGGER = LogUtils.getLogger(); public CTResourcePack() { for (String s: CrowdinTranslate.registeredMods()) { @@ -37,40 +40,40 @@ public boolean put(String resource) } @Override - public InputStream openRoot(String fileName) throws IOException + public InputSupplier openRoot(String ... fileName) { - File file = new File(CrowdinTranslate.getRootDir(), fileName); - return new FileInputStream(file); + File file = new File(CrowdinTranslate.getRootDir(), fileName[0]); + if (file.exists()) { + return InputSupplier.create(file.toPath()); + } else { + return null; + } } @Override - public InputStream open(ResourceType type, Identifier id) throws IOException + public InputSupplier open(ResourceType type, Identifier id) { - if (type == ResourceType.SERVER_DATA) throw new IOException("Reading server data from MCPatcherPatcher client resource pack"); return this.openRoot(type.getDirectory() + "/" + id.getNamespace() + "/" + id.getPath()); } @Override - public Collection findResources(ResourceType type, String namespace, String prefix, Predicate pathFilter) - { - if (type == ResourceType.SERVER_DATA) return Collections.emptyList(); + public void findResources(ResourceType type, String namespace, String prefix, ResourcePack.ResultConsumer consumer) { String start = CrowdinTranslate.getRootDir()+"/assets/" + namespace + "/" + prefix; String[] files = new File(start).list(); + //LOGGER.info("finding resources for {} {}", namespace, prefix); if (files == null || files.length == 0) { - return Collections.EMPTY_LIST; + //LOGGER.info("found nothing"); + return; } - List result = Arrays.asList(files) + //LOGGER.info("found {} files, first is {}", files.length, files[0]); + List resultList = Arrays.asList(files) .stream() .map(CTResourcePack::fromPath) .collect(Collectors.toList()); - return result; - } - - @Override - public boolean contains(ResourceType type, Identifier id) - { - String path = CrowdinTranslate.getRootDir() + "/" + type.getDirectory() + "/" + id.getNamespace() + "/" + id.getPath(); - return new File(path).exists(); + for(Identifier result: resultList) { + //LOGGER.info("sending {} to consumer", result.toString()); + consumer.accept(result, open(type, result)); + } } @Override @@ -95,6 +98,11 @@ public String getName() public void close() { } + + @Override + public boolean isAlwaysStable() { + return true; + } private static Identifier fromPath(String path) { From de7ab508dc7c26f8f722383191263e9a1d9740f7 Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Tue, 11 Jul 2023 09:02:57 +0200 Subject: [PATCH 23/25] 1.19.3, finally commit what should have been committed half a year ago --- build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 000d934..e1b9530 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = 17 targetCompatibility = 17 archivesBaseName = "crowdin-translate" -version = "1.4+1.19.3-alpha22w45a" +version = "1.4+1.19.3" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json" @@ -26,10 +26,10 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:22w45a" - mappings "net.fabricmc:yarn:22w45a+build.10:v2" - modImplementation "net.fabricmc:fabric-loader:0.14.10" - modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.66.1+1.19.3") + minecraft "com.mojang:minecraft:1.19.3" + mappings "net.fabricmc:yarn:1.19.3+build.2:v2" + modImplementation "net.fabricmc:fabric-loader:0.14.11" + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.68.1+1.19.3") } From 6cba935feed52dd22d149b7974ae73deb96382bd Mon Sep 17 00:00:00 2001 From: Luncaaa Date: Sun, 16 Jun 2024 01:24:57 +0200 Subject: [PATCH 24/25] Update to 1.21 --- README.md | 13 +++--------- build.gradle | 16 +++++++------- .../crowdintranslate/CTResourcePack.java | 21 +++++++++---------- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 601d195..3519a25 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ In your build.gradle, at the very top (before `plugins`), add this: ``` buildscript { dependencies { - classpath 'de.guntram.mcmod:crowdin-translate:1.3+1.17' + classpath 'de.guntram.mcmod:crowdin-translate:1.5+1.21' } repositories { maven { @@ -53,9 +53,6 @@ buildscript { } ``` -(note that you can use this no matter which Minecraft version you're compiling -for, even if the maven version number says 1.17). - Then, somewhere later (after plugins) add: ``` @@ -94,15 +91,11 @@ repositories { } } dependencies { - modImplementation "de.guntram.mcmod:crowdin-translate:" - include "de.guntram.mcmod:crowdin-translate:" + modImplementation "de.guntram.mcmod:crowdin-translate:1.5+1.21" + include "de.guntram.mcmod:crowdin-translate:1.5+1.21" } ``` -where `version` is currently either `1.3+1.16` or `1.3+1.17`. -(The `1.3+1.16` version actually works for all versions from 1.15.2 to 20w48a, -20w49a introduced an incompatible change. 1.3+1.17 works from 1.17 on.) - and this to your ClientModInitializer: ``` diff --git a/build.gradle b/build.gradle index e1b9530..6353aa8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ plugins { - id 'fabric-loom' version '0.11.+' + id 'fabric-loom' version '1.6.+' id 'java-gradle-plugin' id 'maven-publish' } -sourceCompatibility = 17 -targetCompatibility = 17 +sourceCompatibility = 21 +targetCompatibility = 21 archivesBaseName = "crowdin-translate" -version = "1.4+1.19.3" +version = "1.5+1.21" loom { mixin.defaultRefmapName = "crowdin-translate-refmap.json" @@ -26,10 +26,10 @@ processResources { // They are only included to make loom happy. // Use old versions intentionally to make this work with a broad range of MCs. dependencies { - minecraft "com.mojang:minecraft:1.19.3" - mappings "net.fabricmc:yarn:1.19.3+build.2:v2" - modImplementation "net.fabricmc:fabric-loader:0.14.11" - modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.68.1+1.19.3") + minecraft "com.mojang:minecraft:1.21" + mappings "net.fabricmc:yarn:1.21+build.2" + modImplementation "net.fabricmc:fabric-loader:0.15.11" + modRuntimeOnly fabricApi.module("fabric-resource-loader-v0", "0.100.1+1.21") } diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java index d9532d3..1ac39ae 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CTResourcePack.java @@ -5,12 +5,11 @@ import java.io.IOException; import java.io.InputStream; import java.util.*; -import java.util.function.Predicate; import java.util.stream.Collectors; -import net.minecraft.resource.InputSupplier; -import net.minecraft.resource.ResourcePack; -import net.minecraft.resource.ResourceType; + +import net.minecraft.resource.*; import net.minecraft.resource.metadata.ResourceMetadataReader; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.slf4j.Logger; @@ -89,26 +88,26 @@ public T parseMetadata(ResourceMetadataReader metaReader) throws IOExcept } @Override + public ResourcePackInfo getInfo() { + return new ResourcePackInfo("CrowdinTranslate internal Resource Pack", Text.of("CrowdinTranslate internal Resource Pack"), ResourcePackSource.BUILTIN, Optional.empty()); + } + + /*@Override public String getName() { return "CrowdinTranslate internal Resource Pack"; - } + }*/ @Override public void close() { } - - @Override - public boolean isAlwaysStable() { - return true; - } private static Identifier fromPath(String path) { if (path.startsWith("assets/")) path = path.substring("assets/".length()); String[] split = path.split("/", 2); - return new Identifier(split[0], split[1]); + return Identifier.of(split[0], split[1]); } } From 4f8964dc2e323fd9aff4818d9abec5fc6331cf27 Mon Sep 17 00:00:00 2001 From: supersaiyansubtlety Date: Tue, 18 Jun 2024 02:10:39 -0700 Subject: [PATCH 25/25] implemented entrypoint --- .../mcmod/crowdintranslate/ClientInit.java | 103 ++++++++++++++++++ .../crowdintranslate/CrowdinTranslate.java | 17 ++- src/main/resources/fabric.mod.json | 8 +- 3 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 src/main/java/de/guntram/mcmod/crowdintranslate/ClientInit.java diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/ClientInit.java b/src/main/java/de/guntram/mcmod/crowdintranslate/ClientInit.java new file mode 100644 index 0000000..87d09a3 --- /dev/null +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/ClientInit.java @@ -0,0 +1,103 @@ +package de.guntram.mcmod.crowdintranslate; + +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.metadata.CustomValue; + +import java.util.Optional; +import java.util.function.Function; + +import static de.guntram.mcmod.crowdintranslate.ClientInit.Keys.*; +import static de.guntram.mcmod.crowdintranslate.CrowdinTranslate.*; +import static net.fabricmc.loader.api.metadata.CustomValue.CvType.*; + +public class ClientInit implements ClientModInitializer { + private static String getRequiredString(CustomValue.CvObject object, String key, String modId) { + return getValue(object, key, STRING, CustomValue::getAsString, modId, true).orElse(null); + } + + private static Optional getOptionalValue( + CustomValue.CvObject object, String key, + CustomValue.CvType type, Function getter, + String modId + ) { + return getValue(object, key, type, getter, modId, false); + } + + private static Optional getValue( + CustomValue.CvObject object, String key, + CustomValue.CvType type, Function getter, + String modId, boolean logMissing + ) { + final var value = object.get(key); + if (value == null) { + if (logMissing) LOGGER.error( + "Missing \"{}\" key in object for \"" + NAME + "\" entrypoint in " + + "fabric.mod.json of mod: {}", + key, modId + ); + + return Optional.empty(); + } else { + final var valueType = value.getType(); + if (valueType == type) return Optional.of(getter.apply(value)); + else { + LOGGER.error( + "Invalid type for \"{}\" key in object for \"" + NAME + "\" entrypoint in " + + "fabric.mod.json of mod: {}\nExpected {}; found {}", + key, modId, type, valueType + ); + + return Optional.empty(); + } + } + } + + @Override + public void onInitializeClient() { + for (ModContainer container : FabricLoader.getInstance().getAllMods()) { + final var metadata = container.getMetadata(); + final var customValue = metadata.getCustomValue(NAME); + if (customValue == null) continue; + + final var type = customValue.getType(); + final String modId = metadata.getId(); + switch (type) { + case BOOLEAN -> { if (customValue.getAsBoolean()) downloadTranslations(modId); } + case STRING -> downloadTranslations(customValue.getAsString()); + case OBJECT -> { + final var object = customValue.getAsObject(); + + final var crowdinProjectName = getRequiredString(object, CROWDIN_PROJECT_NAME, modId); + if (crowdinProjectName == null) return; + + final var minecraftProjectName = getRequiredString(object, MINECRAFT_PROJECT_NAME, modId); + if (minecraftProjectName == null) return; + + final var verbose = + getOptionalValue(object, VERBOSE, BOOLEAN, CustomValue::getAsBoolean, modId) + .orElse(false); + + final var sourcefileOverride = + getOptionalValue(object, SOURCE_FILE_OVERRIDE, STRING, CustomValue::getAsString, modId) + .orElse(null); + + downloadTranslations(crowdinProjectName, minecraftProjectName, sourcefileOverride, verbose); + } + default -> LOGGER.error( + "Invalid type for \"" + NAME + "\" entrypoint in " + + "fabric.mod.json of mod: {}\nExpected {}, {}, or {}; found {}", + modId, BOOLEAN, STRING, OBJECT, type + ); + } + } + } + + public interface Keys { + String CROWDIN_PROJECT_NAME = "crowdinProjectName"; + String MINECRAFT_PROJECT_NAME = "minecraftProjectName"; + String SOURCE_FILE_OVERRIDE = "sourceFileOverride"; + String VERBOSE = "verbose"; + } +} diff --git a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java index a5443f7..f2297fe 100644 --- a/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java +++ b/src/main/java/de/guntram/mcmod/crowdintranslate/CrowdinTranslate.java @@ -1,5 +1,8 @@ package de.guntram.mcmod.crowdintranslate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.io.BufferedReader; import java.io.Closeable; import java.io.File; @@ -21,7 +24,9 @@ public class CrowdinTranslate extends Thread { - + public static final String NAME = "crowdin-translate"; + public static final Logger LOGGER = LogManager.getLogger(); + private static final Map mcCodetoCrowdinCode; /* The directory to download to. This is used in the mod; main will overwrite this. */ private static String rootDir = "ModTranslations"; @@ -174,11 +179,11 @@ public static void downloadTranslations(String crowdinProjectName, String minecr downloadTranslations(crowdinProjectName, minecraftProjectName, null, verbose); } - public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourcefileOverride) { - downloadTranslations(crowdinProjectName, minecraftProjectName, sourcefileOverride, false); + public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourceFileOverride) { + downloadTranslations(crowdinProjectName, minecraftProjectName, sourceFileOverride, false); } - public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourcefileOverride, boolean verbose) { + public static void downloadTranslations(String crowdinProjectName, String minecraftProjectName, String sourceFileOverride, boolean verbose) { registeredMods.add(minecraftProjectName); if (thisIsAMod && ( !downloadsAllowed() || projectDownloadedRecently(minecraftProjectName))) { @@ -188,8 +193,8 @@ public static void downloadTranslations(String crowdinProjectName, String minecr if (verbose) { runner.setVerbose(); } - if (sourcefileOverride != null) { - runner.setSourceFileOverride(sourcefileOverride); + if (sourceFileOverride != null) { + runner.setSourceFileOverride(sourceFileOverride); } runner.start(); if (!thisIsAMod) { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e522b8d..512de98 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -3,20 +3,22 @@ "id": "crowdin-translate", "version": "${version}", "entrypoints": { + "client": [ "de.guntram.mcmod.crowdintranslate.ClientInit" ] }, "custom": { "ThanksGoTo": "LambdAurora for letting me use the virtual resource pack loader", "modmenu": { "badges": [ "library" - ] - } + ] + } }, "mixins": [ "mixins.crowdintranslate.json" ], "depends": { - "fabric-resource-loader-v0": "*" + "fabric-resource-loader-v0": "*", + "fabricloader": "*" }, "name": "CrowdinTranslate", "description": "Downloads translations (xx_xx.json) files from Crowdin",