|
1 | 1 | --- a/net/minecraft/locale/Language.java |
2 | 2 | +++ b/net/minecraft/locale/Language.java |
3 | | -@@ -34,7 +_,8 @@ |
4 | | - ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); |
5 | | - BiConsumer<String, String> biconsumer = builder::put; |
6 | | - m_280428_(biconsumer, "/assets/minecraft/lang/en_us.json"); |
7 | | -- final Map<String, String> map = builder.build(); |
8 | | -+ final Map<String, String> map = new java.util.HashMap<>(builder.build()); |
9 | | -+ net.minecraftforge.server.LanguageHook.captureLanguageMap(map); |
10 | | - return new Language() { |
11 | | - public String m_118919_(String p_128127_, String p_265421_) { |
12 | | - return map.getOrDefault(p_128127_, p_265421_); |
13 | | -@@ -55,6 +_,11 @@ |
14 | | - }, Style.f_131099_).isPresent(); |
15 | | - }; |
16 | | - } |
17 | | -+ |
18 | | -+ @Override |
19 | | -+ public Map<String, String> getLanguageData() { |
20 | | -+ return map; |
21 | | -+ } |
22 | | - }; |
23 | | - } |
| 3 | +@@ -6,6 +_,8 @@ |
| 4 | + import com.google.gson.JsonElement; |
| 5 | + import com.google.gson.JsonObject; |
| 6 | + import com.google.gson.JsonParseException; |
| 7 | ++import com.mohistmc.MohistConfig; |
| 8 | ++import com.mohistmc.MohistMC; |
| 9 | + import com.mojang.logging.LogUtils; |
| 10 | + import java.io.IOException; |
| 11 | + import java.io.InputStream; |
| 12 | +@@ -24,80 +_,103 @@ |
| 13 | + import org.slf4j.Logger; |
24 | 14 |
|
25 | | -@@ -84,6 +_,9 @@ |
26 | | - public static void m_128114_(Language p_128115_) { |
27 | | - f_128104_ = p_128115_; |
28 | | - } |
| 15 | + public abstract class Language { |
| 16 | +- private static final Logger f_128101_ = LogUtils.getLogger(); |
| 17 | +- private static final Gson f_128102_ = new Gson(); |
| 18 | +- private static final Pattern f_128103_ = Pattern.compile("%(\\d+\\$)?[\\d.]*[df]"); |
| 19 | +- public static final String f_177832_ = "en_us"; |
| 20 | +- private static volatile Language f_128104_ = m_128118_(); |
| 21 | +- |
| 22 | +- private static Language m_128118_() { |
| 23 | +- ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); |
| 24 | +- BiConsumer<String, String> biconsumer = builder::put; |
| 25 | +- m_280428_(biconsumer, "/assets/minecraft/lang/en_us.json"); |
| 26 | +- final Map<String, String> map = builder.build(); |
| 27 | +- return new Language() { |
| 28 | +- public String m_118919_(String p_128127_, String p_265421_) { |
| 29 | +- return map.getOrDefault(p_128127_, p_265421_); |
| 30 | +- } |
| 31 | +- |
| 32 | +- public boolean m_6722_(String p_128135_) { |
| 33 | +- return map.containsKey(p_128135_); |
| 34 | +- } |
| 35 | +- |
| 36 | +- public boolean m_6627_() { |
| 37 | +- return false; |
| 38 | +- } |
| 39 | +- |
| 40 | +- public FormattedCharSequence m_5536_(FormattedText p_128129_) { |
| 41 | +- return (p_128132_) -> { |
| 42 | +- return p_128129_.m_7451_((p_177835_, p_177836_) -> { |
| 43 | +- return StringDecomposer.m_14346_(p_177836_, p_177835_, p_128132_) ? Optional.empty() : FormattedText.f_130759_; |
| 44 | +- }, Style.f_131099_).isPresent(); |
| 45 | +- }; |
| 46 | +- } |
| 47 | +- }; |
| 48 | +- } |
| 49 | +- |
| 50 | +- private static void m_280428_(BiConsumer<String, String> p_282031_, String p_283638_) { |
| 51 | +- try (InputStream inputstream = Language.class.getResourceAsStream(p_283638_)) { |
| 52 | +- m_128108_(inputstream, p_282031_); |
| 53 | +- } catch (JsonParseException | IOException ioexception) { |
| 54 | +- f_128101_.error("Couldn't read strings from {}", p_283638_, ioexception); |
| 55 | +- } |
| 56 | +- |
| 57 | +- } |
| 58 | +- |
| 59 | +- public static void m_128108_(InputStream p_128109_, BiConsumer<String, String> p_128110_) { |
| 60 | +- JsonObject jsonobject = f_128102_.fromJson(new InputStreamReader(p_128109_, StandardCharsets.UTF_8), JsonObject.class); |
| 61 | +- |
| 62 | +- for(Map.Entry<String, JsonElement> entry : jsonobject.entrySet()) { |
| 63 | +- String s = f_128103_.matcher(GsonHelper.m_13805_(entry.getValue(), entry.getKey())).replaceAll("%$1s"); |
| 64 | +- p_128110_.accept(entry.getKey(), s); |
| 65 | +- } |
| 66 | +- |
| 67 | +- } |
| 68 | +- |
| 69 | +- public static Language m_128107_() { |
| 70 | +- return f_128104_; |
| 71 | +- } |
| 72 | +- |
| 73 | +- public static void m_128114_(Language p_128115_) { |
| 74 | +- f_128104_ = p_128115_; |
| 75 | +- } |
| 76 | +- |
| 77 | +- public String m_6834_(String p_128111_) { |
| 78 | +- return this.m_118919_(p_128111_, p_128111_); |
| 79 | +- } |
| 80 | +- |
| 81 | +- public abstract String m_118919_(String p_265702_, String p_265599_); |
| 82 | +- |
| 83 | +- public abstract boolean m_6722_(String p_128117_); |
| 84 | +- |
| 85 | +- public abstract boolean m_6627_(); |
| 86 | +- |
| 87 | +- public abstract FormattedCharSequence m_5536_(FormattedText p_128116_); |
| 88 | +- |
| 89 | +- public List<FormattedCharSequence> m_128112_(List<FormattedText> p_128113_) { |
| 90 | +- return p_128113_.stream().map(this::m_5536_).collect(ImmutableList.toImmutableList()); |
| 91 | +- } |
| 92 | ++ private static final Logger f_128101_ = LogUtils.getLogger(); |
| 93 | ++ private static final Gson f_128102_ = new Gson(); |
| 94 | ++ private static final Pattern f_128103_ = Pattern.compile("%(\\d+\\$)?[\\d.]*[df]"); |
| 95 | ++ public static final String f_177832_ = "en_us"; |
| 96 | ++ private static volatile Language f_128104_ = m_128118_(); |
29 | 97 | + |
30 | | -+ // FORGE START |
31 | | -+ public Map<String, String> getLanguageData() { return ImmutableMap.of(); } |
32 | | - |
33 | | - public String m_6834_(String p_128111_) { |
34 | | - return this.m_118919_(p_128111_, p_128111_); |
| 98 | ++ private static Language m_128118_() { |
| 99 | ++ ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); |
| 100 | ++ BiConsumer<String, String> biconsumer = builder::put; |
| 101 | ++ String lang = MohistConfig.mohist_lang().toLowerCase(); |
| 102 | ++ InputStream inputstream1 = MohistMC.class.getResourceAsStream("/assets/minecraft/lang/" + lang + ".lang"); |
| 103 | ++ InputStream inputstream2 = MohistMC.class.getResourceAsStream("/assets/minecraft/lang/en_us.lang"); |
| 104 | ++ InputStream inputstream = (inputstream1 == null ? inputstream2 : inputstream1); |
| 105 | ++ injectLang(inputstream, biconsumer, "/assets/minecraft/lang/" + lang + ".lang"); |
| 106 | ++ // parseTranslations(biconsumer, "/assets/minecraft/lang/en_us.json");// NeoTenet - use parse i18n instead |
| 107 | ++ final Map<String, String> map = new java.util.HashMap<>(builder.build()); |
| 108 | ++ net.minecraftforge.server.LanguageHook.captureLanguageMap(map); |
| 109 | ++ return new Language() { |
| 110 | ++ public String m_118919_(String p_128127_, String p_265421_) { |
| 111 | ++ return map.getOrDefault(p_128127_, p_265421_); |
| 112 | ++ } |
| 113 | ++ |
| 114 | ++ public boolean m_6722_(String p_128135_) { |
| 115 | ++ return map.containsKey(p_128135_); |
| 116 | ++ } |
| 117 | ++ |
| 118 | ++ public boolean m_6627_() { |
| 119 | ++ return false; |
| 120 | ++ } |
| 121 | ++ |
| 122 | ++ public FormattedCharSequence m_5536_(FormattedText p_128129_) { |
| 123 | ++ return (p_128132_) -> { |
| 124 | ++ return p_128129_.m_7451_((p_177835_, p_177836_) -> { |
| 125 | ++ return StringDecomposer.m_14346_(p_177836_, p_177835_, p_128132_) ? Optional.empty() : FormattedText.f_130759_; |
| 126 | ++ }, Style.f_131099_).isPresent(); |
| 127 | ++ }; |
| 128 | ++ } |
| 129 | ++ |
| 130 | ++ @Override |
| 131 | ++ public Map<String, String> getLanguageData() { |
| 132 | ++ return map; |
| 133 | ++ } |
| 134 | ++ }; |
| 135 | ++ } |
| 136 | ++ |
| 137 | ++ private static void m_280428_(BiConsumer<String, String> p_282031_, String p_283638_) { |
| 138 | ++ try (InputStream inputstream = Language.class.getResourceAsStream(p_283638_)) { |
| 139 | ++ m_128108_(inputstream, p_282031_); |
| 140 | ++ } catch (JsonParseException | IOException ioexception) { |
| 141 | ++ f_128101_.error("Couldn't read strings from {}", p_283638_, ioexception); |
| 142 | ++ } |
| 143 | ++ |
| 144 | ++ } |
| 145 | ++ |
| 146 | ++ private static void injectLang(InputStream inputstreamLang, BiConsumer<String, String> p_282031_, String p_283638_) { |
| 147 | ++ try (InputStream inputstream = inputstreamLang) { |
| 148 | ++ m_128108_(inputstream, p_282031_); |
| 149 | ++ } catch (JsonParseException | IOException ioexception) { |
| 150 | ++ f_128101_.error("Couldn't read strings from {}", p_283638_, ioexception); |
| 151 | ++ } |
| 152 | ++ |
| 153 | ++ } |
| 154 | ++ |
| 155 | ++ public static void m_128108_(InputStream p_128109_, BiConsumer<String, String> p_128110_) { |
| 156 | ++ JsonObject jsonobject = f_128102_.fromJson(new InputStreamReader(p_128109_, StandardCharsets.UTF_8), JsonObject.class); |
| 157 | ++ |
| 158 | ++ for(Map.Entry<String, JsonElement> entry : jsonobject.entrySet()) { |
| 159 | ++ String s = f_128103_.matcher(GsonHelper.m_13805_(entry.getValue(), entry.getKey())).replaceAll("%$1s"); |
| 160 | ++ p_128110_.accept(entry.getKey(), s); |
| 161 | ++ } |
| 162 | ++ |
| 163 | ++ } |
| 164 | ++ |
| 165 | ++ public static Language m_128107_() { |
| 166 | ++ return f_128104_; |
| 167 | ++ } |
| 168 | ++ |
| 169 | ++ public static void m_128114_(Language p_128115_) { |
| 170 | ++ f_128104_ = p_128115_; |
| 171 | ++ } |
| 172 | ++ |
| 173 | ++ // FORGE START |
| 174 | ++ public Map<String, String> getLanguageData() { return ImmutableMap.of(); } |
| 175 | ++ |
| 176 | ++ public String m_6834_(String p_128111_) { |
| 177 | ++ return this.m_118919_(p_128111_, p_128111_); |
| 178 | ++ } |
| 179 | ++ |
| 180 | ++ public abstract String m_118919_(String p_265702_, String p_265599_); |
| 181 | ++ |
| 182 | ++ public abstract boolean m_6722_(String p_128117_); |
| 183 | ++ |
| 184 | ++ public abstract boolean m_6627_(); |
| 185 | ++ |
| 186 | ++ public abstract FormattedCharSequence m_5536_(FormattedText p_128116_); |
| 187 | ++ |
| 188 | ++ public List<FormattedCharSequence> m_128112_(List<FormattedText> p_128113_) { |
| 189 | ++ return p_128113_.stream().map(this::m_5536_).collect(ImmutableList.toImmutableList()); |
| 190 | ++ } |
| 191 | + } |
0 commit comments