Update server state handling and mapping for web player integration.
- Introduced `WebPlayer` class for representing web players. - Added `WebPlayerMapper` for converting between `WebPlayer` and DTOs. - Updated `ServerMapper` and `WebHandler` to support `WebPlayer`. - Refactored `PlayerListener` to include `ChatUser` in server state updates.
This commit is contained in:
@@ -62,6 +62,7 @@ public class PlayerListener implements Listener {
|
||||
|
||||
ChatUser user = ChatUserManager.getChatUser(uuid);
|
||||
if (user != null) {
|
||||
updateServerState(event.getPlayer(), user, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,9 +70,8 @@ public class PlayerListener implements Listener {
|
||||
ChatUser chatUser = new ChatUser(uuid, -1, null);
|
||||
ChatUserManager.addUser(chatUser);
|
||||
Queries.saveUser(chatUser);
|
||||
|
||||
updateServerState(event.getPlayer(), chatUser, true);
|
||||
//TODO load player on other servers with plugin message?
|
||||
updateServerState(event.getPlayer(), true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -79,10 +79,10 @@ public class PlayerListener implements Listener {
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
ChatUser user = ChatUserManager.getChatUser(uuid);
|
||||
ChatUserManager.removeUser(user);
|
||||
updateServerState(event.getPlayer(), false);
|
||||
updateServerState(event.getPlayer(), user, false);
|
||||
}
|
||||
|
||||
private void updateServerState(Player triggerPlayer, boolean add) {
|
||||
private void updateServerState(Player triggerPlayer, ChatUser chatUser, boolean add) {
|
||||
ArrayList<Player> playerList = new ArrayList<>(Bukkit.getOnlinePlayers());
|
||||
if (add) {
|
||||
if (playerList.stream()
|
||||
@@ -95,7 +95,9 @@ public class PlayerListener implements Listener {
|
||||
playerList.removeIf(player -> player.getUniqueId().equals(triggerPlayer.getUniqueId()));
|
||||
}
|
||||
String name = Bukkit.getServer().getName();
|
||||
webHandler.updateServerState(name, playerList);
|
||||
webHandler.updateServerState(name,
|
||||
playerList.stream().map(player -> WebPlayerMapper.fromPlayer(player, chatUser)).toList()
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true) // untested
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.alttd.chat.listeners;
|
||||
|
||||
import com.alttd.chat.objects.ChatUser;
|
||||
import com.alttd.chat.objects.chat_log.mapper.server_state.WebPlayer;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@UtilityClass
|
||||
public class WebPlayerMapper {
|
||||
|
||||
public static WebPlayer fromPlayer(Player player, ChatUser chatUser) {
|
||||
WebPlayer webPlayer = new WebPlayer();
|
||||
webPlayer.setUuid(player.getUniqueId());
|
||||
webPlayer.setName(player.getName());
|
||||
webPlayer.setStyledName(GsonComponentSerializer.gson().serialize(chatUser.getDisplayName().asComponent()));
|
||||
return webPlayer;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user