diff --git a/VelocityCore/src/de/steamwar/velocitycore/tablist/Tablist.java b/VelocityCore/src/de/steamwar/velocitycore/tablist/Tablist.java index 92484166..315717a6 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/tablist/Tablist.java +++ b/VelocityCore/src/de/steamwar/velocitycore/tablist/Tablist.java @@ -43,6 +43,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import java.util.*; +import java.util.logging.Level; import java.util.stream.IntStream; @ChannelHandler.Sharable @@ -63,7 +64,6 @@ public class Tablist extends ChannelInboundHandlerAdapter { this.player = player; this.viewer = Chatter.of(player); this.directTabItems = Storage.directTabItems.computeIfAbsent(player, p -> new HashMap<>()); - injection(); } public void update(TablistPart global, int seconds) { @@ -150,8 +150,14 @@ public class Tablist extends ChannelInboundHandlerAdapter { private void injection() { connection = (VelocityServerConnection) player.getCurrentServer().orElse(null); - if(connection == null) - return; + if(connection == null) { + connection = ((ConnectedPlayer) player).getConnectionInFlight(); + + if(connection == null) { + VelocityCore.getLogger().log(Level.WARNING, "Could not inject Tablist: %s".formatted(player)); + return; + } + } ChannelPipeline pipeline = connection.getConnection().getChannel().pipeline(); if(pipeline.get("steamwar-tablist") != null) //Catch unclean exit diff --git a/VelocityCore/src/de/steamwar/velocitycore/tablist/TablistManager.java b/VelocityCore/src/de/steamwar/velocitycore/tablist/TablistManager.java index 69739dc2..29cebb38 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/tablist/TablistManager.java +++ b/VelocityCore/src/de/steamwar/velocitycore/tablist/TablistManager.java @@ -21,9 +21,9 @@ package de.steamwar.velocitycore.tablist; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.DisconnectEvent; -import com.velocitypowered.api.event.connection.PostLoginEvent; import com.velocitypowered.api.event.player.ServerConnectedEvent; import com.velocitypowered.api.event.player.ServerPostConnectEvent; +import com.velocitypowered.api.network.ProtocolVersion; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.server.RegisteredServer; import de.steamwar.network.packets.common.FightInfoPacket; @@ -59,20 +59,14 @@ public class TablistManager extends BasicListener { } } - @Subscribe - public void onJoin(PostLoginEvent event) { - Tablist.sendPacket(event.getPlayer(), Tablist.createTeamPacket); - } - @Subscribe public void onServerConnection(ServerConnectedEvent event) { synchronized (tablists) { - if (tablists.containsKey(event.getPlayer())) { - tablists.get(event.getPlayer()).onServerSwitch(); - } else { - tablists.put(event.getPlayer(), new Tablist(event.getPlayer())); - } + tablists.computeIfAbsent(event.getPlayer(), Tablist::new).onServerSwitch(); } + + if(event.getPlayer().getProtocolVersion().noGreaterThan(ProtocolVersion.MINECRAFT_1_20)) + Tablist.sendPacket(event.getPlayer(), Tablist.createTeamPacket); } @Subscribe