forked from SteamWar/SteamWar
Fix tablist (some tests done, potentielly fixed)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user