MoparClassic/GameServer/src/org/moparscape/msc/config/Config.java

111 lines
3.4 KiB
Java

package org.moparscape.msc.config;
/**
* A class to handle loading configuration from XML
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class Config {
/**
* User info for the database
*/
public static String MYSQL_HOST;
public static String MYSQL_DB;
public static String MYSQL_USER;
public static String MYSQL_PASS;
public static String SERVER_IP, SERVER_NAME, RSCD_HOME, CONF_DIR, SERVER_LOCATION, LS_IP;
public static int SERVER_PORT, SERVER_VERSION, MAX_PLAYERS, LS_PORT, SERVER_NUM;
public static long START_TIME;
public static boolean members, f2pWildy;
public static double expRate, subExpRate;
public static String[] pmods, mods, admins;
public static String UNUSED_IP;
public static int IP_BAN_REMOVAL_DELAY;
public static int GARBAGE_COLLECT_INTERVAL;
public static int SAVE_INTERVAL;
public static String DATE_FORMAT;
static {
loadEnv();
}
/**
* Called to load config settings from the given file
*
* @param file
* the xml file to load settings from
* @throws IOException
* if an i/o error occurs
*/
public static void initConfig(String file) throws IOException {
START_TIME = System.currentTimeMillis();
Properties props = new Properties();
props.loadFromXML(new FileInputStream(file));
SERVER_VERSION = Integer.parseInt(props.getProperty("version"));
SERVER_NAME = props.getProperty("name");
SERVER_IP = props.getProperty("ip");
SERVER_PORT = Integer.parseInt(props.getProperty("port"));
SERVER_LOCATION = props.getProperty("location");
MYSQL_USER = props.getProperty("mysqluser");
MYSQL_PASS = props.getProperty("mysqlpass");
MYSQL_HOST = props.getProperty("mysqlhost");
MYSQL_DB = props.getProperty("mysqldb");
MAX_PLAYERS = Integer.parseInt(props.getProperty("maxplayers"));
LS_IP = props.getProperty("lsip");
LS_PORT = Integer.parseInt(props.getProperty("lsport"));
SERVER_NUM = Integer.parseInt(props.getProperty("servernum"));
members = Boolean.parseBoolean(props.getProperty("members", "false"));
f2pWildy = Boolean.parseBoolean(props.getProperty("f2pWildy", "true"));
expRate = Double.parseDouble(props.getProperty("expRate"));
subExpRate = Double.parseDouble(props.getProperty("subExpRate"));
pmods = props.getProperty("pmods").replaceAll(", +", ",").split(",");
mods = props.getProperty("mods").replaceAll(", +", ",").split(",");
admins = props.getProperty("admins").replaceAll(", +", ",").split(",");
UNUSED_IP = props.getProperty("unused-ip");
IP_BAN_REMOVAL_DELAY = Integer.parseInt(props.getProperty("ip-ban-removal-delay"));
GARBAGE_COLLECT_INTERVAL = Integer.parseInt(props.getProperty("garbage-collect-interval"));
SAVE_INTERVAL = Integer.parseInt(props.getProperty("save-interval"));
DATE_FORMAT = props.getProperty("date-format");
props.clear();
Constants.GameServer.MOTD = "@yel@Welcome to @whi@" + Config.SERVER_NAME + "@yel@ - World @whi@" + (Config.SERVER_NUM == 0 ? 2 : Config.SERVER_NUM) + " (" + (Config.members ? "P2P" : "F2P") + ")";
}
/**
* Called to load RSCD_HOME and CONF_DIR Used to be situated in
* PersistenceManager
*/
private static void loadEnv() {
String home = System.getenv("RSCD_HOME");
if (home == null) { // the env var hasnt been set, fall back to .
home = ".";
}
CONF_DIR = home + File.separator + "conf" + File.separator + "server";
RSCD_HOME = home;
}
}