16 changed files with 231 additions and 187 deletions
@ -0,0 +1,175 @@ |
|||||||
|
package ru.simsonic.rscPermissions.Bukkit; |
||||||
|
import ru.simsonic.rscPermissions.Settings; |
||||||
|
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; |
||||||
|
import ru.simsonic.rscPermissions.ConnectionHelper; |
||||||
|
import ru.simsonic.rscPermissions.MainPluginClass; |
||||||
|
|
||||||
|
public class BukkitPluginConfiguration implements 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 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 BukkitPluginConfiguration(final MainPluginClass 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); |
||||||
|
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("settings.auto-update", null); |
||||||
|
config.set("internal.version", 3); |
||||||
|
} |
||||||
|
@Override |
||||||
|
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); |
||||||
|
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 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; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
package ru.simsonic.rscPermissions; |
||||||
|
|
||||||
|
public class RegionUpdateObserver |
||||||
|
{ |
||||||
|
|
||||||
|
} |
@ -1,158 +1,19 @@ |
|||||||
package ru.simsonic.rscPermissions; |
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 |
public interface Settings |
||||||
{ |
{ |
||||||
private final MainPluginClass plugin; |
public void onLoad(); |
||||||
private String strDefaultGroup = "Default"; |
public void readSettings(); |
||||||
private String strMaintenanceMode = ""; |
public String getDefaultGroup(); |
||||||
private boolean bAlwaysInheritDefault = false; |
public boolean isDefaultForever(); |
||||||
private boolean bTreatAsteriskAsOP = true; |
public boolean isAsteriskOP(); |
||||||
private boolean bUseMetrics = true; |
public boolean isInMaintenance(); |
||||||
private boolean bUseWorldGuard = true; |
public String getMaintenanceMode(); |
||||||
private boolean bUseResidence = true; |
public void setMaintenanceMode(String mode); |
||||||
private int nAutoReloadDelayTicks = 20 * 900; |
public boolean isUseResidence(); |
||||||
private int nRegionFinderGranularity = 1000; |
public boolean isUseWorldGuard(); |
||||||
public final int CurrentVersion = 3; |
public long getRegionFinderGranularity(); |
||||||
public static final String instantiator = "?"; |
public ConnectionHelper getConnectionChain(); |
||||||
public static final String separator = "."; |
public int getAutoReloadDelayTicks(); |
||||||
public static final String separatorRegExp = "\\."; |
public boolean isUseMetrics(); |
||||||
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("settings.auto-update", 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); |
|
||||||
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 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; |
|
||||||
} |
|
||||||
} |
} |
Loading…
Reference in new issue