diff --git a/api/src/main/java/com/alttd/chat/objects/chat_log/WebHandler.java b/api/src/main/java/com/alttd/chat/objects/chat_log/WebHandler.java index a2b1f02..7a8f66e 100644 --- a/api/src/main/java/com/alttd/chat/objects/chat_log/WebHandler.java +++ b/api/src/main/java/com/alttd/chat/objects/chat_log/WebHandler.java @@ -7,9 +7,9 @@ import com.alttd.altitudeweb.model.ChatMessageDto; import com.alttd.chat.config.Config; import com.alttd.chat.objects.chat_log.mapper.chat_log.ChatLogMapper; import com.alttd.chat.objects.chat_log.mapper.server_state.ServerMapper; +import com.alttd.chat.objects.chat_log.mapper.server_state.WebPlayer; import com.alttd.chat.util.ALogger; import lombok.extern.slf4j.Slf4j; -import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; @@ -48,7 +48,7 @@ public class WebHandler { triggerSend(); } - public void updateServerState(String serverName, List playerList) { + public void updateServerState(String serverName, List playerList) { try { chatApi.updateServerStatesAsync(ServerMapper.toDto(serverName, playerList), new SilentApiHandler()); } catch (ApiException e) { diff --git a/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/ServerMapper.java b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/ServerMapper.java index 9e50a35..13bf5bc 100644 --- a/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/ServerMapper.java +++ b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/ServerMapper.java @@ -3,19 +3,18 @@ package com.alttd.chat.objects.chat_log.mapper.server_state; import com.alttd.altitudeweb.model.ServerDto; import com.alttd.altitudeweb.model.ServerStateDto; import lombok.experimental.UtilityClass; -import org.bukkit.entity.Player; import java.util.List; @UtilityClass public class ServerMapper { - public static ServerStateDto toDto(String serverName, List playerList) { + public static ServerStateDto toDto(String serverName, List playerList) { ServerStateDto serverStateDto = new ServerStateDto(); ServerDto serverDto = new ServerDto(); serverDto.setName(serverName); - serverDto.setPlayers(playerList.stream().map(UserMapper::toDto).toList()); + serverDto.setPlayers(playerList.stream().map(WebPlayerMapper::toDto).toList()); serverStateDto.setServers(List.of(serverDto)); return serverStateDto; } diff --git a/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayer.java b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayer.java new file mode 100644 index 0000000..661b0d8 --- /dev/null +++ b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayer.java @@ -0,0 +1,16 @@ +package com.alttd.chat.objects.chat_log.mapper.server_state; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@Data +@NoArgsConstructor +public class WebPlayer { + + private UUID uuid; + private String name; + private String styledName; + +} diff --git a/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayerMapper.java b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayerMapper.java new file mode 100644 index 0000000..8d46fa1 --- /dev/null +++ b/api/src/main/java/com/alttd/chat/objects/chat_log/mapper/server_state/WebPlayerMapper.java @@ -0,0 +1,17 @@ +package com.alttd.chat.objects.chat_log.mapper.server_state; + +import com.alttd.altitudeweb.model.UserDto; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class WebPlayerMapper { + + public static UserDto toDto(WebPlayer webPlayer) { + UserDto userDto = new UserDto(); + userDto.setName(webPlayer.getName()); + userDto.setUuid(webPlayer.getUuid()); + userDto.setStyledName(webPlayer.getStyledName()); + return userDto; + } + +} diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java index e960b07..1d20931 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java @@ -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 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 diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/WebPlayerMapper.java b/galaxy/src/main/java/com/alttd/chat/listeners/WebPlayerMapper.java new file mode 100644 index 0000000..bbe7ccc --- /dev/null +++ b/galaxy/src/main/java/com/alttd/chat/listeners/WebPlayerMapper.java @@ -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; + } +}