From 7a57f23710227ecb4d54df9e31d5b96a7fb31ef4 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sun, 23 Sep 2018 20:10:24 -0400 Subject: [PATCH 1/2] Make bad custom name resolution more specific Avoids interfering with other places in vanilla where these issues are tolerated and expected. --- ...arseException-in-Entity-and-TE-names.patch | 155 ++++++++++++++++++ ...e-get-a-ParseException-in-IChatBaseC.patch | 41 ----- 2 files changed, 155 insertions(+), 41 deletions(-) create mode 100644 Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch delete mode 100644 Spigot-Server-Patches/0381-Return-null-if-we-get-a-ParseException-in-IChatBaseC.patch diff --git a/Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch b/Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch new file mode 100644 index 000000000000..172fd22160d5 --- /dev/null +++ b/Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch @@ -0,0 +1,155 @@ +From 6ed05ed8dce0c0fda2374cd0f6e529bd1f7643da Mon Sep 17 00:00:00 2001 +From: Zach Brown +Date: Sat, 22 Sep 2018 15:56:59 -0400 +Subject: [PATCH] Catch JsonParseException in Entity and TE names + +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/CommandBlockListenerAbstract.java b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java +index 729859d13..2a1dffbf4 100644 +--- a/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java ++++ b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java +@@ -57,7 +57,7 @@ public abstract class CommandBlockListenerAbstract implements ICommandListener { + this.g = nbttagcompound.getString("Command"); + this.d = nbttagcompound.getInt("SuccessCount"); + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.h = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.h = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + if (nbttagcompound.hasKeyOfType("TrackOutput", 1)) { +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index f6c43bab4..8c2ce7006 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -1733,7 +1733,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + this.setPosition(this.locX, this.locY, this.locZ); + this.setYawPitch(this.yaw, this.pitch); + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.setCustomName(IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName"))); ++ this.setCustomName(MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound)); // Paper - Catch ParseException + } + + this.setCustomNameVisible(nbttagcompound.getBoolean("CustomNameVisible")); +diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java +index f7856897f..a50224734 100644 +--- a/src/main/java/net/minecraft/server/MCUtil.java ++++ b/src/main/java/net/minecraft/server/MCUtil.java +@@ -363,4 +363,16 @@ public final class MCUtil { + return null; + } + } ++ ++ @Nullable ++ public static IChatBaseComponent getBaseComponentFromNbt(String key, NBTTagCompound compound) { ++ IChatBaseComponent component = null; ++ try { ++ component = IChatBaseComponent.ChatSerializer.a(compound.getString("CustomName")); ++ } catch (com.google.gson.JsonParseException ignored) { ++ org.bukkit.Bukkit.getLogger().warning("Unable to load " + key + " from " + compound); ++ } ++ ++ return component; ++ } + } +diff --git a/src/main/java/net/minecraft/server/TileEntityBanner.java b/src/main/java/net/minecraft/server/TileEntityBanner.java +index b4fae0d30..364a9fa7a 100644 +--- a/src/main/java/net/minecraft/server/TileEntityBanner.java ++++ b/src/main/java/net/minecraft/server/TileEntityBanner.java +@@ -74,7 +74,7 @@ public class TileEntityBanner extends TileEntity implements INamableTileEntity { + public void load(NBTTagCompound nbttagcompound) { + super.load(nbttagcompound); + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.a = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.a = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + if (this.hasWorld()) { +diff --git a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java +index 480faa66e..f3ddb86d0 100644 +--- a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java ++++ b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java +@@ -236,7 +236,7 @@ public class TileEntityBrewingStand extends TileEntityContainer implements IWorl + ContainerUtil.b(nbttagcompound, this.items); + this.brewTime = nbttagcompound.getShort("BrewTime"); + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.k = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.k = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + this.fuelLevel = nbttagcompound.getByte("Fuel"); +diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java +index 7594c16e9..803793072 100644 +--- a/src/main/java/net/minecraft/server/TileEntityChest.java ++++ b/src/main/java/net/minecraft/server/TileEntityChest.java +@@ -83,7 +83,7 @@ public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITic + } + + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.i = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.i = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + } +diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java +index ddd2e0eb0..21bd156e9 100644 +--- a/src/main/java/net/minecraft/server/TileEntityDispenser.java ++++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java +@@ -107,7 +107,7 @@ public class TileEntityDispenser extends TileEntityLootable { + } + + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.i = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.i = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + } +diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java +index a537d35b7..f6bc6403f 100644 +--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java ++++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java +@@ -219,7 +219,7 @@ public class TileEntityFurnace extends TileEntityContainer implements IWorldInve + } + + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.l = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.l = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + // Paper start - cook speed API +diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java +index a8cf160fe..c56422170 100644 +--- a/src/main/java/net/minecraft/server/TileEntityHopper.java ++++ b/src/main/java/net/minecraft/server/TileEntityHopper.java +@@ -61,7 +61,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi + } + + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.setCustomName(IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName"))); ++ this.setCustomName(MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound)); // Paper - Catch ParseException + } + + this.f = nbttagcompound.getInt("TransferCooldown"); +diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java +index df9a30560..65a685452 100644 +--- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java ++++ b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java +@@ -254,7 +254,7 @@ public class TileEntityShulkerBox extends TileEntityLootable implements IWorldIn + } + + if (nbttagcompound.hasKeyOfType("CustomName", 8)) { +- this.i = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName")); ++ this.i = MCUtil.getBaseComponentFromNbt("CustomName", nbttagcompound); // Paper - Catch ParseException + } + + } +-- +2.19.0 + diff --git a/Spigot-Server-Patches/0381-Return-null-if-we-get-a-ParseException-in-IChatBaseC.patch b/Spigot-Server-Patches/0381-Return-null-if-we-get-a-ParseException-in-IChatBaseC.patch deleted file mode 100644 index f462f92552ed..000000000000 --- a/Spigot-Server-Patches/0381-Return-null-if-we-get-a-ParseException-in-IChatBaseC.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 691b112b9931b505d5acb88a4ccdf7e994f03677 Mon Sep 17 00:00:00 2001 -From: Zach Brown -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 Date: Sun, 23 Sep 2018 21:22:57 -0400 Subject: [PATCH 2/2] Updated Upstream (CraftBukkit/Spigot) Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: dcb43ef8 MC-136886: locate command loads chunks without needing to. Spigot Changes: f823ac54 Rebuild patches --- ...n-t-load-chunks-looking-for-features.patch | 23 ------------ ...Optimize-and-Fix-ExpiringMap-Issues.patch} | 2 +- ...t-furnace-cook-speed-multiplier-API.patch} | 2 +- ...0375-Support-Overriding-World-Seeds.patch} | 2 +- ...h => 0376-Optimize-Server-World-Map.patch} | 2 +- ....patch => 0377-PreSpawnerSpawnEvent.patch} | 2 +- ...5-Fix-Double-Chest-Conversion-Error.patch} | 2 +- ...79-Sync-Player-Position-to-Vehicles.patch} | 2 +- ...rseException-in-Entity-and-TE-names.patch} | 37 ++++++++++--------- ...tal-ASM-support-for-Java-11-plugins.patch} | 6 +-- work/CraftBukkit | 2 +- work/Spigot | 2 +- 12 files changed, 32 insertions(+), 52 deletions(-) delete mode 100644 Spigot-Server-Patches/0373-MC-136886-Don-t-load-chunks-looking-for-features.patch rename Spigot-Server-Patches/{0374-Optimize-and-Fix-ExpiringMap-Issues.patch => 0373-Optimize-and-Fix-ExpiringMap-Issues.patch} (99%) rename Spigot-Server-Patches/{0375-Implement-furnace-cook-speed-multiplier-API.patch => 0374-Implement-furnace-cook-speed-multiplier-API.patch} (98%) rename Spigot-Server-Patches/{0376-Support-Overriding-World-Seeds.patch => 0375-Support-Overriding-World-Seeds.patch} (98%) rename Spigot-Server-Patches/{0377-Optimize-Server-World-Map.patch => 0376-Optimize-Server-World-Map.patch} (99%) rename Spigot-Server-Patches/{0378-PreSpawnerSpawnEvent.patch => 0377-PreSpawnerSpawnEvent.patch} (96%) rename Spigot-Server-Patches/{0379-MC-134115-Fix-Double-Chest-Conversion-Error.patch => 0378-MC-134115-Fix-Double-Chest-Conversion-Error.patch} (98%) rename Spigot-Server-Patches/{0380-Sync-Player-Position-to-Vehicles.patch => 0379-Sync-Player-Position-to-Vehicles.patch} (96%) rename Spigot-Server-Patches/{0381-Catch-JsonParseException-in-Entity-and-TE-names.patch => 0380-Catch-JsonParseException-in-Entity-and-TE-names.patch} (89%) rename Spigot-Server-Patches/{0382-Enable-experimental-ASM-support-for-Java-11-plugins.patch => 0381-Enable-experimental-ASM-support-for-Java-11-plugins.patch} (93%) diff --git a/Spigot-Server-Patches/0373-MC-136886-Don-t-load-chunks-looking-for-features.patch b/Spigot-Server-Patches/0373-MC-136886-Don-t-load-chunks-looking-for-features.patch deleted file mode 100644 index 206c1b4f8d40..000000000000 --- a/Spigot-Server-Patches/0373-MC-136886-Don-t-load-chunks-looking-for-features.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 8fd95b755bd88dcd58ca5403dd85096747340421 Mon Sep 17 00:00:00 2001 -From: Aikar -Date: Thu, 13 Sep 2018 22:26:54 -0400 -Subject: [PATCH] MC-136886: Don't load chunks looking for features - -I'm sure a few servers have crashed due to this. - -diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java -index 6c2899e84d..075011748b 100644 ---- a/src/main/java/net/minecraft/server/StructureGenerator.java -+++ b/src/main/java/net/minecraft/server/StructureGenerator.java -@@ -205,7 +205,7 @@ public abstract class StructureGenerator - return structurestart; - } else { - ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i); -- IChunkAccess ichunkaccess = generatoraccess.getChunkProvider().a(chunkcoordintpair.x, chunkcoordintpair.z, false); -+ IChunkAccess ichunkaccess = generatoraccess.getChunkProvider().getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, false, false); // Paper - don't load chunks - - if (ichunkaccess != null) { - structurestart = ichunkaccess.a(this.a()); --- -2.19.0 - diff --git a/Spigot-Server-Patches/0374-Optimize-and-Fix-ExpiringMap-Issues.patch b/Spigot-Server-Patches/0373-Optimize-and-Fix-ExpiringMap-Issues.patch similarity index 99% rename from Spigot-Server-Patches/0374-Optimize-and-Fix-ExpiringMap-Issues.patch rename to Spigot-Server-Patches/0373-Optimize-and-Fix-ExpiringMap-Issues.patch index d442e74302f6..f2b4cd7e839f 100644 --- a/Spigot-Server-Patches/0374-Optimize-and-Fix-ExpiringMap-Issues.patch +++ b/Spigot-Server-Patches/0373-Optimize-and-Fix-ExpiringMap-Issues.patch @@ -1,4 +1,4 @@ -From 4b72c68d1947dece956e521879a05cc2e1fc17aa Mon Sep 17 00:00:00 2001 +From ab368bfa90e92982355649962a5335f8eafbf888 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 16 Sep 2018 00:00:16 -0400 Subject: [PATCH] Optimize and Fix ExpiringMap Issues diff --git a/Spigot-Server-Patches/0375-Implement-furnace-cook-speed-multiplier-API.patch b/Spigot-Server-Patches/0374-Implement-furnace-cook-speed-multiplier-API.patch similarity index 98% rename from Spigot-Server-Patches/0375-Implement-furnace-cook-speed-multiplier-API.patch rename to Spigot-Server-Patches/0374-Implement-furnace-cook-speed-multiplier-API.patch index d6642dd2cfe2..ef9120c90717 100644 --- a/Spigot-Server-Patches/0375-Implement-furnace-cook-speed-multiplier-API.patch +++ b/Spigot-Server-Patches/0374-Implement-furnace-cook-speed-multiplier-API.patch @@ -1,4 +1,4 @@ -From 9cd4fe1400c656db6b44b26d2e883c1a7e3c75ed Mon Sep 17 00:00:00 2001 +From eeb87a40d0b37892c9f4993e201a0823cb06bbcf Mon Sep 17 00:00:00 2001 From: Tassu Date: Thu, 13 Sep 2018 08:45:21 +0300 Subject: [PATCH] Implement furnace cook speed multiplier API diff --git a/Spigot-Server-Patches/0376-Support-Overriding-World-Seeds.patch b/Spigot-Server-Patches/0375-Support-Overriding-World-Seeds.patch similarity index 98% rename from Spigot-Server-Patches/0376-Support-Overriding-World-Seeds.patch rename to Spigot-Server-Patches/0375-Support-Overriding-World-Seeds.patch index bb7896e2700a..69472b8c3715 100644 --- a/Spigot-Server-Patches/0376-Support-Overriding-World-Seeds.patch +++ b/Spigot-Server-Patches/0375-Support-Overriding-World-Seeds.patch @@ -1,4 +1,4 @@ -From a79d0cd5a53147b050963a5b5ed4bd51adda55f5 Mon Sep 17 00:00:00 2001 +From f306b49af3cc10856ea04fe8f277a986ea90f91f Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 17 Sep 2018 23:05:31 -0400 Subject: [PATCH] Support Overriding World Seeds diff --git a/Spigot-Server-Patches/0377-Optimize-Server-World-Map.patch b/Spigot-Server-Patches/0376-Optimize-Server-World-Map.patch similarity index 99% rename from Spigot-Server-Patches/0377-Optimize-Server-World-Map.patch rename to Spigot-Server-Patches/0376-Optimize-Server-World-Map.patch index c4939fd98dea..fff2ce34863e 100644 --- a/Spigot-Server-Patches/0377-Optimize-Server-World-Map.patch +++ b/Spigot-Server-Patches/0376-Optimize-Server-World-Map.patch @@ -1,4 +1,4 @@ -From 7547c08ec67686b4a45d51394f519f6e62274ebb Mon Sep 17 00:00:00 2001 +From 4be2d5f3cc7878ce06c25cc338534301f90b04b5 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 17 Sep 2018 23:37:31 -0400 Subject: [PATCH] Optimize Server World Map diff --git a/Spigot-Server-Patches/0378-PreSpawnerSpawnEvent.patch b/Spigot-Server-Patches/0377-PreSpawnerSpawnEvent.patch similarity index 96% rename from Spigot-Server-Patches/0378-PreSpawnerSpawnEvent.patch rename to Spigot-Server-Patches/0377-PreSpawnerSpawnEvent.patch index f093ff729618..3fbdeedeb966 100644 --- a/Spigot-Server-Patches/0378-PreSpawnerSpawnEvent.patch +++ b/Spigot-Server-Patches/0377-PreSpawnerSpawnEvent.patch @@ -1,4 +1,4 @@ -From c577bdb2c893529009c611e2e73c668b17c74f11 Mon Sep 17 00:00:00 2001 +From 2192d9c353bda9068f63fae9378252d923448cba Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Tue, 18 Sep 2018 23:53:23 +0100 Subject: [PATCH] PreSpawnerSpawnEvent diff --git a/Spigot-Server-Patches/0379-MC-134115-Fix-Double-Chest-Conversion-Error.patch b/Spigot-Server-Patches/0378-MC-134115-Fix-Double-Chest-Conversion-Error.patch similarity index 98% rename from Spigot-Server-Patches/0379-MC-134115-Fix-Double-Chest-Conversion-Error.patch rename to Spigot-Server-Patches/0378-MC-134115-Fix-Double-Chest-Conversion-Error.patch index f9860f54f130..eb83f52309f7 100644 --- a/Spigot-Server-Patches/0379-MC-134115-Fix-Double-Chest-Conversion-Error.patch +++ b/Spigot-Server-Patches/0378-MC-134115-Fix-Double-Chest-Conversion-Error.patch @@ -1,4 +1,4 @@ -From 4f2b4578fee42ea0b9cf659046e0a2e65e9ff6a0 Mon Sep 17 00:00:00 2001 +From 4ecf9eb0078780da3857ed41555a799445b85abb Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 20 Sep 2018 19:11:33 -0400 Subject: [PATCH] MC-134115: Fix Double Chest Conversion Error diff --git a/Spigot-Server-Patches/0380-Sync-Player-Position-to-Vehicles.patch b/Spigot-Server-Patches/0379-Sync-Player-Position-to-Vehicles.patch similarity index 96% rename from Spigot-Server-Patches/0380-Sync-Player-Position-to-Vehicles.patch rename to Spigot-Server-Patches/0379-Sync-Player-Position-to-Vehicles.patch index 85269ffb0159..cdfdb5d407f3 100644 --- a/Spigot-Server-Patches/0380-Sync-Player-Position-to-Vehicles.patch +++ b/Spigot-Server-Patches/0379-Sync-Player-Position-to-Vehicles.patch @@ -1,4 +1,4 @@ -From fa5b6152426b80eafe26fabee4a477bea89afd27 Mon Sep 17 00:00:00 2001 +From 192a5b761d782ec3576db72ceb19416670fa8b57 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 21 Sep 2018 11:34:00 -0400 Subject: [PATCH] Sync Player Position to Vehicles diff --git a/Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch b/Spigot-Server-Patches/0380-Catch-JsonParseException-in-Entity-and-TE-names.patch similarity index 89% rename from Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch rename to Spigot-Server-Patches/0380-Catch-JsonParseException-in-Entity-and-TE-names.patch index 172fd22160d5..41a5f82f30a3 100644 --- a/Spigot-Server-Patches/0381-Catch-JsonParseException-in-Entity-and-TE-names.patch +++ b/Spigot-Server-Patches/0380-Catch-JsonParseException-in-Entity-and-TE-names.patch @@ -1,4 +1,4 @@ -From 6ed05ed8dce0c0fda2374cd0f6e529bd1f7643da Mon Sep 17 00:00:00 2001 +From fb750f7e99c0c9d56b594609f9f61e6fb6d38216 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sat, 22 Sep 2018 15:56:59 -0400 Subject: [PATCH] Catch JsonParseException in Entity and TE names @@ -13,7 +13,7 @@ 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/CommandBlockListenerAbstract.java b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java -index 729859d13..2a1dffbf4 100644 +index 729859d132..2a1dffbf48 100644 --- a/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java +++ b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java @@ -57,7 +57,7 @@ public abstract class CommandBlockListenerAbstract implements ICommandListener { @@ -26,7 +26,7 @@ index 729859d13..2a1dffbf4 100644 if (nbttagcompound.hasKeyOfType("TrackOutput", 1)) { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index f6c43bab4..8c2ce7006 100644 +index f6c43bab46..8c2ce70060 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1733,7 +1733,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -39,28 +39,31 @@ index f6c43bab4..8c2ce7006 100644 this.setCustomNameVisible(nbttagcompound.getBoolean("CustomNameVisible")); diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index f7856897f..a50224734 100644 +index f7856897f6..e11f439ff1 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java +++ b/src/main/java/net/minecraft/server/MCUtil.java -@@ -363,4 +363,16 @@ public final class MCUtil { +@@ -363,4 +363,19 @@ public final class MCUtil { return null; } } + + @Nullable + public static IChatBaseComponent getBaseComponentFromNbt(String key, NBTTagCompound compound) { -+ IChatBaseComponent component = null; ++ if (!compound.hasKey(key)) { ++ return null; ++ } ++ String string = compound.getString(key); + try { -+ component = IChatBaseComponent.ChatSerializer.a(compound.getString("CustomName")); -+ } catch (com.google.gson.JsonParseException ignored) { -+ org.bukkit.Bukkit.getLogger().warning("Unable to load " + key + " from " + compound); ++ return IChatBaseComponent.ChatSerializer.jsonToComponent(string); ++ } catch (com.google.gson.JsonParseException e) { ++ org.bukkit.Bukkit.getLogger().warning("Unable to parse " + key + " from " + compound +": " + e.getMessage()); + } + -+ return component; ++ return null; + } } diff --git a/src/main/java/net/minecraft/server/TileEntityBanner.java b/src/main/java/net/minecraft/server/TileEntityBanner.java -index b4fae0d30..364a9fa7a 100644 +index b4fae0d307..364a9fa7a9 100644 --- a/src/main/java/net/minecraft/server/TileEntityBanner.java +++ b/src/main/java/net/minecraft/server/TileEntityBanner.java @@ -74,7 +74,7 @@ public class TileEntityBanner extends TileEntity implements INamableTileEntity { @@ -73,7 +76,7 @@ index b4fae0d30..364a9fa7a 100644 if (this.hasWorld()) { diff --git a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java -index 480faa66e..f3ddb86d0 100644 +index 480faa66e4..f3ddb86d04 100644 --- a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java +++ b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java @@ -236,7 +236,7 @@ public class TileEntityBrewingStand extends TileEntityContainer implements IWorl @@ -86,7 +89,7 @@ index 480faa66e..f3ddb86d0 100644 this.fuelLevel = nbttagcompound.getByte("Fuel"); diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java -index 7594c16e9..803793072 100644 +index 7594c16e99..8037930727 100644 --- a/src/main/java/net/minecraft/server/TileEntityChest.java +++ b/src/main/java/net/minecraft/server/TileEntityChest.java @@ -83,7 +83,7 @@ public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITic @@ -99,7 +102,7 @@ index 7594c16e9..803793072 100644 } diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java -index ddd2e0eb0..21bd156e9 100644 +index ddd2e0eb0b..21bd156e91 100644 --- a/src/main/java/net/minecraft/server/TileEntityDispenser.java +++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java @@ -107,7 +107,7 @@ public class TileEntityDispenser extends TileEntityLootable { @@ -112,7 +115,7 @@ index ddd2e0eb0..21bd156e9 100644 } diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java -index a537d35b7..f6bc6403f 100644 +index a537d35b73..f6bc6403fb 100644 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java @@ -219,7 +219,7 @@ public class TileEntityFurnace extends TileEntityContainer implements IWorldInve @@ -125,7 +128,7 @@ index a537d35b7..f6bc6403f 100644 // Paper start - cook speed API diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index a8cf160fe..c56422170 100644 +index a8cf160fe4..c56422170c 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java @@ -61,7 +61,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi @@ -138,7 +141,7 @@ index a8cf160fe..c56422170 100644 this.f = nbttagcompound.getInt("TransferCooldown"); diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -index df9a30560..65a685452 100644 +index df9a30560c..65a6854521 100644 --- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java +++ b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java @@ -254,7 +254,7 @@ public class TileEntityShulkerBox extends TileEntityLootable implements IWorldIn diff --git a/Spigot-Server-Patches/0382-Enable-experimental-ASM-support-for-Java-11-plugins.patch b/Spigot-Server-Patches/0381-Enable-experimental-ASM-support-for-Java-11-plugins.patch similarity index 93% rename from Spigot-Server-Patches/0382-Enable-experimental-ASM-support-for-Java-11-plugins.patch rename to Spigot-Server-Patches/0381-Enable-experimental-ASM-support-for-Java-11-plugins.patch index 360c84702571..4a38446a8db4 100644 --- a/Spigot-Server-Patches/0382-Enable-experimental-ASM-support-for-Java-11-plugins.patch +++ b/Spigot-Server-Patches/0381-Enable-experimental-ASM-support-for-Java-11-plugins.patch @@ -1,4 +1,4 @@ -From 09b0529f9a30a17ba7c288f1ea973300b8f4e84f Mon Sep 17 00:00:00 2001 +From e60758f4757a625ff2226db56c8c46b185fbbd77 Mon Sep 17 00:00:00 2001 From: Kyle Wood Date: Sun, 23 Sep 2018 12:52:21 -0500 Subject: [PATCH] Enable experimental ASM support for Java 11 plugins @@ -16,7 +16,7 @@ experimental API when required, so we check the class version first. This should be removed as soon as ASM API 7 is stable. diff --git a/pom.xml b/pom.xml -index 1e7d2b550..6d8b27e92 100644 +index 1e7d2b5506..6d8b27e927 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,7 @@ @@ -29,7 +29,7 @@ index 1e7d2b550..6d8b27e92 100644 diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index d172a1aeb..7f2a73d6f 100644 +index d172a1aebc..7f2a73d6f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java @@ -127,7 +127,16 @@ public class Commodore diff --git a/work/CraftBukkit b/work/CraftBukkit index 7d506c6cd759..dcb43ef83dd0 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 7d506c6cd759646477e4d8dc8353b995d36aaa8c +Subproject commit dcb43ef83dd0dc8b26e9923eaeed82b659ab5780 diff --git a/work/Spigot b/work/Spigot index 68acb93f56e6..f823ac54b178 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 68acb93f56e6737f20a870264bd3e2c44efeed76 +Subproject commit f823ac54b178bd043f126507996ba57ca38f0ecf