From d5c97a1680f37c6bca79099790f5310a36af0259 Mon Sep 17 00:00:00 2001 From: moehreag Date: Sun, 28 Jan 2024 19:44:24 +0100 Subject: [PATCH] additionally support loading lang files on 1.13+ --- .../mixin/client/TranslationStorageMixin.java | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/libraries/resource-loader/resource-loader-mc17w43a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TranslationStorageMixin.java b/libraries/resource-loader/resource-loader-mc17w43a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TranslationStorageMixin.java index 022637bc..f6abc4e3 100644 --- a/libraries/resource-loader/resource-loader-mc17w43a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TranslationStorageMixin.java +++ b/libraries/resource-loader/resource-loader-mc17w43a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TranslationStorageMixin.java @@ -1,9 +1,9 @@ package net.ornithemc.osl.resource.loader.impl.mixin.client; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.List; @@ -15,7 +15,6 @@ import net.minecraft.client.resource.manager.ResourceManager; import net.minecraft.resource.Identifier; import net.minecraft.resource.Resource; -import org.quiltmc.parsers.json.JsonReader; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -38,15 +37,12 @@ public abstract class TranslationStorageMixin { ) private void osl$resource_loader$loadJsonFiles(TranslationStorage instance, List resources, Operation original, @Local(ordinal = 0) String languageCode, @Local(ordinal = 1) String originalPath, - @Local(ordinal = 2) String namespace, @Local(argsOnly = true) ResourceManager manager){ - String[] paths = new String[]{originalPath, String.format("lang/%s.json", languageCode), + @Local(ordinal = 2) String namespace, @Local(argsOnly = true) ResourceManager manager) throws IOException{ + String[] paths = new String[]{originalPath, String.format("lang/%s.lang", languageCode), String.format("lang/%s.json", languageCode.toLowerCase(Locale.ROOT)), String.format("lang/%s.lang", languageCode.toLowerCase(Locale.ROOT))}; for (String s : paths){ - try { - original.call(instance, manager.getResources(new Identifier(namespace, s))); - } catch (IOException ignored) { - } + original.call(instance, manager.getResources(new Identifier(namespace, s))); } } @@ -57,30 +53,23 @@ public abstract class TranslationStorageMixin { target = "Lnet/minecraft/client/resource/language/TranslationStorage;load(Ljava/io/InputStream;)V" ) ) - private void osl$resource_loader$loadJsonFiles$2(TranslationStorage instance, InputStream is, Operation original, @Local Resource resource){ - if (resource.getLocation().getPath().endsWith(".json")){ - loadJson(is); + private void osl$resource_loader$loadJsonFiles$2(TranslationStorage instance, InputStream is, Operation original, @Local Resource resource) throws IOException { + if (resource.getLocation().getPath().endsWith(".lang")){ + loadLang(is); } else { original.call(instance, is); } } @Unique - private void loadJson(InputStream stream) { + private void loadLang(InputStream stream) throws IOException { if (stream == null) { return; } - JsonReader reader = JsonReader.json(new InputStreamReader(stream)); - Map entries = new HashMap<>(); - try { - reader.beginObject(); - while (reader.hasNext()) { - entries.put(reader.nextName(), reader.nextString()); - } - reader.endObject(); - } catch (IOException ignored) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) { + reader.lines().filter(l -> !l.startsWith("#")) + .map(line -> line.split("=", 2)).forEach(key -> translations.put(key[0], key[1])); } - translations.putAll(entries); } }