McManager/src/main/java/de/ph87/mc/server/Server.java

80 lines
1.7 KiB
Java

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;
}
}