From 6764d040c3b88abb131eeb16160366e58b47381f Mon Sep 17 00:00:00 2001 From: TheMode Date: Mon, 31 May 2021 20:49:33 +0200 Subject: [PATCH] Fix FakePlayer not being removed from the tablist --- .../server/entity/fakeplayer/FakePlayer.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java b/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java index f1b174834..6dc593fd9 100644 --- a/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java +++ b/src/main/java/net/minestom/server/entity/fakeplayer/FakePlayer.java @@ -124,17 +124,22 @@ public class FakePlayer extends Player implements NavigableEntity { super.setInstance(instance); } + @Override + protected boolean addViewer0(@NotNull Player player) { + final boolean result = super.addViewer0(player); + if (result) { + handleTabList(player.getPlayerConnection()); + } + return result; + } + /** * {@inheritDoc} */ @Override protected void showPlayer(@NotNull PlayerConnection connection) { super.showPlayer(connection); - if (!option.isInTabList()) { - // Remove from tab-list - MinecraftServer.getSchedulerManager().buildTask(() -> connection.sendPacket(getRemovePlayerToList())).delay(20, TimeUnit.TICK).schedule(); - } - + handleTabList(connection); } @NotNull @@ -142,4 +147,11 @@ public class FakePlayer extends Player implements NavigableEntity { public Navigator getNavigator() { return navigator; } + + private void handleTabList(PlayerConnection connection) { + if (!option.isInTabList()) { + // Remove from tab-list + MinecraftServer.getSchedulerManager().buildTask(() -> connection.sendPacket(getRemovePlayerToList())).delay(2, TimeUnit.TICK).schedule(); + } + } }