From 6c16a295b57588162aa0282df7e8b73a44b25b22 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Wed, 23 Mar 2016 01:05:09 -0500 Subject: [PATCH] Clean up title and tab list patch Remember kids, the Ballmer peak is hard to hit https://xkcd.com/323/ Finally fixes #126 and #94 (I tested, it does, please, really, promise) --- .../0003-mc-dev-imports.patch | 294 ++++++++-------- ...ck-and-TNTPrimed-source-location-API.patch | 12 +- .../0069-Player-Tab-List-and-Title-APIs.patch | 313 ++++++------------ .../0101-Optimize-Chunk-Unload-Queue.patch | 8 +- 4 files changed, 262 insertions(+), 365 deletions(-) diff --git a/Spigot-Server-Patches/0003-mc-dev-imports.patch b/Spigot-Server-Patches/0003-mc-dev-imports.patch index 163a19ea3..5c111ca97 100644 --- a/Spigot-Server-Patches/0003-mc-dev-imports.patch +++ b/Spigot-Server-Patches/0003-mc-dev-imports.patch @@ -1,4 +1,4 @@ -From 175bf165592619de67980426a5dd8cfbc629d194 Mon Sep 17 00:00:00 2001 +From 98d8a98bd712d19cfaaf81e9facc1979ca9b86cb Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Mon, 29 Feb 2016 21:09:10 -0600 Subject: [PATCH] mc-dev imports @@ -5037,6 +5037,151 @@ index 0000000..30ca225 + private EnumResourcePackStatus() {} + } +} +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +new file mode 100644 +index 0000000..e9c2a23 +--- /dev/null ++++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +@@ -0,0 +1,34 @@ ++package net.minecraft.server; ++ ++import net.minecraft.server.IChatBaseComponent; ++import net.minecraft.server.Packet; ++import net.minecraft.server.PacketDataSerializer; ++import net.minecraft.server.PacketListenerPlayOut; ++ ++import java.io.IOException; ++ ++public class PacketPlayOutPlayerListHeaderFooter implements Packet { ++ ++ private IChatBaseComponent a; ++ private IChatBaseComponent b; ++ ++ public PacketPlayOutPlayerListHeaderFooter() {} ++ ++ public PacketPlayOutPlayerListHeaderFooter(IChatBaseComponent ichatbasecomponent) { ++ this.a = ichatbasecomponent; ++ } ++ ++ public void a(PacketDataSerializer packetdataserializer) throws IOException { ++ this.a = packetdataserializer.f(); ++ this.b = packetdataserializer.f(); ++ } ++ ++ public void b(PacketDataSerializer packetdataserializer) throws IOException { ++ packetdataserializer.a(this.a); ++ packetdataserializer.a(this.b); ++ } ++ ++ public void a(PacketListenerPlayOut packetlistenerplayout) { ++ packetlistenerplayout.a(this); ++ } ++} +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java +new file mode 100644 +index 0000000..2286c9e +--- /dev/null ++++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java +@@ -0,0 +1,99 @@ ++package net.minecraft.server; ++ ++import java.io.IOException; ++ ++public class PacketPlayOutTitle implements Packet { ++ ++ private PacketPlayOutTitle.EnumTitleAction a; ++ private IChatBaseComponent b; ++ private int c; ++ private int d; ++ private int e; ++ ++ public PacketPlayOutTitle() {} ++ ++ public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) { ++ this(packetplayouttitle_enumtitleaction, ichatbasecomponent, -1, -1, -1); ++ } ++ ++ public PacketPlayOutTitle(int i, int j, int k) { ++ this(PacketPlayOutTitle.EnumTitleAction.TIMES, (IChatBaseComponent) null, i, j, k); ++ } ++ ++ public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent, int i, int j, int k) { ++ this.a = packetplayouttitle_enumtitleaction; ++ this.b = ichatbasecomponent; ++ this.c = i; ++ this.d = j; ++ this.e = k; ++ } ++ ++ public void a(PacketDataSerializer packetdataserializer) throws IOException { ++ this.a = (PacketPlayOutTitle.EnumTitleAction) packetdataserializer.a(PacketPlayOutTitle.EnumTitleAction.class); ++ if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { ++ this.b = packetdataserializer.f(); ++ } ++ ++ if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { ++ this.c = packetdataserializer.readInt(); ++ this.d = packetdataserializer.readInt(); ++ this.e = packetdataserializer.readInt(); ++ } ++ ++ } ++ ++ public void b(PacketDataSerializer packetdataserializer) throws IOException { ++ packetdataserializer.a((Enum) this.a); ++ if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { ++ packetdataserializer.a(this.b); ++ } ++ ++ if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { ++ packetdataserializer.writeInt(this.c); ++ packetdataserializer.writeInt(this.d); ++ packetdataserializer.writeInt(this.e); ++ } ++ ++ } ++ ++ public void a(PacketListenerPlayOut packetlistenerplayout) { ++ packetlistenerplayout.a(this); ++ } ++ ++ public static enum EnumTitleAction { ++ ++ TITLE, SUBTITLE, TIMES, CLEAR, RESET; ++ ++ private EnumTitleAction() {} ++ ++ public static PacketPlayOutTitle.EnumTitleAction a(String s) { ++ PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); ++ int i = apacketplayouttitle_enumtitleaction.length; ++ ++ for (int j = 0; j < i; ++j) { ++ PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[j]; ++ ++ if (packetplayouttitle_enumtitleaction.name().equalsIgnoreCase(s)) { ++ return packetplayouttitle_enumtitleaction; ++ } ++ } ++ ++ return PacketPlayOutTitle.EnumTitleAction.TITLE; ++ } ++ ++ public static String[] a() { ++ String[] astring = new String[values().length]; ++ int i = 0; ++ PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); ++ int j = apacketplayouttitle_enumtitleaction.length; ++ ++ for (int k = 0; k < j; ++k) { ++ PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[k]; ++ ++ astring[i++] = packetplayouttitle_enumtitleaction.name().toLowerCase(); ++ } ++ ++ return astring; ++ } ++ } ++} diff --git a/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java b/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java new file mode 100644 index 0000000..c5c3f40 @@ -5474,151 +5619,6 @@ index 0000000..e454622 + return this.world.getTileEntity(this.position) != this ? false : entityhuman.e((double) this.position.getX() + 0.5D, (double) this.position.getY() + 0.5D, (double) this.position.getZ() + 0.5D) <= 64.0D; + } +} -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java -new file mode 100644 -index 0000000..842db1d ---- /dev/null -+++ b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java -@@ -0,0 +1,34 @@ -+package org.bukkit.craftbukkit.entity; -+ -+import net.minecraft.server.IChatBaseComponent; -+import net.minecraft.server.Packet; -+import net.minecraft.server.PacketDataSerializer; -+import net.minecraft.server.PacketListenerPlayOut; -+ -+import java.io.IOException; -+ -+public class PacketPlayOutPlayerListHeaderFooter implements Packet { -+ -+ private IChatBaseComponent a; -+ private IChatBaseComponent b; -+ -+ public PacketPlayOutPlayerListHeaderFooter() {} -+ -+ public PacketPlayOutPlayerListHeaderFooter(IChatBaseComponent ichatbasecomponent) { -+ this.a = ichatbasecomponent; -+ } -+ -+ public void a(PacketDataSerializer packetdataserializer) throws IOException { -+ this.a = packetdataserializer.f(); -+ this.b = packetdataserializer.f(); -+ } -+ -+ public void b(PacketDataSerializer packetdataserializer) throws IOException { -+ packetdataserializer.a(this.a); -+ packetdataserializer.a(this.b); -+ } -+ -+ public void a(PacketListenerPlayOut packetlistenerplayout) { -+ packetlistenerplayout.a(this); -+ } -+} -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutTitle.java b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutTitle.java -new file mode 100644 -index 0000000..2286c9e ---- /dev/null -+++ b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutTitle.java -@@ -0,0 +1,99 @@ -+package net.minecraft.server; -+ -+import java.io.IOException; -+ -+public class PacketPlayOutTitle implements Packet { -+ -+ private PacketPlayOutTitle.EnumTitleAction a; -+ private IChatBaseComponent b; -+ private int c; -+ private int d; -+ private int e; -+ -+ public PacketPlayOutTitle() {} -+ -+ public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) { -+ this(packetplayouttitle_enumtitleaction, ichatbasecomponent, -1, -1, -1); -+ } -+ -+ public PacketPlayOutTitle(int i, int j, int k) { -+ this(PacketPlayOutTitle.EnumTitleAction.TIMES, (IChatBaseComponent) null, i, j, k); -+ } -+ -+ public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent, int i, int j, int k) { -+ this.a = packetplayouttitle_enumtitleaction; -+ this.b = ichatbasecomponent; -+ this.c = i; -+ this.d = j; -+ this.e = k; -+ } -+ -+ public void a(PacketDataSerializer packetdataserializer) throws IOException { -+ this.a = (PacketPlayOutTitle.EnumTitleAction) packetdataserializer.a(PacketPlayOutTitle.EnumTitleAction.class); -+ if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { -+ this.b = packetdataserializer.f(); -+ } -+ -+ if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { -+ this.c = packetdataserializer.readInt(); -+ this.d = packetdataserializer.readInt(); -+ this.e = packetdataserializer.readInt(); -+ } -+ -+ } -+ -+ public void b(PacketDataSerializer packetdataserializer) throws IOException { -+ packetdataserializer.a((Enum) this.a); -+ if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { -+ packetdataserializer.a(this.b); -+ } -+ -+ if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { -+ packetdataserializer.writeInt(this.c); -+ packetdataserializer.writeInt(this.d); -+ packetdataserializer.writeInt(this.e); -+ } -+ -+ } -+ -+ public void a(PacketListenerPlayOut packetlistenerplayout) { -+ packetlistenerplayout.a(this); -+ } -+ -+ public static enum EnumTitleAction { -+ -+ TITLE, SUBTITLE, TIMES, CLEAR, RESET; -+ -+ private EnumTitleAction() {} -+ -+ public static PacketPlayOutTitle.EnumTitleAction a(String s) { -+ PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); -+ int i = apacketplayouttitle_enumtitleaction.length; -+ -+ for (int j = 0; j < i; ++j) { -+ PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[j]; -+ -+ if (packetplayouttitle_enumtitleaction.name().equalsIgnoreCase(s)) { -+ return packetplayouttitle_enumtitleaction; -+ } -+ } -+ -+ return PacketPlayOutTitle.EnumTitleAction.TITLE; -+ } -+ -+ public static String[] a() { -+ String[] astring = new String[values().length]; -+ int i = 0; -+ PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); -+ int j = apacketplayouttitle_enumtitleaction.length; -+ -+ for (int k = 0; k < j; ++k) { -+ PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[k]; -+ -+ astring[i++] = packetplayouttitle_enumtitleaction.name().toLowerCase(); -+ } -+ -+ return astring; -+ } -+ } -+} -- -2.7.4 +2.7.4.windows.1 diff --git a/Spigot-Server-Patches/0024-FallingBlock-and-TNTPrimed-source-location-API.patch b/Spigot-Server-Patches/0024-FallingBlock-and-TNTPrimed-source-location-API.patch index 948a2ddfc..f7d17da13 100644 --- a/Spigot-Server-Patches/0024-FallingBlock-and-TNTPrimed-source-location-API.patch +++ b/Spigot-Server-Patches/0024-FallingBlock-and-TNTPrimed-source-location-API.patch @@ -1,4 +1,4 @@ -From 612db7f839d4b23bf5000cbf90370cbc8bebe158 Mon Sep 17 00:00:00 2001 +From af0bb23539f7b7fe93dc54d56c372f8c6e29ff84 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Tue, 1 Mar 2016 23:45:08 -0600 Subject: [PATCH] FallingBlock and TNTPrimed source location API @@ -193,10 +193,10 @@ index 564ea37..1820c7b 100644 public EntityLiving getSource() { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a487c2f..33c3428 100644 +index 83e3003..25edfb8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -916,7 +916,10 @@ public class CraftWorld implements World { +@@ -921,7 +921,10 @@ public class CraftWorld implements World { double y = location.getBlockY() + 0.5; double z = location.getBlockZ() + 0.5; @@ -208,7 +208,7 @@ index a487c2f..33c3428 100644 entity.ticksLived = 1; world.addEntity(entity, SpawnReason.CUSTOM); -@@ -952,7 +955,10 @@ public class CraftWorld implements World { +@@ -957,7 +960,10 @@ public class CraftWorld implements World { int type = CraftMagicNumbers.getId(blockData.getBlock()); int data = blockData.getBlock().toLegacyData(blockData); @@ -220,7 +220,7 @@ index a487c2f..33c3428 100644 } else if (Projectile.class.isAssignableFrom(clazz)) { if (Snowball.class.isAssignableFrom(clazz)) { entity = new EntitySnowball(world, x, y, z); -@@ -1157,7 +1163,8 @@ public class CraftWorld implements World { +@@ -1162,7 +1168,8 @@ public class CraftWorld implements World { throw new IllegalArgumentException("Cannot spawn hanging entity for " + clazz.getName() + " at " + location); } } else if (TNTPrimed.class.isAssignableFrom(clazz)) { @@ -263,5 +263,5 @@ index c493c9c..eea3238 100644 + // Paper end } -- -2.7.4 +2.7.4.windows.1 diff --git a/Spigot-Server-Patches/0069-Player-Tab-List-and-Title-APIs.patch b/Spigot-Server-Patches/0069-Player-Tab-List-and-Title-APIs.patch index 325280b45..11fcd2f5a 100644 --- a/Spigot-Server-Patches/0069-Player-Tab-List-and-Title-APIs.patch +++ b/Spigot-Server-Patches/0069-Player-Tab-List-and-Title-APIs.patch @@ -1,11 +1,113 @@ -From 6bc0cb76575e073281e081ed2e932a1c7ddede7f Mon Sep 17 00:00:00 2001 +From fb30bddc521a4f713e03a4b909e08c04088c9bdb Mon Sep 17 00:00:00 2001 From: Techcable Date: Thu, 3 Mar 2016 02:32:10 -0600 Subject: [PATCH] Player Tab List and Title APIs +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +index e9c2a23..3431b12 100644 +--- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java ++++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +@@ -1,14 +1,11 @@ + package net.minecraft.server; + +-import net.minecraft.server.IChatBaseComponent; +-import net.minecraft.server.Packet; +-import net.minecraft.server.PacketDataSerializer; +-import net.minecraft.server.PacketListenerPlayOut; +- + import java.io.IOException; + + public class PacketPlayOutPlayerListHeaderFooter implements Packet { + ++ public net.md_5.bungee.api.chat.BaseComponent[] header, footer; // Paper ++ + private IChatBaseComponent a; + private IChatBaseComponent b; + +@@ -19,8 +16,19 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet { + private int d; + private int e; + ++ // Paper start ++ public net.md_5.bungee.api.chat.BaseComponent[] components; ++ ++ public PacketPlayOutTitle(EnumTitleAction action, net.md_5.bungee.api.chat.BaseComponent[] components, int fadeIn, int stay, int fadeOut) { ++ this.a = action; ++ this.components = components; ++ this.c = fadeIn; ++ this.d = stay; ++ this.e = fadeOut; ++ } ++ // Paper end ++ + public PacketPlayOutTitle() {} + + public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) { +@@ -45,7 +57,13 @@ public class PacketPlayOutTitle implements Packet { + public void b(PacketDataSerializer packetdataserializer) throws IOException { + packetdataserializer.a((Enum) this.a); + if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { +- packetdataserializer.a(this.b); ++ // Paper start ++ if (this.components != null) { ++ packetdataserializer.a(net.md_5.bungee.chat.ComponentSerializer.toString(components)); ++ } else { ++ packetdataserializer.a(this.b); ++ } ++ // Paper end + } + + if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { +@@ -56,8 +74,9 @@ public class PacketPlayOutTitle implements Packet { + + } + ++ // Paper - Fix compile error + public void a(PacketListenerPlayOut packetlistenerplayout) { +- packetlistenerplayout.a(this); ++ packetlistenerplayout.a((IChatBaseComponent) this); + } + + public static enum EnumTitleAction { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 10bf160..70f3fcc 100644 +index 10bf160..f5afeeb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1,5 +1,6 @@ @@ -99,211 +201,6 @@ index 10bf160..70f3fcc 100644 // Paper end @Override -@@ -1342,19 +1420,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - @Override - public void sendTitle(String title, String subtitle) { - if (title != null) { -- PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(EnumTitleAction.TITLE, CraftChatMessage.fromString(title)[0]); -+ PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, CraftChatMessage.fromString(title)[0]); - getHandle().playerConnection.sendPacket(packetTitle); - } - - if (subtitle != null) { -- PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, CraftChatMessage.fromString(subtitle)[0]); -+ PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, CraftChatMessage.fromString(subtitle)[0]); - getHandle().playerConnection.sendPacket(packetSubtitle); - } - } - - @Override - public void resetTitle() { -- PacketPlayOutTitle packetReset = new PacketPlayOutTitle(EnumTitleAction.RESET, null); -+ PacketPlayOutTitle packetReset = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.RESET, null); - getHandle().playerConnection.sendPacket(packetReset); - } - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java -index 842db1d..2d1bc58 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/PacketPlayOutPlayerListHeaderFooter.java -@@ -9,6 +9,8 @@ import java.io.IOException; - - public class PacketPlayOutPlayerListHeaderFooter implements Packet { - -+ public net.md_5.bungee.api.chat.BaseComponent[] header, footer; // Paper -+ - private IChatBaseComponent a; - private IChatBaseComponent b; - -@@ -19,8 +21,19 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet { - -- private PacketPlayOutTitle.EnumTitleAction a; -+ private EnumTitleAction a; - private IChatBaseComponent b; - private int c; - private int d; - private int e; - -+ // Paper start -+ public net.md_5.bungee.api.chat.BaseComponent[] components; -+ -+ public PacketPlayOutTitle(EnumTitleAction action, net.md_5.bungee.api.chat.BaseComponent[] components, int fadeIn, int stay, int fadeOut) { -+ this.a = action; -+ this.components = components; -+ this.c = fadeIn; -+ this.d = stay; -+ this.e = fadeOut; -+ } -+ // Paper end -+ - public PacketPlayOutTitle() {} - -- public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) { -+ public PacketPlayOutTitle(EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) { - this(packetplayouttitle_enumtitleaction, ichatbasecomponent, -1, -1, -1); - } - - public PacketPlayOutTitle(int i, int j, int k) { -- this(PacketPlayOutTitle.EnumTitleAction.TIMES, (IChatBaseComponent) null, i, j, k); -+ this(EnumTitleAction.TIMES, (IChatBaseComponent) null, i, j, k); - } - -- public PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent, int i, int j, int k) { -+ public PacketPlayOutTitle(EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent, int i, int j, int k) { - this.a = packetplayouttitle_enumtitleaction; - this.b = ichatbasecomponent; - this.c = i; -@@ -29,12 +46,12 @@ public class PacketPlayOutTitle implements Packet { - } - - public void a(PacketDataSerializer packetdataserializer) throws IOException { -- this.a = (PacketPlayOutTitle.EnumTitleAction) packetdataserializer.a(PacketPlayOutTitle.EnumTitleAction.class); -- if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { -+ this.a = (EnumTitleAction) packetdataserializer.a(EnumTitleAction.class); -+ if (this.a == EnumTitleAction.TITLE || this.a == EnumTitleAction.SUBTITLE) { - this.b = packetdataserializer.f(); - } - -- if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { -+ if (this.a == EnumTitleAction.TIMES) { - this.c = packetdataserializer.readInt(); - this.d = packetdataserializer.readInt(); - this.e = packetdataserializer.readInt(); -@@ -44,11 +61,17 @@ public class PacketPlayOutTitle implements Packet { - - public void b(PacketDataSerializer packetdataserializer) throws IOException { - packetdataserializer.a((Enum) this.a); -- if (this.a == PacketPlayOutTitle.EnumTitleAction.TITLE || this.a == PacketPlayOutTitle.EnumTitleAction.SUBTITLE) { -- packetdataserializer.a(this.b); -+ if (this.a == EnumTitleAction.TITLE || this.a == EnumTitleAction.SUBTITLE) { -+ // Paper start -+ if (this.components != null) { -+ packetdataserializer.a(net.md_5.bungee.chat.ComponentSerializer.toString(components)); -+ } else { -+ packetdataserializer.a(this.b); -+ } -+ // Paper end - } - -- if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) { -+ if (this.a == EnumTitleAction.TIMES) { - packetdataserializer.writeInt(this.c); - packetdataserializer.writeInt(this.d); - packetdataserializer.writeInt(this.e); -@@ -56,8 +79,9 @@ public class PacketPlayOutTitle implements Packet { - - } - -+ // Paper - Fix compile error - public void a(PacketListenerPlayOut packetlistenerplayout) { -- packetlistenerplayout.a(this); -+ packetlistenerplayout.a((IChatBaseComponent) this); - } - - public static enum EnumTitleAction { -@@ -66,29 +90,29 @@ public class PacketPlayOutTitle implements Packet { - - private EnumTitleAction() {} - -- public static PacketPlayOutTitle.EnumTitleAction a(String s) { -- PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); -+ public static EnumTitleAction a(String s) { -+ EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); - int i = apacketplayouttitle_enumtitleaction.length; - - for (int j = 0; j < i; ++j) { -- PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[j]; -+ EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[j]; - - if (packetplayouttitle_enumtitleaction.name().equalsIgnoreCase(s)) { - return packetplayouttitle_enumtitleaction; - } - } - -- return PacketPlayOutTitle.EnumTitleAction.TITLE; -+ return EnumTitleAction.TITLE; - } - - public static String[] a() { - String[] astring = new String[values().length]; - int i = 0; -- PacketPlayOutTitle.EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); -+ EnumTitleAction[] apacketplayouttitle_enumtitleaction = values(); - int j = apacketplayouttitle_enumtitleaction.length; - - for (int k = 0; k < j; ++k) { -- PacketPlayOutTitle.EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[k]; -+ EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[k]; - - astring[i++] = packetplayouttitle_enumtitleaction.name().toLowerCase(); - } -- -2.7.2 +2.7.4.windows.1 diff --git a/Spigot-Server-Patches/0101-Optimize-Chunk-Unload-Queue.patch b/Spigot-Server-Patches/0101-Optimize-Chunk-Unload-Queue.patch index 14d020980..0b25225e7 100644 --- a/Spigot-Server-Patches/0101-Optimize-Chunk-Unload-Queue.patch +++ b/Spigot-Server-Patches/0101-Optimize-Chunk-Unload-Queue.patch @@ -1,4 +1,4 @@ -From a874e0b69442dee64c02b4600d6551283bc13f0c Mon Sep 17 00:00:00 2001 +From e6b943c7e0b18b2ce33fa12fe27c298e1a836c2e Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 18 Mar 2016 17:57:25 -0400 Subject: [PATCH] Optimize Chunk Unload Queue @@ -261,7 +261,7 @@ index a6c8e53..d8bd36c 100644 this.spigotConfig = new org.spigotmc.SpigotWorldConfig( worlddata.getName() ); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(worlddata.getName(), this.spigotConfig); // Paper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index be311cd..6307c19 100644 +index c51c74b..caa5e62 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -206,7 +206,7 @@ public class CraftWorld implements World { @@ -299,7 +299,7 @@ index be311cd..6307c19 100644 if (neighbor != null) { neighbor.setNeighborLoaded(-x, -z); chunk.setNeighborLoaded(x, z); -@@ -1538,7 +1539,7 @@ public class CraftWorld implements World { +@@ -1543,7 +1544,7 @@ public class CraftWorld implements World { } // Already unloading? @@ -348,5 +348,5 @@ index daed1db..e4af40c 100644 { isActive = false; -- -2.7.4 +2.7.4.windows.1