Fix tablist (some tests done, potentielly fixed)

This commit is contained in:
Lixfel
2024-08-17 19:03:32 +02:00
parent bad291f8ce
commit 4f4e0bab69
2 changed files with 14 additions and 14 deletions
@@ -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
@@ -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