aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJedediah Smith <[email protected]>2016-02-16 19:55:21 -0600
committerZach Brown <[email protected]>2016-02-16 20:01:30 -0600
commitee63dbebdc440a4c9290ae641a60a8ab6361c775 (patch)
treeb4589943636ba9ba46abb545039d1eb08456f5f8
parent52398f034c89229a53ec4b6d3a7080f4db22bf7a (diff)
downloadPaper-ee63dbebdc440a4c9290ae641a60a8ab6361c775.tar.gz
Paper-ee63dbebdc440a4c9290ae641a60a8ab6361c775.zip
Player Tab List and Title APIs
-rw-r--r--Spigot-API-Patches/0020-Player-Tab-List-and-Title-APIs.patch103
-rw-r--r--Spigot-Server-Patches/0003-mc-dev-imports.patch150
-rw-r--r--Spigot-Server-Patches/0094-Player-Tab-List-and-Title-APIs.patch170
3 files changed, 422 insertions, 1 deletions
diff --git a/Spigot-API-Patches/0020-Player-Tab-List-and-Title-APIs.patch b/Spigot-API-Patches/0020-Player-Tab-List-and-Title-APIs.patch
new file mode 100644
index 0000000000..ba8797857b
--- /dev/null
+++ b/Spigot-API-Patches/0020-Player-Tab-List-and-Title-APIs.patch
@@ -0,0 +1,103 @@
+From 42577385d23a22d17b6f80787db0bf27f8e970d7 Mon Sep 17 00:00:00 2001
+From: Jedediah Smith <[email protected]>
+Date: Tue, 16 Feb 2016 19:51:11 -0600
+Subject: [PATCH] Player Tab List and Title APIs
+
+
+diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
+index 9ebfa47..78fd6dc 100644
+--- a/src/main/java/org/bukkit/entity/Player.java
++++ b/src/main/java/org/bukkit/entity/Player.java
+@@ -344,6 +344,78 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
+ * @param components the components to send
+ */
+ public void sendMessage(net.md_5.bungee.api.chat.BaseComponent... components);
++
++ /**
++ * Set the text displayed in the player list header and footer for this player
++ *
++ * @param header content for the top of the player list
++ * @param footer content for the bottom of the player list
++ */
++ public void setPlayerListHeaderFooter(net.md_5.bungee.api.chat.BaseComponent[] header, net.md_5.bungee.api.chat.BaseComponent[] footer);
++
++ /**
++ * Set the text displayed in the player list header and footer for this player
++ *
++ * @param header content for the top of the player list
++ * @param footer content for the bottom of the player list
++ */
++ public void setPlayerListHeaderFooter(net.md_5.bungee.api.chat.BaseComponent header, net.md_5.bungee.api.chat.BaseComponent footer);
++
++ /**
++ * Set the times for titles displayed to the player
++ *
++ * @param fadeInTicks ticks to fade-in
++ * @param stayTicks ticks to stay visible
++ * @param fadeOutTicks ticks to fade-out
++ */
++ public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks);
++
++ /**
++ * Set the subtitle of titles displayed to the player
++ */
++ public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent[] subtitle);
++
++ /**
++ * Set the subtitle of titles displayed to the player
++ */
++ public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent subtitle);
++
++ /**
++ * Show the given title to the player, along with the last subtitle set, using the last set times
++ */
++ public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title);
++
++ /**
++ * Show the given title to the player, along with the last subtitle set, using the last set times
++ */
++ public void showTitle(net.md_5.bungee.api.chat.BaseComponent title);
++
++ /**
++ * Show the given title and subtitle to the player using the given times
++ *
++ * @param title big text
++ * @param subtitle little text under it
++ * @param fadeInTicks ticks to fade-in
++ * @param stayTicks ticks to stay visible
++ * @param fadeOutTicks ticks to fade-out
++ */
++ public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title, net.md_5.bungee.api.chat.BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks);
++
++ /**
++ * Show the given title and subtitle to the player using the given times
++ *
++ * @param title big text
++ * @param subtitle little text under it
++ * @param fadeInTicks ticks to fade-in
++ * @param stayTicks ticks to stay visible
++ * @param fadeOutTicks ticks to fade-out
++ */
++ public void showTitle(net.md_5.bungee.api.chat.BaseComponent title, net.md_5.bungee.api.chat.BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks);
++
++ /**
++ * Hide any title that is currently visible to the player
++ */
++ public void hideTitle();
+ // Paper end
+
+ /**
+@@ -1086,9 +1158,8 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
+
+ /**
+ * Resets the title displayed to the player.
+- * @deprecated API subject to change.
+ */
+- @Deprecated
++ // Paper - Undeprecate
+ public void resetTitle();
+
+ // Spigot start
+--
+2.7.1
+
diff --git a/Spigot-Server-Patches/0003-mc-dev-imports.patch b/Spigot-Server-Patches/0003-mc-dev-imports.patch
index 513017954a..0bae8eccb9 100644
--- a/Spigot-Server-Patches/0003-mc-dev-imports.patch
+++ b/Spigot-Server-Patches/0003-mc-dev-imports.patch
@@ -1,4 +1,4 @@
-From cd3036746ad8fd0286f07c257fa2321f76ad610a Mon Sep 17 00:00:00 2001
+From e9f93a9efde92cdfd70b6d404621281f3761c519 Mon Sep 17 00:00:00 2001
From: Zach Brown <[email protected]>
Date: Mon, 25 May 2015 15:37:00 -0500
Subject: [PATCH] mc-dev imports
@@ -3557,6 +3557,154 @@ index 0000000..d5eaa24
+
+ protected abstract boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k);
+}
+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..1606d6d
+--- /dev/null
++++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
+@@ -0,0 +1,33 @@
++package net.minecraft.server;
++
++import java.io.IOException;
++
++public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListenerPlayOut> {
++
++ 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.d();
++ this.b = packetdataserializer.d();
++ }
++
++ public void b(PacketDataSerializer packetdataserializer) throws IOException {
++ packetdataserializer.a(this.a);
++ packetdataserializer.a(this.b);
++ }
++
++ public void a(PacketListenerPlayOut packetlistenerplayout) {
++ packetlistenerplayout.a(this);
++ }
++
++ public void a(PacketListener packetlistener) {
++ this.a((PacketListenerPlayOut) packetlistener);
++ }
++}
+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..2711298
+--- /dev/null
++++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
+@@ -0,0 +1,103 @@
++package net.minecraft.server;
++
++import java.io.IOException;
++
++public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
++
++ private EnumTitleAction a;
++ private IChatBaseComponent b;
++ private int c;
++ private int d;
++ private int e;
++
++ public PacketPlayOutTitle() {}
++
++ public PacketPlayOutTitle(EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) {
++ this(packetplayouttitle_enumtitleaction, ichatbasecomponent, -1, -1, -1);
++ }
++
++ public PacketPlayOutTitle(int i, int j, int k) {
++ this(EnumTitleAction.TIMES, (IChatBaseComponent) null, i, j, k);
++ }
++
++ public 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 = (EnumTitleAction) packetdataserializer.a(EnumTitleAction.class);
++ if (this.a == EnumTitleAction.TITLE || this.a == EnumTitleAction.SUBTITLE) {
++ this.b = packetdataserializer.d();
++ }
++
++ if (this.a == 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 == EnumTitleAction.TITLE || this.a == EnumTitleAction.SUBTITLE) {
++ packetdataserializer.a(this.b);
++ }
++
++ if (this.a == EnumTitleAction.TIMES) {
++ packetdataserializer.writeInt(this.c);
++ packetdataserializer.writeInt(this.d);
++ packetdataserializer.writeInt(this.e);
++ }
++
++ }
++
++ public void a(PacketListenerPlayOut packetlistenerplayout) {
++ packetlistenerplayout.a(this);
++ }
++
++ public void a(PacketListener packetlistener) {
++ this.a((PacketListenerPlayOut) packetlistener);
++ }
++
++ public static enum EnumTitleAction {
++
++ TITLE, SUBTITLE, TIMES, CLEAR, RESET;
++
++ private EnumTitleAction() {}
++
++ public static EnumTitleAction a(String s) {
++ EnumTitleAction[] apacketplayouttitle_enumtitleaction = values();
++ int i = apacketplayouttitle_enumtitleaction.length;
++
++ for (int j = 0; j < i; ++j) {
++ EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[j];
++
++ if (packetplayouttitle_enumtitleaction.name().equalsIgnoreCase(s)) {
++ return packetplayouttitle_enumtitleaction;
++ }
++ }
++
++ return EnumTitleAction.TITLE;
++ }
++
++ public static String[] a() {
++ String[] astring = new String[values().length];
++ int i = 0;
++ EnumTitleAction[] apacketplayouttitle_enumtitleaction = values();
++ int j = apacketplayouttitle_enumtitleaction.length;
++
++ for (int k = 0; k < j; ++k) {
++ EnumTitleAction packetplayouttitle_enumtitleaction = apacketplayouttitle_enumtitleaction[k];
++
++ astring[i++] = packetplayouttitle_enumtitleaction.name().toLowerCase();
++ }
++
++ return astring;
++ }
++ }
++}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
new file mode 100644
index 0000000..6014b09
diff --git a/Spigot-Server-Patches/0094-Player-Tab-List-and-Title-APIs.patch b/Spigot-Server-Patches/0094-Player-Tab-List-and-Title-APIs.patch
new file mode 100644
index 0000000000..c2a282b0fe
--- /dev/null
+++ b/Spigot-Server-Patches/0094-Player-Tab-List-and-Title-APIs.patch
@@ -0,0 +1,170 @@
+From c27a95f1caa97ff1b026429367c16abd20e46ed2 Mon Sep 17 00:00:00 2001
+From: Jedediah Smith <[email protected]>
+Date: Tue, 16 Feb 2016 19:45:55 -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 1606d6d..89a5056 100644
+--- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
++++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
+@@ -4,6 +4,8 @@ import java.io.IOException;
+
+ public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListenerPlayOut> {
+
++ public net.md_5.bungee.api.chat.BaseComponent[] header, footer; // Paper
++
+ private IChatBaseComponent a;
+ private IChatBaseComponent b;
+
+@@ -19,15 +21,22 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListene
+ }
+
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
+- packetdataserializer.a(this.a);
+- packetdataserializer.a(this.b);
++ // Paper start
++ if (this.header != null) {
++ packetdataserializer.a(net.md_5.bungee.chat.ComponentSerializer.toString(this.header));
++ } else {
++ packetdataserializer.a(this.a);
++ }
++
++ if (this.footer != null) {
++ packetdataserializer.a(net.md_5.bungee.chat.ComponentSerializer.toString(this.footer));
++ } else {
++ packetdataserializer.a(this.b);
++ }
++ // Paper end
+ }
+
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
+ packetlistenerplayout.a(this);
+ }
+-
+- public void a(PacketListener packetlistener) {
+- this.a((PacketListenerPlayOut) packetlistener);
+- }
+ }
+diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
+index 2711298..071215e 100644
+--- a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
++++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
+@@ -10,6 +10,18 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
+ 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(EnumTitleAction packetplayouttitle_enumtitleaction, IChatBaseComponent ichatbasecomponent) {
+@@ -45,7 +57,13 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
+ packetdataserializer.a((Enum) this.a);
+ if (this.a == EnumTitleAction.TITLE || this.a == 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 == EnumTitleAction.TIMES) {
+@@ -60,10 +78,6 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
+ packetlistenerplayout.a(this);
+ }
+
+- public void a(PacketListener packetlistener) {
+- this.a((PacketListenerPlayOut) packetlistener);
+- }
+-
+ public static enum EnumTitleAction {
+
+ TITLE, SUBTITLE, TIMES, CLEAR, RESET;
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+index dba0520..cabef35 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+@@ -176,6 +176,65 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+ packet.components = components;
+ getHandle().playerConnection.sendPacket(packet);
+ }
++
++ @Override
++ public void setPlayerListHeaderFooter(BaseComponent[] header, BaseComponent[] footer) {
++ PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
++ packet.header = header;
++ packet.footer = footer;
++ getHandle().playerConnection.sendPacket(packet);
++ }
++
++ @Override
++ public void setPlayerListHeaderFooter(BaseComponent header, BaseComponent footer) {
++ this.setPlayerListHeaderFooter(header == null ? null : new BaseComponent[]{header},
++ footer == null ? null : new BaseComponent[]{footer});
++ }
++
++
++ @Override
++ public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks) {
++ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TIMES, (BaseComponent[]) null, fadeInTicks, stayTicks, fadeOutTicks));
++ }
++
++ @Override
++ public void setSubtitle(BaseComponent[] subtitle) {
++ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, subtitle, 0, 0, 0));
++ }
++
++ @Override
++ public void setSubtitle(BaseComponent subtitle) {
++ setSubtitle(new BaseComponent[]{subtitle});
++ }
++
++ @Override
++ public void showTitle(BaseComponent[] title) {
++ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, title, 0, 0, 0));
++ }
++
++ @Override
++ public void showTitle(BaseComponent title) {
++ showTitle(new BaseComponent[]{title});
++ }
++
++ @Override
++ public void showTitle(BaseComponent[] title, BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
++ setTitleTimes(fadeInTicks, stayTicks, fadeOutTicks);
++ setSubtitle(subtitle);
++ showTitle(title);
++ }
++
++ @Override
++ public void showTitle(BaseComponent title, BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
++ setTitleTimes(fadeInTicks, stayTicks, fadeOutTicks);
++ setSubtitle(subtitle);
++ showTitle(title);
++ }
++
++ @Override
++ public void hideTitle() {
++ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.CLEAR, (BaseComponent[]) null, 0, 0, 0));
++ }
+ // Paper end
+
+ @Override
+--
+2.7.1
+