From 3b8f5be77be456fa291a8089ba10ddbad1cb82b6 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 29 Jul 2018 21:30:31 +1000 Subject: SPIGOT-1714: Draft API for player list header / footer --- .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/main') 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)) { -- cgit v1.2.3