Newer
Older
ChallengeSystem / Lobby / src / main / java / de / fanta / lobby / JoinEntityData.java
@fanta fanta on 20 Jun 2024 3 KB components :,)
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
    }
}