You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
5.5 KiB

package ru.simsonic.rscPermissions;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.bukkit.configuration.file.FileConfiguration;
public class Settings
{
private final MainPluginClass plugin;
private String strDefaultGroup = "Default";
private String strMaintenanceMode = "";
private boolean bAlwaysInheritDefault = false;
private boolean bTreatAsteriskAsOP = true;
private boolean bUseMetrics = true;
private boolean bUseUpdater = true;
private boolean bUseWorldGuard = true;
private boolean bUseResidence = true;
private int nAutoReloadDelayTicks = 20 * 900;
private int nRegionFinderGranularity = 1000;
public final int CurrentVersion = 3;
public static final String instantiator = "?";
public static final String separator = ".";
public static final String separatorRegExp = "\\.";
public Settings(final MainPluginClass plugin)
{
this.plugin = plugin;
}
public void onLoad()
{
plugin.saveDefaultConfig();
final FileConfiguration config = plugin.getConfig();
switch(plugin.getConfig().getInt("internal.version", CurrentVersion))
{
case 1:
update_v1_to_v2(config);
MainPluginClass.consoleLog.info("[rscp] Configuration updated from v1 to v2.");
case 2:
update_v2_to_v3(config);
MainPluginClass.consoleLog.info("[rscp] Configuration updated from v2 to v3.");
case CurrentVersion: // Current version
plugin.saveConfig();
break;
}
}
private void update_v1_to_v2(FileConfiguration config)
{
config.set("settings.enable-bans", null);
config.set("settings.integration.worldguard", true);
config.set("settings.integration.residence", true);
config.set("internal.version", 2);
}
private void update_v2_to_v3(FileConfiguration config)
{
config.set("settings.enable-rewards", null);
config.set("internal.version", 3);
}
public void readSettings()
{
plugin.reloadConfig();
final FileConfiguration config = plugin.getConfig();
strDefaultGroup = config.getString ("settings.default-group", "Default");
strMaintenanceMode = config.getString ("settings.maintenance-mode", "");
bAlwaysInheritDefault = config.getBoolean("always-inherit-default-group", false);
bTreatAsteriskAsOP = config.getBoolean("settings.treat-asterisk-as-op", true);
bUseMetrics = config.getBoolean("settings.use-metrics", true);
bUseUpdater = config.getBoolean("settings.auto-update", true);
bUseWorldGuard = config.getBoolean("settings.integration.worldguard", true);
bUseResidence = config.getBoolean("settings.integration.residence", true);
nAutoReloadDelayTicks = config.getInt ("settings.auto-reload-delay-sec", 900) * 20;
nRegionFinderGranularity = config.getInt ("settings.region-finder-thread-granularity-msec", 1000);
}
public String getDefaultGroup()
{
return strDefaultGroup;
}
public boolean isInMaintenance()
{
return !"".equals(strMaintenanceMode);
}
public String getMaintenanceMode()
{
return strMaintenanceMode;
}
public void setMaintenanceMode(String mMode)
{
strMaintenanceMode = (mMode == null) ? "" : mMode;
plugin.getConfig().set("settings.maintenance-mode", strMaintenanceMode);
plugin.saveConfig();
}
public boolean isDefaultForever()
{
return bAlwaysInheritDefault;
}
public boolean isAsteriskOP()
{
return bTreatAsteriskAsOP;
}
public boolean isUseMetrics()
{
return bUseMetrics;
}
public boolean isUpdatable()
{
return bUseUpdater;
}
public boolean isUseWorldGuard()
{
return bUseWorldGuard;
}
public boolean isUseResidence()
{
return bUseResidence;
}
public int getAutoReloadDelayTicks()
{
return nAutoReloadDelayTicks;
}
public long getRegionFinderGranularity()
{
return nRegionFinderGranularity;
}
public ConnectionHelper getConnectionChain()
{
List<Map<?, ?>> configServers = plugin.getConfig().getMapList("servers");
List<HashMap<String, String>> serverlist = new ArrayList<>();
for(Iterator<Map<?, ?>> it = configServers.iterator(); it.hasNext();)
{
Map<String, String> server = (Map<String, String>) it.next();
HashMap<String, String> nodeinfo = new HashMap<>();
String nodename = (String) server.get("nodename");
String database = (String) server.get("database");
String username = (String) server.get("username");
String password = (String) server.get("password");
String prefixes = (String) server.get("prefixes");
String workmode = (String) server.get("workmode");
if(nodename != null && !"".equals(nodename))
{
nodeinfo.put("nodename", nodename);
nodeinfo.put("database", (database != null) ? database : "localhost:3306/minecraft");
nodeinfo.put("username", (username != null) ? username : "user");
nodeinfo.put("password", (password != null) ? password : "pass");
nodeinfo.put("prefixes", (prefixes != null) ? prefixes : "rscp_");
nodeinfo.put("workmode", (workmode != null) ? workmode : "none");
serverlist.add(nodeinfo);
}
}
Collections.reverse(serverlist);
ConnectionHelper connPrev = null;
for(HashMap<String, String> server : serverlist)
{
ConnectionHelper conn = new ConnectionHelper(plugin, connPrev);
conn.Initialize(
server.get("nodename"), server.get("database"),
server.get("username"), server.get("password"),
server.get("workmode"), server.get("prefixes"));
connPrev = conn;
}
return connPrev;
}
}