Files
Purpur/patches/server/0004-Add-language-asset-purpur.lang.patch
William Blake Galbreath fc7824b3a8 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
f29c7ebd Improve async login (#3189)
9fd36824 Fix Citizens Player NPC tracking issue - Fixes #3186
0e72de1c Fix Player Tracking issue during join process.
f26362af Load Spawn Chunks Asynchronously and Spiral Out
54f762e2 Load Chunks for Login Asynchronously
f2d1b6e5 Clean up duplicate PlayerInitialSpawnEvent
c2d022d7 Fix Longstanding Broken behavior of PlayerJoinEvent
d0a348b9 Broadcast join messages to console
1ef687a4 Don't crash if player is attempted to be removed from untracked chunk.
c11668ac Make sure the chunk conversion task is executed immediately
26fb7cc3 Fix Chunk Post Processing deadlock risk
2020-04-19 17:06:16 -05:00

136 lines
5.9 KiB
Diff

From 4063b9b2cfbe02d1f6b45b60ccf7204696616ebf Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
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 | 48 +++++++++++++++++--
.../pl3x/purpur/command/PurpurCommand.java | 3 ++
src/main/resources/purpur.lang | 1 +
4 files changed, 49 insertions(+), 4 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 75543ee6dc..fd5d62c050 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1563,6 +1563,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..75707adcd7 100644
--- a/src/main/java/net/minecraft/server/LocaleLanguage.java
+++ b/src/main/java/net/minecraft/server/LocaleLanguage.java
@@ -15,18 +15,41 @@ 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 {
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;
+ private final Map<String, String> d = Maps.newHashMap(); public Map<String, String> getStorage() { return this.d; } // Purpur - OBFHELPER
+ private long e; public long getLastUpdateTime() { return this.e; } public void setLastUpdateTime(int time) { this.e = time; } // Purpur - OBFHELPER
public LocaleLanguage() {
+ // Purpur start
+ reload(this);
+ }
+
+ 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 +83,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 +111,21 @@ public class LocaleLanguage {
public long b() {
return this.e;
}
+
+ // Purpur start
+ public static void reload(LocaleLanguage instance) {
+ instance.setLastUpdateTime(0);
+ instance.getStorage().clear();
+ instance.loadFromJar("/assets/minecraft/lang/en_us.json");
+ instance.loadFromFile("purpur.lang");
+ }
+
+ 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/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
index 7d983d9a54..36260e0ec8 100644
--- a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
+++ b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
@@ -1,5 +1,6 @@
package net.pl3x.purpur.command;
+import net.minecraft.server.LocaleLanguage;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.WorldServer;
import net.pl3x.purpur.PurpurConfig;
@@ -45,6 +46,8 @@ public class PurpurCommand extends Command {
Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues.");
Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
+ LocaleLanguage.reload(LocaleLanguage.getInstance());
+
MinecraftServer console = MinecraftServer.getServer();
PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
for (WorldServer world : console.getWorlds()) {
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