package org.buckit;
import java.io.File;
import java.util.logging.Logger;
import org.buckit.datasource.DataType;
import org.buckit.util.Properties;
public class Config {
// --------------------------------------------------
// Property File Definitions
// --------------------------------------------------
public static final String GENERAL_CONFIG_FILE = "./config/General.properties";
public static final String DATABASE_CONFIG_FILE = "./config/Database.properties";
public static final String FLATFILE_CONFIG_FILE = "./config/Flatfile.properties";
public static final String WORLD_CONFIG_FILE = "./config/World.properties";
public static final String EXPERT_CONFIG_FILE = "./config/Expert.properties";
public static final String HELL_CONFIG_FILE = "./config/Hell.properties";
// --------------------------------------------------
// General Properties
// --------------------------------------------------
public static int PLAYER_LIMIT;
public static boolean ONLINE_MODE_ENABLED;
public static boolean ANIMALS_ENABLED;
public static boolean MONSTERS_ENABLED;
public static boolean HEALTH_ENABLED;
public static boolean PVP_ENABLED;
public static String SERVER_IP;
public static int SERVER_PORT;
public static int SPAWN_RADIUS;
public static int SPAWN_RESPAWN_AREA_RADIUS;
public static DataType DATA_SOURCE_TYPE;
public static boolean DURABILITY_ENABLED;
public static boolean DURABILITY_FORCE_UPDATE;
public static boolean TP_REQUEST_COMMANDS_ENABLED;
public static boolean KITS_ENABLED;
public static boolean HOMES_ENABLED;
public static boolean HOMES_MULTI_ENABLED;
public static boolean WARPS_ENABLED;
public static boolean WARPS_GROUPS_ENABLED;
public static String WARPS_DEFAULT_GROUP_NAME;
public static boolean WHITELIST_ENABLED;
public static boolean RESERVELIST_ENABLED;
public static String WHITELIST_MESSAGE;
public static String RESERVELIST_MESSAGE;
public static String DEFAULT_USER_FORMAT;
public static String DEFAULT_CHAT_FORMAT;
public static int DEFAULT_ACCESS_LEVEL;
public static String DEFAULT_ERROR_COLOR;
public static String DEFAULT_INFO_COLOR;
public static boolean TRACK_USER_ONLINE_TIME;
public static String NOT_ENOUGH_ACCESS_MESSAGE;
public static boolean LIMIT_BUILD_BY_BUILD_FLAG;
public static boolean SEND_MOTD_ON_LOGIN;
public static boolean PERMISSIONS_COMPATIBILITY_ENABLED;
// --------------------------------------------------
// Expert Properties
// --------------------------------------------------
public static String DATABASE_DELIMITER;
public static String DATABASE_SEPERATOR;
public static String FULL_ACCESS_STRING;
// --------------------------------------------------
// Hell Properties
// --------------------------------------------------
public static boolean HELL_ENABLED;
public static String HELL_DIRECTORY;
public static boolean HELL_EMULATE_GATES;
public static int HELL_LIGHTSTONE_OCCURANCE;
public static int HELL_RED_MUSHROOM_OCCURANCE;
public static int HELL_BROWN_MUSHROOM_OCCURANCE;
public static int HELL_FIRE_OCCURANCE;
public static int HELL_RANDOM_LAVA_OCCURANCE;
// --------------------------------------------------
// Database Properties
// --------------------------------------------------
public static int DATABASE_MAX_CONNECTIONS;
public static int DATABASE_MAX_IDLE_TIME;
public static String DATABASE_DRIVER;
public static String DATABASE_URL;
public static String DATABASE_LOGIN;
public static String DATABASE_PASSWORD;
public static String DATABASE_USERS_TABLE;
public static String DATABASE_WARPS_TABLE;
public static String DATABASE_HOMES_TABLE;
public static String DATABASE_KITS_TABLE;
public static String DATABASE_KITS_DELAY_TABLE;
public static String DATABASE_ACCESS_TABLE;
public static String DATABASE_ACCESSGROUPS_TABLE;
public static String DATABASE_WHITELIST_TABLE;
public static String DATABASE_RESERVELIST_TABLE;
// --------------------------------------------------
// FlatFile Properties
// --------------------------------------------------
public static String FLATFILE_USERS_FILE;
public static String FLATFILE_WARPS_FILE;
public static String FLATFILE_HOMES_DIRECTORY;
public static String FLATFILE_KITS_FILE;
public static String FLATFILE_KITS_DELAY_FILE;
public static String FLATFILE_ACCESS_FILE;
public static String FLATFILE_ACCESSGROUPS_FILE;
public static String FLATFILE_WHITELIST_FILE;
public static String FLATFILE_RESERVELIST_FILE;
// --------------------------------------------------
// World Properties
// --------------------------------------------------
public static int WORLD_GRAVEL_OCCURENCE;
public static int WORLD_DIRT_OCCURENCE;
public static int WORLD_ORE_COAL_OCCURENCE;
public static int WORLD_ORE_IRON_OCCURENCE;
public static int WORLD_ORE_GOLD_OCCURENCE;
public static int WORLD_ORE_DIAMOND_OCCURENCE;
public static int WORLD_ORE_REDSTONE_OCCURENCE;
public static int WORLD_ORE_LAPISLAZULI_OCCURENCE;
public static int WORLD_GRAVEL_SIZE;
public static int WORLD_DIRT_SIZE;
public static int WORLD_ORE_COAL_SIZE;
public static int WORLD_ORE_IRON_SIZE;
public static int WORLD_ORE_GOLD_SIZE;
public static int WORLD_ORE_DIAMOND_SIZE;
public static int WORLD_ORE_REDSTONE_SIZE;
public static int WORLD_ORE_LAPISLAZULI_SIZE;
public static int WORLD_DUNGEONS_OCCURENCE;
public static int WORLD_CLAY_OCCURENCE;
public static int WORLD_CLAY_SIZE;
public static int WORLD_CACTUS_OCCURENCE;
public static int WORLD_PUMPKIN_OCCURENCE;
public static int WORLD_REED_OCCURENCE;
public static int WORLD_YELLOW_FLOWER_OCCURENCE;
public static int WORLD_RED_FLOWER_OCCURENCE;
public static int WORLD_BROWN_MUSHROOM_OCCURENCE;
public static int WORLD_RED_MUSHROOM_OCCURENCE;
public static int WORLD_NOISE_1;
public static int WORLD_NOISE_2;
public static int WORLD_NOISE_3;
public static int WORLD_NOISE_4;
public static int WORLD_NOISE_5;
public static int WORLD_NOISE_6;
public static int WORLD_NOISE_7;
public static int WORLD_NOISE_8;
private static Logger log = Logger.getLogger(Properties.class.getName());
public static void load() {
loadGeneralProperties();
loadWorldProperties();
switch(DATA_SOURCE_TYPE){
case DATABASE:
loadDatabaseProperties();
break;
case FLATFILE:
loadFlatFileProperties();
break;
case YAML:
break;
}
loadExpertProperties();
loadHellProperties();
}
private static void loadGeneralProperties() {
try {
Properties gp = new Properties(new File(GENERAL_CONFIG_FILE));
PLAYER_LIMIT = gp.getInt("PlayerLimit", 20, 0);
ONLINE_MODE_ENABLED = gp.getBool("OnlineMode", true);
ANIMALS_ENABLED = gp.getBool("SpawnAnimals", true);
MONSTERS_ENABLED = gp.getBool("SpawnMonsters", true);
HEALTH_ENABLED = gp.getBool("HealthEnabled", true);
PVP_ENABLED = gp.getBool("PvpEnabled", true);
SERVER_IP = gp.getProperty("ServerIP", "");
SERVER_PORT = gp.getInt("ServerPort", 25565,1,65535);
SPAWN_RADIUS = gp.getInt("SpawnRadius", 16);
SPAWN_RESPAWN_AREA_RADIUS = gp.getInt("RespawnAreaRadius", "10");
DURABILITY_ENABLED = gp.getBool("DurabilityEnabled", true);
DURABILITY_FORCE_UPDATE = gp.getBool("DurabilityForceUpdate", false);
String datasource = gp.getProperty("DataSource", "database");
if(datasource.equalsIgnoreCase("flatfile"))DATA_SOURCE_TYPE = DataType.FLATFILE;
else if(datasource.equalsIgnoreCase("database"))DATA_SOURCE_TYPE = DataType.DATABASE;
else if(datasource.equalsIgnoreCase("yaml"))DATA_SOURCE_TYPE = DataType.YAML;
KITS_ENABLED = gp.getBool("KitsEnabled", "false");
HOMES_ENABLED = gp.getBool("HomesEnabled", "true");
HOMES_MULTI_ENABLED = gp.getBool("MultiHomesEnabled", "false");
WARPS_ENABLED = gp.getBool("WarpsEnabled", "true");
WARPS_GROUPS_ENABLED = gp.getBool("WarpsGroupsEnabled", "false");
WARPS_DEFAULT_GROUP_NAME = gp.getProperty("WarpsDefaultGroup","default");
WHITELIST_ENABLED = gp.getBool("WhiteListEnabled", false);
RESERVELIST_ENABLED = gp.getBool("ReserveListEnabled", false);
WHITELIST_MESSAGE = gp.getProperty("WhiteListMessage","Not on whitelist.");
RESERVELIST_MESSAGE = gp.getProperty("ReserveListMessage","The server is full!");
TP_REQUEST_COMMANDS_ENABLED = gp.getBool("TpRequestEnabled", false);
DEFAULT_USER_FORMAT = gp.getProperty("DefaultUserFormat","{$username}");
DEFAULT_CHAT_FORMAT = gp.getProperty("DefaultChatFormat","<{$usernameformat}> {$message}");
DEFAULT_ACCESS_LEVEL = gp.getInt("DefaultAccessLevel", 0);
DEFAULT_ERROR_COLOR = gp.getProperty("DefaultErrorColor","^C").replace("^", "\u00A7");
DEFAULT_INFO_COLOR = gp.getProperty("DefaultInfoColor","^A").replace("^", "\u00A7");
TRACK_USER_ONLINE_TIME = gp.getBool("TrackUserOnlineTime", "true");
NOT_ENOUGH_ACCESS_MESSAGE = gp.getProperty("AccessMessage", "Your are not allowed to use this command.");
LIMIT_BUILD_BY_BUILD_FLAG = gp.getBool("LimitBuildByFlag", true);
SEND_MOTD_ON_LOGIN = gp.getBool("MotdOnLogin", true);
PERMISSIONS_COMPATIBILITY_ENABLED = gp.getBool("PermissionsCompatibilityEnabled", false);
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading General properties file.");
}
}
private static void loadWorldProperties() {
try {
Properties wp = new Properties(new File(WORLD_CONFIG_FILE));
WORLD_GRAVEL_OCCURENCE = wp.getInt("GravelOccurence", 10,0,100);
WORLD_DIRT_OCCURENCE = wp.getInt("DirtOccurence", 10,0,100);
WORLD_ORE_COAL_OCCURENCE = wp.getInt("CoalOccurence", 20,0,100);
WORLD_ORE_IRON_OCCURENCE = wp.getInt("IronOccurence", 20,0,100);
WORLD_ORE_GOLD_OCCURENCE = wp.getInt("GoldOccurence", 2,0,100);
WORLD_ORE_DIAMOND_OCCURENCE = wp.getInt("DiamondOccurence", 1,0,100);
WORLD_ORE_REDSTONE_OCCURENCE = wp.getInt("RedstoneOccurence", 8,0,100);
WORLD_ORE_LAPISLAZULI_OCCURENCE = wp.getInt("LapisLazuliOccurence", 1,0,100);
WORLD_GRAVEL_SIZE = wp.getInt("GravelSize", 33,0,100)-1;
WORLD_DIRT_SIZE = wp.getInt("DirtSize", 33,0,100)-1;
WORLD_ORE_COAL_SIZE = wp.getInt("CoalSize", 17,0,100)-1;
WORLD_ORE_IRON_SIZE = wp.getInt("IronSize", 9,0,100)-1;
WORLD_ORE_GOLD_SIZE = wp.getInt("GoldSize", 9,0,100)-1;
WORLD_ORE_DIAMOND_SIZE = wp.getInt("DiamondSize", 8,0,100)-1;
WORLD_ORE_REDSTONE_SIZE = wp.getInt("RedstoneSize", 8,0,100)-1;
WORLD_ORE_LAPISLAZULI_SIZE = wp.getInt("LapisLazuliSize", 7,0,100)-1;
WORLD_DUNGEONS_OCCURENCE = wp.getInt("DungeonOccurence", 8,0,20);
WORLD_CLAY_OCCURENCE = wp.getInt("ClayOccurence", 10,0,100);
WORLD_CLAY_SIZE = wp.getInt("ClaySize", 32,0,100);
WORLD_CACTUS_OCCURENCE = wp.getInt("CactusOccurence", 10,0,100);
WORLD_PUMPKIN_OCCURENCE = wp.getInt("PumpkinOccurence", 1,0,32);
WORLD_REED_OCCURENCE = wp.getInt("ReedOccurence", 10,0,100);
WORLD_YELLOW_FLOWER_OCCURENCE = wp.getInt("YellowFlowerOccurence", 2,0,100);
WORLD_RED_FLOWER_OCCURENCE = wp.getInt("RedFlowerOccurence", 1,0,2);
WORLD_BROWN_MUSHROOM_OCCURENCE = wp.getInt("BrownMushroomOccurence", 1,0,4);
WORLD_RED_MUSHROOM_OCCURENCE = wp.getInt("RedMushroomOccurence", 1,0,8);
WORLD_NOISE_1 = wp.getInt("WorldNoise1", 16,1,50);
WORLD_NOISE_2 = wp.getInt("WorldNoise2", 16,1,50);
WORLD_NOISE_3 = wp.getInt("WorldNoise3", 8,1,50);
WORLD_NOISE_4 = wp.getInt("WorldNoise4", 4,1,50);
WORLD_NOISE_5 = wp.getInt("WorldNoise5", 4,1,50);
WORLD_NOISE_6 = wp.getInt("WorldNoise6", 10,1,50);
WORLD_NOISE_7 = wp.getInt("WorldNoise7", 16,1,50);
WORLD_NOISE_8 = wp.getInt("WorldNoise8", 8,1,50);
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading World properties file.");
}
}
private static void loadDatabaseProperties() {
try {
Properties dp = new Properties(new File(DATABASE_CONFIG_FILE));
DATABASE_MAX_CONNECTIONS = dp.getInt("MaximumDbConnections", 100);
DATABASE_MAX_IDLE_TIME = dp.getInt("MaximumDbIdleTime", 0);
DATABASE_DRIVER = dp.getProperty("Driver", "com.mysql.jdbc.Driver");
DATABASE_URL = dp.getProperty("URL", "jdbc:mysql://localhost/Minecraft");
DATABASE_LOGIN = dp.getProperty("Login", "root");
DATABASE_PASSWORD = dp.getProperty("Password", "");
DATABASE_USERS_TABLE = dp.getProperty("UsersTable", "users");
DATABASE_WARPS_TABLE = dp.getProperty("WarpsTable", "warps");
DATABASE_HOMES_TABLE = dp.getProperty("HomesTable", "homes");
DATABASE_KITS_TABLE = dp.getProperty("KitsTable", "kits");
DATABASE_KITS_DELAY_TABLE = dp.getProperty("KitsDelayTable","kits_delay");
DATABASE_ACCESS_TABLE = dp.getProperty("AccessTable", "accesslevels");
DATABASE_ACCESSGROUPS_TABLE = dp.getProperty("AccessGroupsTable", "accessgroups");
DATABASE_RESERVELIST_TABLE = dp.getProperty("ReserveListTable","reservelist");
DATABASE_WHITELIST_TABLE = dp.getProperty("WhiteListTable","whitelist");
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading Database properties file.");
}
}
private static void loadFlatFileProperties() {
try{
Properties fp = new Properties(new File(FLATFILE_CONFIG_FILE));
FLATFILE_USERS_FILE = fp.getProperty("UsersFile", "./flatfile/users.txt");
FLATFILE_WARPS_FILE = fp.getProperty("WarpsFile", "./flatfile/warps.txt");
FLATFILE_HOMES_DIRECTORY = fp.getProperty("HomesDirectory", "./flatfile/homes/");
FLATFILE_KITS_FILE = fp.getProperty("KitsFile", "./flatfile/kits.txt");
FLATFILE_KITS_DELAY_FILE = fp.getProperty("KitsDelayFile","./flatfile/kits_delay.txt");
FLATFILE_ACCESS_FILE = fp.getProperty("AccessFile", "./flatfile/accesslevels.txt");
FLATFILE_ACCESSGROUPS_FILE = fp.getProperty("AccessGroupsFile", "./flatfile/accessgroups.txt");
FLATFILE_WHITELIST_FILE = fp.getProperty("WhiteListFile","./flatfile/whitelist.txt");
FLATFILE_RESERVELIST_FILE = fp.getProperty("ReserveListFile","./flatfile/reservelist.txt");
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading World properties file.");
}
}
private static void loadExpertProperties() {
try {
Properties ep = new Properties(new File(EXPERT_CONFIG_FILE));
DATABASE_DELIMITER = ep.getProperty("DatabaseDelimiter", ",");
DATABASE_SEPERATOR = ep.getProperty("DatabaseSeperator", ";");
FULL_ACCESS_STRING = ep.getProperty("FullAccessString", "*");
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading Expert properties file.");
}
}
private static void loadHellProperties() {
try {
Properties hp = new Properties(new File(HELL_CONFIG_FILE));
HELL_ENABLED = hp.getBool("HellEnabled", true);
HELL_DIRECTORY = hp.getProperty("HellDirectory", "Nether");
HELL_EMULATE_GATES = hp.getBool("HellEmulateGates", false);
HELL_LIGHTSTONE_OCCURANCE = hp.getInt("HellLightstoneOccurance", 10, 0, 100);
HELL_RED_MUSHROOM_OCCURANCE = hp.getInt("HellRedMushroomOccurance", 1, 0, 100);
HELL_BROWN_MUSHROOM_OCCURANCE = hp.getInt("HellBrownMushroomOccurance", 1, 0, 100);
HELL_FIRE_OCCURANCE = hp.getInt("HellFireOccurance", 10, 0, 100);
HELL_RANDOM_LAVA_OCCURANCE = hp.getInt("HellRandomLavaOccurance", 10, 0, 100);
} catch (Exception e) {
e.printStackTrace();
log.warning("Config: Error loading Hell properties file.");
}
}
}