Return null if we get a ParseException in IChatBaseComponent
Fixes GH-1471, GH-1474 As a result, data that no longer parses correctly will not crash the server instead just logging the exception and continuing (and in most cases should fix the data) Player data is fixed pretty much immediately but some block data (like Shulkers) may need to be modified in-game in order for it to re-save properly No more crashing though.
This commit is contained in:
parent
042e018bb1
commit
e62f3ae259
1 changed files with 41 additions and 0 deletions
|
@ -0,0 +1,41 @@
|
|||
From a0d5ac4f248c2c822d9a070ce284d684cf0eccf6 Mon Sep 17 00:00:00 2001
|
||||
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||
Date: Sat, 22 Sep 2018 15:56:59 -0400
|
||||
Subject: [PATCH] Return null if we get a ParseException in IChatBaseComponent
|
||||
|
||||
This is allowed as the method is explicitly marked as nullable and is
|
||||
preferable to returning an empty string in this instance.
|
||||
|
||||
As a result, data that no longer parses correctly will not crash the server
|
||||
instead just logging the exception and continuing (and in most cases should
|
||||
fix the data)
|
||||
|
||||
Player data is fixed pretty much immediately but some block data (like
|
||||
Shulkers) may need to be changed in order for it to re-save properly
|
||||
|
||||
No more crashing though.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/IChatBaseComponent.java b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||
index ff14b3e09..03c148f4f 100644
|
||||
--- a/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||
+++ b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
||||
@@ -357,7 +357,15 @@ public interface IChatBaseComponent extends Message, Iterable<IChatBaseComponent
|
||||
@Nullable public static IChatBaseComponent jsonToComponent(String json) { return a(json);} // Paper - OBFHELPER
|
||||
@Nullable
|
||||
public static IChatBaseComponent a(String s) {
|
||||
- return (IChatBaseComponent)ChatDeserializer.a(a, s, IChatBaseComponent.class, false);
|
||||
+ // Paper start - Catch parse exception and return null
|
||||
+ try {
|
||||
+ return (IChatBaseComponent)ChatDeserializer.a(a, s, IChatBaseComponent.class, false);
|
||||
+ } catch (JsonParseException ex) {
|
||||
+ org.bukkit.Bukkit.getLogger().severe("Unable to deserialize component: " + s);
|
||||
+ ex.printStackTrace();
|
||||
+ return null;
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
@Nullable
|
||||
--
|
||||
2.19.0
|
||||
|
Loading…
Reference in a new issue