From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zoe <duplexsys@protonmail.com>
Date: Sun, 25 Oct 2020 11:45:38 -0500
Subject: [PATCH] Custom Locale Support

All Server Jars Come with a pre-baked, usually English, locale file. This patch allows you to change the locale file by creating a locale.json file in the root directory of your server. Note that while custom locale files are supported by the server no support will be given for non-official Mojang locale files.

diff --git a/src/main/java/net/minecraft/server/LocaleLanguage.java b/src/main/java/net/minecraft/server/LocaleLanguage.java
index 29d55483510d3644a1edd3a01d7314232c358ac6..9909dd07d47ec86b71b74f66ab0e252de3441e23 100644
--- a/src/main/java/net/minecraft/server/LocaleLanguage.java
+++ b/src/main/java/net/minecraft/server/LocaleLanguage.java
@@ -30,9 +30,19 @@ public abstract class LocaleLanguage {
     private static LocaleLanguage c() {
         Builder<String, String> builder = ImmutableMap.builder();
         BiConsumer<String, String> biconsumer = builder::put; // Paper - decompile fix
+        boolean usingCustomLocale = false; // Yatopia
 
         try {
-            InputStream inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_us.json");
+            // Yatopia Start - Custom Locale
+            InputStream inputstream;
+            java.io.File file = new java.io.File("./locale.json");
+            if (file.isFile() && file.canRead()) {
+                usingCustomLocale = true;
+                inputstream = new java.io.FileInputStream(file);
+            } else {
+                inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_us.json");
+            }
+            // Yatopia End
             Throwable throwable = null;
 
             try {
@@ -55,7 +65,11 @@ public abstract class LocaleLanguage {
 
             }
         } catch (JsonParseException | IOException ioexception) {
+            if (!usingCustomLocale) { // Yatopia
             LocaleLanguage.LOGGER.error("Couldn't read strings from /assets/minecraft/lang/en_us.json", ioexception);
+            } else { // Yatopia start
+                LocaleLanguage.LOGGER.error("Couldn't read strings from custom locale file. Please check that your custom Locale File is formatted correctly", ioexception);
+            } // Yatopia end
         }
 
         final Map<String, String> map = builder.build();
