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:
parent
e72f79cb29
commit
0d2ac3763f
|
|
@ -7,9 +7,9 @@ import com.alttd.altitudeweb.model.ChatMessageDto;
|
||||||
import com.alttd.chat.config.Config;
|
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.chat_log.ChatLogMapper;
|
||||||
import com.alttd.chat.objects.chat_log.mapper.server_state.ServerMapper;
|
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 com.alttd.chat.util.ALogger;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -48,7 +48,7 @@ public class WebHandler {
|
||||||
triggerSend();
|
triggerSend();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateServerState(String serverName, List<Player> playerList) {
|
public void updateServerState(String serverName, List<WebPlayer> playerList) {
|
||||||
try {
|
try {
|
||||||
chatApi.updateServerStatesAsync(ServerMapper.toDto(serverName, playerList), new SilentApiHandler());
|
chatApi.updateServerStatesAsync(ServerMapper.toDto(serverName, playerList), new SilentApiHandler());
|
||||||
} catch (ApiException e) {
|
} catch (ApiException e) {
|
||||||
|
|
|
||||||
|
|
@ -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.ServerDto;
|
||||||
import com.alttd.altitudeweb.model.ServerStateDto;
|
import com.alttd.altitudeweb.model.ServerStateDto;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class ServerMapper {
|
public class ServerMapper {
|
||||||
|
|
||||||
public static ServerStateDto toDto(String serverName, List<Player> playerList) {
|
public static ServerStateDto toDto(String serverName, List<WebPlayer> playerList) {
|
||||||
ServerStateDto serverStateDto = new ServerStateDto();
|
ServerStateDto serverStateDto = new ServerStateDto();
|
||||||
ServerDto serverDto = new ServerDto();
|
ServerDto serverDto = new ServerDto();
|
||||||
|
|
||||||
serverDto.setName(serverName);
|
serverDto.setName(serverName);
|
||||||
serverDto.setPlayers(playerList.stream().map(UserMapper::toDto).toList());
|
serverDto.setPlayers(playerList.stream().map(WebPlayerMapper::toDto).toList());
|
||||||
serverStateDto.setServers(List.of(serverDto));
|
serverStateDto.setServers(List.of(serverDto));
|
||||||
return serverStateDto;
|
return serverStateDto;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -62,6 +62,7 @@ public class PlayerListener implements Listener {
|
||||||
|
|
||||||
ChatUser user = ChatUserManager.getChatUser(uuid);
|
ChatUser user = ChatUserManager.getChatUser(uuid);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
|
updateServerState(event.getPlayer(), user, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,9 +70,8 @@ public class PlayerListener implements Listener {
|
||||||
ChatUser chatUser = new ChatUser(uuid, -1, null);
|
ChatUser chatUser = new ChatUser(uuid, -1, null);
|
||||||
ChatUserManager.addUser(chatUser);
|
ChatUserManager.addUser(chatUser);
|
||||||
Queries.saveUser(chatUser);
|
Queries.saveUser(chatUser);
|
||||||
|
updateServerState(event.getPlayer(), chatUser, true);
|
||||||
//TODO load player on other servers with plugin message?
|
//TODO load player on other servers with plugin message?
|
||||||
updateServerState(event.getPlayer(), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
@ -79,10 +79,10 @@ public class PlayerListener implements Listener {
|
||||||
UUID uuid = event.getPlayer().getUniqueId();
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
ChatUser user = ChatUserManager.getChatUser(uuid);
|
ChatUser user = ChatUserManager.getChatUser(uuid);
|
||||||
ChatUserManager.removeUser(user);
|
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());
|
ArrayList<Player> playerList = new ArrayList<>(Bukkit.getOnlinePlayers());
|
||||||
if (add) {
|
if (add) {
|
||||||
if (playerList.stream()
|
if (playerList.stream()
|
||||||
|
|
@ -95,7 +95,9 @@ public class PlayerListener implements Listener {
|
||||||
playerList.removeIf(player -> player.getUniqueId().equals(triggerPlayer.getUniqueId()));
|
playerList.removeIf(player -> player.getUniqueId().equals(triggerPlayer.getUniqueId()));
|
||||||
}
|
}
|
||||||
String name = Bukkit.getServer().getName();
|
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
|
@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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user