summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nms-patches/PacketPlayOutPlayerListHeaderFooter.patch13
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java43
2 files changed, 56 insertions, 0 deletions
diff --git a/nms-patches/PacketPlayOutPlayerListHeaderFooter.patch b/nms-patches/PacketPlayOutPlayerListHeaderFooter.patch
new file mode 100644
index 00000000..f3857ef6
--- /dev/null
+++ b/nms-patches/PacketPlayOutPlayerListHeaderFooter.patch
@@ -0,0 +1,13 @@
+--- a/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
++++ b/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
+@@ -4,8 +4,8 @@
+
+ public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListenerPlayOut> {
+
+- private IChatBaseComponent a;
+- private IChatBaseComponent b;
++ public IChatBaseComponent a; // PAIL
++ public IChatBaseComponent b; // PAIL
+
+ public PacketPlayOutPlayerListHeaderFooter() {}
+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c41294ff..c10816cf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -31,6 +31,7 @@ import net.minecraft.server.AttributeMapServer;
import net.minecraft.server.AttributeModifiable;
import net.minecraft.server.AttributeRanged;
import net.minecraft.server.BlockPosition;
+import net.minecraft.server.ChatComponentText;
import net.minecraft.server.Container;
import net.minecraft.server.Entity;
import net.minecraft.server.EntityHuman;
@@ -52,6 +53,7 @@ import net.minecraft.server.PacketPlayOutCustomSoundEffect;
import net.minecraft.server.PacketPlayOutMap;
import net.minecraft.server.PacketPlayOutNamedSoundEffect;
import net.minecraft.server.PacketPlayOutPlayerInfo;
+import net.minecraft.server.PacketPlayOutPlayerListHeaderFooter;
import net.minecraft.server.PacketPlayOutSpawnPosition;
import net.minecraft.server.PacketPlayOutStopSound;
import net.minecraft.server.PacketPlayOutTitle;
@@ -228,6 +230,47 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
+ private IChatBaseComponent playerListHeader;
+ private IChatBaseComponent playerListFooter;
+
+ @Override
+ public String getPlayerListHeader() {
+ return (playerListHeader == null) ? null : CraftChatMessage.fromComponent(playerListHeader);
+ }
+
+ @Override
+ public String getPlayerListFooter() {
+ return (playerListFooter == null) ? null : CraftChatMessage.fromComponent(playerListFooter);
+ }
+
+ @Override
+ public void setPlayerListHeader(String header) {
+ this.playerListHeader = CraftChatMessage.fromStringOrNull(header);
+ updatePlayerListHeaderFooter();
+ }
+
+ @Override
+ public void setPlayerListFooter(String footer) {
+ this.playerListFooter = CraftChatMessage.fromStringOrNull(footer);
+ updatePlayerListHeaderFooter();
+ }
+
+ @Override
+ public void setPlayerListHeaderFooter(String header, String footer) {
+ this.playerListHeader = CraftChatMessage.fromStringOrNull(header);
+ this.playerListFooter = CraftChatMessage.fromStringOrNull(footer);
+ updatePlayerListHeaderFooter();
+ }
+
+ private void updatePlayerListHeaderFooter() {
+ if (getHandle().playerConnection == null) return;
+
+ PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
+ packet.a = (this.playerListHeader == null) ? new ChatComponentText("") : this.playerListHeader;
+ packet.b = (this.playerListFooter == null) ? new ChatComponentText("") : this.playerListFooter;
+ getHandle().playerConnection.sendPacket(packet);
+ }
+
@Override
public boolean equals(Object obj) {
if (!(obj instanceof OfflinePlayer)) {