package net.CyanWool.api.utils;
import java.io.File;
import java.io.IOException;
import net.CyanWool.api.configuration.file.FileConfiguration;
import net.CyanWool.api.configuration.file.YamlConfiguration;
public class ServerConfiguration {
private final File configFile;
private FileConfiguration config;
// General
private String ip;
private int port;
private boolean online_mode;
private int maxplayers;
private String motd;
private int view;
// private int distance; //DEV
// and more others...
// from server.properties
public ServerConfiguration(File configFile) {
this.configFile = configFile;
this.config = YamlConfiguration.loadConfiguration(configFile);
}
public void init() {
if (!configFile.exists()) {
createConfig();
init(); // re-init
return;
} else {
restore();
}
}
public void save() {
try {
config.set("host", getIPAdress());
config.set("port", getPort());
config.set("online-mode", isOnlineMode()); // for test
config.set("max-players", getMaxPlayers());
config.set("view-distance", getViewDistance());
config.set("motd", getMotd());
config.save(configFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void createConfig() {
try {
config.set("host", "0.0.0.0");
config.set("port", 25565);
config.set("online-mode", false); // for test
config.set("max-players", 20);
config.set("view-distance", 8);
config.set("motd", "CyanWool Server!");
config.save(configFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void restore() {
// set ip
String ip = config.getString("host");
if (ip != null) {
this.ip = ip;
} else {
this.ip = "0.0.0.0";
}
// set port
int port = Integer.parseInt(config.getString("port"));
if (port != 0) {
this.port = port;
} else {
this.port = 22565;
}
// set online-mode
boolean mode = Boolean.parseBoolean(config.getString("online-mode"));
this.setOnlineMode(mode);
// set max-players
int max = Integer.parseInt(config.getString("max-players"));
this.setMaxPlayers(max);
int viewDistance = Integer.parseInt(config.getString("max-players"));
this.setViewDistance(viewDistance);
// set motd
String motd = config.getString("motd");
this.setMotd(motd);
}
public String getIPAdress() {
return ip;
}
public int getPort() {
return port;
}
public boolean isOnlineMode() {
return online_mode;
}
public void setOnlineMode(boolean online_mode) {
this.online_mode = online_mode;
}
public int getMaxPlayers() {
return maxplayers;
}
public void setMaxPlayers(int maxplayers) {
this.maxplayers = maxplayers;
}
public String getMotd() {
return motd;
}
public void setMotd(String motd) {
this.motd = motd;
}
public int getViewDistance() {
return this.view;
}
public void setViewDistance(int view) {
this.view = view;
}
}