package de.fanta.lobby;
import de.fanta.challengeutils.Color;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.Nullable;
import java.util.UUID;
public class JoinEntityData {
private final String serverName;
private final UUID entityUUID;
private final String globalPortLocationName;
private final String serverDisplayName;
private final Component serverDisplayNameComponent;
private ServerStatus serverStatus;
private EventStatus eventStatus;
private int playerCount;
private int maxPlayers;
private final int mapVersion;
public JoinEntityData(String serverName, @Nullable Integer mapVersion, UUID entityUUID, String globalPortLocationName, String serverDisplayName, ServerStatus serverStatus, EventStatus eventStatus, int playerCount, int maxPlayers) {
this.serverName = serverName;
this.mapVersion = mapVersion == null ? 0 : mapVersion;
this.entityUUID = entityUUID;
this.globalPortLocationName = globalPortLocationName;
this.serverDisplayName = serverDisplayName;
this.serverDisplayNameComponent = Component.text(serverDisplayName, Color.BLUE);
this.serverStatus = serverStatus;
this.eventStatus = eventStatus;
this.playerCount = playerCount;
this.maxPlayers = maxPlayers;
}
public String getServerName() {
return serverName;
}
public UUID getEntityUUID() {
return entityUUID;
}
public String getGlobalPortLocationName() {
return globalPortLocationName;
}
public String getServerDisplayName() {
return serverDisplayName;
}
public ServerStatus getServerStatus() {
return serverStatus;
}
public void setServerStatus(ServerStatus serverStatus) {
this.serverStatus = serverStatus;
}
public void setEventStatus(EventStatus eventStatus) {
this.eventStatus = eventStatus;
}
public EventStatus getEventStatus() {
return eventStatus;
}
public int getPlayerCount() {
return playerCount;
}
public void setPlayerCount(int playerCount) {
this.playerCount = playerCount;
}
public int getMaxPlayers() {
return maxPlayers;
}
public void setMaxPlayers(int maxPlayers) {
this.maxPlayers = maxPlayers;
}
public int getMapVersion() {
return mapVersion;
}
public Component createCustomEntityName() {
Component statusComponent = serverStatus == ServerStatus.ONLINE ? Component.text(" ONLINE ", Color.GREEN) : serverStatus == ServerStatus.OFFLINE ? Component.text(" OFFLINE ", Color.RED) : serverStatus == ServerStatus.RUNNING ? Component.text(" RUNNING ", Color.ORANGE) : Component.text(" ");
Component playerCountString = Component.text("(" + playerCount + "/" + maxPlayers + ")", Color.BLUE);
if (eventStatus == EventStatus.EVENT) {
return Component.text("Event", Color.RED).append(statusComponent).append(serverStatus != ServerStatus.OFFLINE ? playerCountString : Component.empty());
}
return serverDisplayNameComponent.append(statusComponent).append(serverStatus != ServerStatus.OFFLINE ? playerCountString : Component.empty());
}
public enum ServerStatus {
ONLINE, RUNNING, OFFLINE
}
public enum EventStatus {
EVENT, NORMAL
}
}