Benutze das so... Dann kannst du einfach .sendTabTitle(player.getName(), "TEXT123", "TEXT123") Wobei der Header das über der Tatlist und der Footer das unter Tablist istHey,
ich möchte, dass wenn ein Spieler auf den Server joint ein Header bei Tab angezeigt wird, dazu benutzte ich eine Funktion, die beim PlayerJoinEvent aufgerufen wird, allerdings wird sofort wieder gekickt, wenn man verusucht zu joinen.
Code:public static void addTabHeader(Player p, String headerTxt){ CraftPlayer cp = (CraftPlayer) p; PlayerConnection connection = cp.getHandle().playerConnection; IChatBaseComponent header = ChatSerializer.a("{text:'" + headerTxt + "'}"); PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter(); Field headerField; try { headerField = packet.getClass().getDeclaredField("a"); headerField.setAccessible(true); headerField.set(packet, header); headerField.setAccessible(!headerField.isAccessible()); } catch (Exception e) { e.printStackTrace(); } connection.sendPacket(packet); }
Weiß jemand von euch, wie man das beheben kann?
PHP:
public static void sendTabTitle(Player player, String header, String footer) {
if (header == null) header = "";
header = ChatColor.translateAlternateColorCodes('&', header);
if (footer == null) footer = "";
footer = ChatColor.translateAlternateColorCodes('&', footer);
PlayerConnection connection = ((CraftPlayer)player).getHandle().playerConnection;
IChatBaseComponent tabTitle = ChatSerializer.a("{\"text\": \"" + header + "\"}");
IChatBaseComponent tabFoot = ChatSerializer.a("{\"text\": \"" + footer + "\"}");
PacketPlayOutPlayerListHeaderFooter headerPacket = new PacketPlayOutPlayerListHeaderFooter(tabTitle);
try
{
Field field = headerPacket.getClass().getDeclaredField("b");
field.setAccessible(true);
field.set(headerPacket, tabFoot);
} catch (Exception e) {
e.printStackTrace();
} finally {
connection.sendPacket(headerPacket);
}
}