From 2e210288dea12e3d3fa2d41111bb22e256973c89 Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 29 Mar 2018 20:34:46 +1100 Subject: [PATCH] SPIGOT-3875: Book selectors not resolving --- nms-patches/ItemWrittenBook.patch | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 nms-patches/ItemWrittenBook.patch diff --git a/nms-patches/ItemWrittenBook.patch b/nms-patches/ItemWrittenBook.patch new file mode 100644 index 0000000000..3a4e476115 --- /dev/null +++ b/nms-patches/ItemWrittenBook.patch @@ -0,0 +1,34 @@ +--- a/net/minecraft/server/ItemWrittenBook.java ++++ b/net/minecraft/server/ItemWrittenBook.java +@@ -61,6 +61,23 @@ + + Object object; + ++ // CraftBukkit start ++ // Some commands use the worldserver variable but we leave it full of null values, ++ // so we must temporarily populate it with the world of the commandsender ++ WorldServer[] prev = MinecraftServer.getServer().worldServer; ++ MinecraftServer server = MinecraftServer.getServer(); ++ server.worldServer = new WorldServer[server.worlds.size()]; ++ server.worldServer[0] = (WorldServer) entityhuman.getWorld(); ++ int bpos = 0; ++ for (int pos = 1; pos < server.worldServer.length; pos++) { ++ WorldServer world = server.worlds.get(bpos++); ++ if (server.worldServer[0] == world) { ++ pos--; ++ continue; ++ } ++ server.worldServer[pos] = world; ++ } ++ // CraftBukkit end + try { + IChatBaseComponent ichatbasecomponent = IChatBaseComponent.ChatSerializer.b(s); + +@@ -68,6 +85,7 @@ + } catch (Exception exception) { + object = new ChatComponentText(s); + } ++ finally { MinecraftServer.getServer().worldServer = prev; } // CraftBukkit + + nbttaglist.a(i, new NBTTagString(IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) object))); + }