Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / LocaleLanguage.java
package net.minecraft.server;

import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Pattern;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LocaleLanguage {

    private static final Logger LOGGER = LogManager.getLogger();
    private static final Pattern b = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]");
    private static final LocaleLanguage c = new LocaleLanguage();
    private final Map<String, String> d = Maps.newHashMap();
    private long e;

    public LocaleLanguage() {
        try {
            InputStream inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_us.json");
            Throwable throwable = null;

            try {
                JsonElement jsonelement = (JsonElement) (new Gson()).fromJson(new InputStreamReader(inputstream, StandardCharsets.UTF_8), JsonElement.class);
                JsonObject jsonobject = ChatDeserializer.m(jsonelement, "strings");
                Iterator iterator = jsonobject.entrySet().iterator();

                while (iterator.hasNext()) {
                    Entry<String, JsonElement> entry = (Entry) iterator.next();
                    String s = LocaleLanguage.b.matcher(ChatDeserializer.a((JsonElement) entry.getValue(), (String) entry.getKey())).replaceAll("%$1s");

                    this.d.put(entry.getKey(), s);
                }

                this.e = SystemUtils.getMonotonicMillis();
            } catch (Throwable throwable1) {
                throwable = throwable1;
                throw throwable1;
            } finally {
                if (inputstream != null) {
                    if (throwable != null) {
                        try {
                            inputstream.close();
                        } catch (Throwable throwable2) {
                            throwable.addSuppressed(throwable2);
                        }
                    } else {
                        inputstream.close();
                    }
                }

            }
        } catch (JsonParseException | IOException ioexception) {
            LocaleLanguage.LOGGER.error("Couldn't read strings from /assets/minecraft/lang/en_us.json", ioexception);
        }

    }

    public static LocaleLanguage a() {
        return LocaleLanguage.c;
    }

    public synchronized String a(String s) {
        return this.c(s);
    }

    private String c(String s) {
        String s1 = (String) this.d.get(s);

        return s1 == null ? s : s1;
    }

    public synchronized boolean b(String s) {
        return this.d.containsKey(s);
    }

    public long b() {
        return this.e;
    }
}