package de.ph87.mc.server; import com.fasterxml.jackson.annotation.JsonIgnore; import de.ph87.mc.websocket.IWebsocketMessage; import jakarta.annotation.Nullable; import lombok.Data; import lombok.NonNull; import java.io.File; @Data public class Server implements IWebsocketMessage { @NonNull @JsonIgnore public final File directory; @NonNull @JsonIgnore public final File propertyFile; @NonNull @JsonIgnore public final File pidFile; @NonNull public final String name; @NonNull public final String motd; @NonNull public final Mode mode; public final int serverPort; @JsonIgnore public final int rconPort; @NonNull @JsonIgnore public final String rconPassword; @JsonIgnore public final int queryPort; @JsonIgnore public final File iconFile; public final boolean hasIcon; @Nullable private Long pid; public Server(@NonNull final File directory, @NonNull final String name, @NonNull final String motd, @NonNull final Mode mode, final int serverPort, final int rconPort, final String rconPassword, final int queryPort) { this.directory = directory; this.propertyFile = new File(directory, "server.properties"); this.pidFile = new File(directory, "pid"); this.iconFile = new File(directory, "McManagerIcon.png"); this.name = name; this.motd = motd; this.mode = mode; this.serverPort = serverPort; this.rconPort = rconPort; this.rconPassword = rconPassword; this.queryPort = queryPort; this.hasIcon = iconFile.isFile(); } @Override public String toString() { return "Server(%s, \"%s\", %s)".formatted(mode, motd, isRunning() ? "RUNNING" : "stopped"); } public boolean isRunning() { return pid != null; } }