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.

147 lines
4.5 KiB

package ru.simsonic.rscPermissions.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
public class BukkitPluginConfiguration implements Settings
{
private final BukkitPluginMain plugin;
private String strDefaultGroup = "Default";
private String strMaintenanceMode = "";
private String language = "english";
private boolean bAlwaysInheritDefault = false;
private boolean bTreatAsteriskAsOP = true;
private boolean bUseMetrics = true;
private boolean bUseWorldGuard = true;
private boolean bUseResidence = true;
private int nAutoReloadDelayTicks = 20 * 900;
private int nRegionFinderGranularity = 1000;
public final int CurrentVersion = 3;
public BukkitPluginConfiguration(final BukkitPluginMain plugin)
{
this.plugin = plugin;
}
@Override
public void onLoad()
{
plugin.saveDefaultConfig();
final FileConfiguration config = plugin.getConfig();
switch(plugin.getConfig().getInt("internal.version", CurrentVersion))
{
case 1:
update_v1_to_v2(config);
BukkitPluginMain.consoleLog.info("[rscp] Configuration updated from v1 to v2.");
case 2:
update_v2_to_v3(config);
BukkitPluginMain.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("settings.auto-update", null);
config.set("settings.language", "english");
config.set("internal.version", 3);
}
@Override
public void readSettings()
{
plugin.reloadConfig();
final FileConfiguration config = plugin.getConfig();
language = config.getString("settings.language", "english");
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);
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);
}
@Override
public String getDefaultGroup()
{
return strDefaultGroup;
}
@Override
public boolean isInMaintenance()
{
return ! "".equals(strMaintenanceMode);
}
@Override
public String getMaintenanceMode()
{
return strMaintenanceMode;
}
@Override
public void setMaintenanceMode(String mode)
{
strMaintenanceMode = (mode == null) ? "" : mode;
plugin.getConfig().set("settings.maintenance-mode", strMaintenanceMode);
plugin.saveConfig();
}
@Override
public boolean isDefaultForever()
{
return bAlwaysInheritDefault;
}
@Override
public boolean isAsteriskOP()
{
return bTreatAsteriskAsOP;
}
@Override
public boolean isUseMetrics()
{
return bUseMetrics;
}
@Override
public boolean isUseWorldGuard()
{
return bUseWorldGuard;
}
@Override
public boolean isUseResidence()
{
return bUseResidence;
}
@Override
public int getAutoReloadDelayTicks()
{
return nAutoReloadDelayTicks;
}
@Override
public long getRegionFinderGranularity()
{
return nRegionFinderGranularity;
}
@Override
public String getLanguage()
{
return language;
}
@Override
public ConnectionParams getConnectionParams()
{
final FileConfiguration config = plugin.getConfig();
final ConnectionParams result = new ConnectionParams();
result.nodename = "rscp";
result.database = config.getString("settings.connection.database", "localhost:3306/minecraft");
result.username = config.getString("settings.connection.username", "user1");
result.password = config.getString("settings.connection.password", "pass1");
result.prefixes = config.getString("settings.connection.prefixes", "rscp_");
return result;
}
}