80 lines
1.7 KiB
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;
|
|
}
|
|
|
|
}
|