From 3aa471c3ab992bd5682897f23245e8b5ae4bb389 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Fri, 16 Oct 2026 11:28:47 +0200 Subject: [PATCH] Read global chat on fight servers after /chat global join --- .../velocitycore/chat/ChatManager.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/VelocityCore/src/de/steamwar/velocitycore/chat/ChatManager.java b/VelocityCore/src/de/steamwar/velocitycore/chat/ChatManager.java index 753ef201b..f65be1b3a 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/chat/ChatManager.java +++ b/VelocityCore/src/de/steamwar/velocitycore/chat/ChatManager.java @@ -75,8 +75,8 @@ public class ChatManager extends BasicListener { private static final Map defaults = new ConcurrentHashMap<>(); private static final Map persisted = new ConcurrentHashMap<>(); private static final Set globalOnArena = ConcurrentHashMap.newKeySet(); - // Players who wrote into the global chat on their current fight server and read it until they leave the server - private static final Set globalAfterWriting = ConcurrentHashMap.newKeySet(); + // Players reading the global chat on their current fight server until they leave it (after /global or /chat global join) + private static final Set globalOnServer = ConcurrentHashMap.newKeySet(); private static final Set announced = ConcurrentHashMap.newKeySet(); private static final Map> spies = new ConcurrentHashMap<>(); private static final Map allArenas = new ConcurrentHashMap<>(); @@ -162,7 +162,7 @@ public class ChatManager extends BasicListener { static boolean readsGlobal(Player player) { UUID uuid = player.getUniqueId(); - return !currentServer(player).map(ChatManager::isArena).orElse(false) || globalOnArena.contains(uuid) || globalAfterWriting.contains(uuid); + return !currentServer(player).map(ChatManager::isArena).orElse(false) || globalOnArena.contains(uuid) || globalOnServer.contains(uuid); } /** @@ -172,7 +172,7 @@ public class ChatManager extends BasicListener { if (!currentServer(player.getPlayer()).map(ChatManager::isArena).orElse(false)) return; if (!reads(player, global.persistId())) return; - if (globalAfterWriting.add(player.user().getUUID())) { + if (globalOnServer.add(player.user().getUUID())) { player.system("CHAT_GLOBAL_AFTER_WRITING", global.tag(player)); } } @@ -277,6 +277,9 @@ public class ChatManager extends BasicListener { if (hidden(uuid).remove(channel.persistId())) { saveHidden(uuid); } + if (channel == global && currentServer(player.getPlayer()).map(ChatManager::isArena).orElse(false)) { + globalOnServer.add(uuid); + } player.system("CHAT_CHANNEL_JOINED", channel.tag(player)); } @@ -298,8 +301,8 @@ public class ChatManager extends BasicListener { return; } - // Leaving the global chat read after writing into it only ends that, it does not leave the global chat everywhere - if (channel == global && globalAfterWriting.remove(uuid)) { + // On fight servers leaving only stops reading the global chat on this server, it does not leave the global chat everywhere + if (channel == global && globalOnServer.remove(uuid)) { player.system("CHAT_CHANNEL_LEFT", channel.tag(player)); return; } @@ -478,7 +481,7 @@ public class ChatManager extends BasicListener { UUID uuid = player.getUniqueId(); globalOnArena.remove(uuid); - globalAfterWriting.remove(uuid); + globalOnServer.remove(uuid); ChatChannel current = defaults.get(uuid); ChatChannel next; @@ -499,7 +502,7 @@ public class ChatManager extends BasicListener { defaults.remove(uuid); persisted.remove(uuid); globalOnArena.remove(uuid); - globalAfterWriting.remove(uuid); + globalOnServer.remove(uuid); announced.remove(uuid); spies.remove(uuid); allArenas.remove(uuid);