From ac7403d39a928740071cf70a4af0293d41041326 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 26 Mar 2020 13:17:09 -0500 Subject: [PATCH] Add language asset purpur.lang --- .../net/minecraft/server/EntityPlayer.java | 1 + .../net/minecraft/server/LocaleLanguage.java | 38 ++++++++++++++++++- src/main/resources/purpur.lang | 1 + 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/purpur.lang diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index fb38975830..74085c0511 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1561,6 +1561,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(IChatBaseComponent ichatbasecomponent, ChatMessageType chatmessagetype) { + if (ichatbasecomponent == null) return; // Purpur this.playerConnection.a((Packet) (new PacketPlayOutChat(ichatbasecomponent, chatmessagetype)), (future) -> { if (!future.isSuccess() && (chatmessagetype == ChatMessageType.GAME_INFO || chatmessagetype == ChatMessageType.SYSTEM)) { boolean flag = true; diff --git a/src/main/java/net/minecraft/server/LocaleLanguage.java b/src/main/java/net/minecraft/server/LocaleLanguage.java index 6012739331..17527965c7 100644 --- a/src/main/java/net/minecraft/server/LocaleLanguage.java +++ b/src/main/java/net/minecraft/server/LocaleLanguage.java @@ -15,6 +15,7 @@ import java.util.Map.Entry; import java.util.regex.Pattern; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.bukkit.ChatColor; public class LocaleLanguage { @@ -25,8 +26,31 @@ public class LocaleLanguage { private long e; public LocaleLanguage() { + // Purpur start + loadFromJar("/assets/minecraft/lang/en_us.json"); + loadFromFile("purpur.lang"); + } + + private void loadFromFile(String resource) { try { - InputStream inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_us.json"); + java.io.File file = new java.io.File(resource); + if (!file.exists()) { + java.nio.file.Files.copy(getClass().getResourceAsStream("/" + resource), file.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING); + } + loadFromJar("/" + resource); + loadFromStream(resource, new java.io.FileInputStream(file)); + } catch (IOException e) { + LOGGER.error("Couldn't read string from " + resource, e); + } + } + + private void loadFromJar(String resource) { + loadFromStream(resource, getClass().getResourceAsStream(resource)); + } + + private void loadFromStream(String resource, InputStream inputstream) { + try { + // Purpur end Throwable throwable = null; try { @@ -60,7 +84,7 @@ public class LocaleLanguage { } } catch (JsonParseException | IOException ioexception) { - LocaleLanguage.LOGGER.error("Couldn't read strings from /assets/minecraft/lang/en_us.json", ioexception); + LocaleLanguage.LOGGER.error("Couldn't read strings from " + resource, ioexception); // Purpur } } @@ -88,4 +112,14 @@ public class LocaleLanguage { public long b() { return this.e; } + + // Purpur start + public static ChatMessage translate(String key, Object... args) { + String str = getInstance().translateKey(key); + if (str == null) return null; + str = ChatColor.translateAlternateColorCodes('&', str); + if (str.isEmpty()) return null; + return new ChatMessage(str, args); + } + // Purpur end } diff --git a/src/main/resources/purpur.lang b/src/main/resources/purpur.lang new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/main/resources/purpur.lang @@ -0,0 +1 @@ +{} -- 2.24.0