fabric-resource-loader-v0-3.3.1+d4d4122a6f.jar
Download file
package net.fabricmc.fabric.mixin.resource.loader.server;
import com.google.common.collect.ImmutableMap;
import com.google.gson.JsonParseException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import java.util.Objects;
import java.util.function.BiConsumer;
import net.fabricmc.fabric.impl.resource.loader.ServerLanguageUtil;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.minecraft.class_2477;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin({class_2477.class})
class LanguageMixin {
@Shadow
@Final
private static Logger field_11490;
@Redirect(
method = {"method_29429()Lnet/minecraft/class_2477;"},
at = @At(
value = "INVOKE",
target = "Ljava/util/Map;copyOf(Ljava/util/Map;)Ljava/util/Map;"
)
)
private static Map<String, String> create(Map<String, String> map) {
for(Path path : ServerLanguageUtil.getModLanguageFiles()) {
Objects.requireNonNull(map);
loadFromPath(path, map::put);
}
return ImmutableMap.copyOf(map);
}
@Redirect(
method = {"method_51465(Ljava/util/function/BiConsumer;Ljava/lang/String;)V"},
at = @At(
value = "INVOKE",
target = "Ljava/lang/Class;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"
)
)
private static InputStream readCorrectVanillaResource(Class instance, String path) throws IOException {
ModContainer mod = (ModContainer)FabricLoader.getInstance().getModContainer("minecraft").orElseThrow();
Path langPath = (Path)mod.findPath(path).orElse((Object)null);
if (langPath == null) {
throw new IOException("Could not read %s from minecraft ModContainer".formatted(path));
} else {
return Files.newInputStream(langPath);
}
}
@Unique
private static void loadFromPath(Path path, BiConsumer<String, String> entryConsumer) {
try {
InputStream stream = Files.newInputStream(path);
try {
field_11490.debug("Loading translations from {}", path);
method_29425(stream, entryConsumer);
} catch (Throwable var6) {
if (stream != null) {
try {
stream.close();
} catch (Throwable var5) {
var6.addSuppressed(var5);
}
}
throw var6;
}
if (stream != null) {
stream.close();
}
} catch (IOException | JsonParseException e) {
field_11490.error("Couldn't read strings from {}", path, e);
}
}
@Shadow
public static void method_29425(InputStream inputStream, BiConsumer<String, String> entryConsumer) {
}
}
Download file