1
0

Fix tablist failure on softreload

Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Lixfel 2022-08-23 18:10:52 +02:00
Ursprung d232d18fda
Commit a6407d6bb0
2 geänderte Dateien mit 10 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -62,7 +62,7 @@ public class Tablist extends MessageToMessageDecoder<PacketWrapper> {
this.player = player; this.player = player;
this.viewer = ChatSender.of(player); this.viewer = ChatSender.of(player);
this.directTabItems = Storage.directTabItems.computeIfAbsent(player, p -> new HashMap<>()); this.directTabItems = Storage.directTabItems.computeIfAbsent(player, p -> new HashMap<>());
onServerSwitch(); injection();
} }
public void update(TablistPart global, int seconds) { public void update(TablistPart global, int seconds) {
@ -145,12 +145,17 @@ public class Tablist extends MessageToMessageDecoder<PacketWrapper> {
} }
public void onServerSwitch() { public void onServerSwitch() {
connection = (ServerConnection) player.getServer(); injection();
synchronized (directTabItems) { synchronized (directTabItems) {
sendNpcPacket(npcs.stream().map(npc -> directTabItems.get(npc).getUsername()).collect(Collectors.toList()), true); sendNpcPacket(npcs.stream().map(npc -> directTabItems.get(npc).getUsername()).collect(Collectors.toList()), true);
directTabItems.clear(); directTabItems.clear();
npcs.clear(); npcs.clear();
} }
}
private void injection() {
connection = (ServerConnection) player.getServer();
if(connection != null) { if(connection != null) {
ChannelPipeline pipeline = connection.getCh().getHandle().pipeline(); ChannelPipeline pipeline = connection.getCh().getHandle().pipeline();

Datei anzeigen

@ -51,7 +51,9 @@ public class TablistManager extends BasicListener {
public TablistManager() { public TablistManager() {
ProxyServer.getInstance().getScheduler().schedule(BungeeCore.get(), this::updateTablist, 1, 1, TimeUnit.SECONDS); ProxyServer.getInstance().getScheduler().schedule(BungeeCore.get(), this::updateTablist, 1, 1, TimeUnit.SECONDS);
ProxyServer.getInstance().getPlayers().forEach(player -> tablists.put(player, new Tablist(player))); synchronized (tablists) {
ProxyServer.getInstance().getPlayers().forEach(player -> tablists.put(player, new Tablist(player)));
}
} }
@EventHandler @EventHandler