diff --git a/pom.xml b/pom.xml
index c037b8e..a6b9524 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
ru.simsonic
rscPermissions
- 0.9.9a
+ 0.9.10a
jar
rscPermissions
diff --git a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
index c4a5c6b..a6cb016 100644
--- a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
+++ b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
@@ -4,7 +4,7 @@ import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
public interface Settings
{
- public static final String chatPrefix = "{YELLOW}[rscp] {GOLD}";
+ public static final String chatPrefix = "{GOLD}[rscp] {_LS}";
public static final String separator = ".";
public static final String separatorRegExp = "\\.";
public static final String instantiator = "?";
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
index 80104e7..8a379bc 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
@@ -200,6 +200,13 @@ public class BukkitPermissionManager extends RestartableThread
result.add(socketAddress.getAddress().getHostAddress());
return result.toArray(new String[result.size()]);
}
+ public Set getDebuggers()
+ {
+ synchronized(debug)
+ {
+ return new HashSet<>(debug);
+ }
+ }
public boolean isDebugging(Player target)
{
synchronized(debug)
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
index 24b3889..612c91a 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
@@ -1,17 +1,14 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
-import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Map;
+import java.util.Set;
import java.util.logging.Level;
import org.bukkit.command.CommandSender;
-import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Backends.DatabaseContents;
-import ru.simsonic.rscPermissions.Bukkit.PermissionsEx_YAML;
import ru.simsonic.rscPermissions.BukkitPluginMain;
-import ru.simsonic.rscPermissions.Engine.Phrases;
+import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
@@ -19,15 +16,26 @@ import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitCommands
{
private final BukkitPluginMain rscp;
- public BukkitCommands(final BukkitPluginMain rscp)
+ private final CommandLock cmdLock;
+ private final CommandUnlock cmdUnlock;
+ private final CommandFetch cmdFetch;
+ private final CommandDebug cmdDebug;
+ private final CommandReload cmdReload;
+ public BukkitCommands(final BukkitPluginMain plugin)
{
- this.rscp = rscp;
+ this.rscp = plugin;
+ cmdLock = new CommandLock(rscp);
+ cmdUnlock = new CommandUnlock(rscp);
+ cmdFetch = new CommandFetch(rscp);
+ cmdDebug = new CommandDebug(rscp);
+ cmdReload = new CommandReload(rscp);
}
public final RestartableThread threadFetchDatabaseContents = new RestartableThread()
{
@Override
public void run()
{
+ final long queryStartTime = System.currentTimeMillis();
Thread.currentThread().setName("rscp:DatabaseFetchingThread");
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
if(rscp.connection.isConnected() == false)
@@ -71,6 +79,19 @@ public class BukkitCommands
}
} catch(InterruptedException ex) {
}
+ final long queryTime = System.currentTimeMillis() - queryStartTime;
+ final Set debuggers = rscp.permissionManager.getDebuggers();
+ if(!debuggers.isEmpty())
+ rscp.getServer().getScheduler().runTask(rscp, new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ for(Player debugger : debuggers)
+ debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
+ + "Database has been fetched in " + queryTime + " milliseconds."));
+ }
+ });
} else
BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database.");
}
@@ -130,56 +151,49 @@ public class BukkitCommands
}
public void onCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{
- final ArrayList help = new ArrayList<>();
+ final ArrayList help = new ArrayList<>(64);
+ help.add(rscp.getDescription().getName() + " v" + rscp.getDescription().getVersion()
+ + " © " + rscp.getDescription().getAuthors().get(0));
+ help.add("{_DS}Perfect permission manager for multiserver environments");
+ help.add("{_LB}{_U}" + rscp.getDescription().getWebsite());
+ if(args.length == 0)
+ throw new CommandAnswerException(help);
+ help.add("{_LS}Current serverId is \'{_LG}" + rscp.getServer().getServerId() + "{_LS}\' (server.properties)");
+ help.add("Usage of available commands:");
if(sender.hasPermission("rscp.admin"))
- help.add("/rscp (user|group) {_LS}-- PermissionsEx-like admin commands");
+ {
+ help.add("{_YL}/rscp user lp {_LS}-- list user's permissions");
+ help.add("{_YL}/rscp user lg {_LS}-- list user's groups");
+ help.add("{_YL}/rscp user prefix {_LS}-- show user's prefix");
+ help.add("{_YL}/rscp user suffix {_LS}-- show user's suffix");
+ }
if(sender.hasPermission("rscp.admin.lock"))
- help.add("/rscp (lock [mode]|unlock) {_LS}-- maintenance mode control");
- if(sender.hasPermission("rscp.admin"))
{
- help.add("/rscp (examplerows|import) {_LS}-- possible useful things");
- help.add("/rscp (debug|fetch|reload) {_LS}-- admin stuff");
+ help.add("{_YL}/rscp lock [mode] {_LS}-- enable specific maintenance mode");
+ help.add("{_YL}/rscp unlock {_LS}-- disable maintenance mode");
}
- help.add("/rscp (help) {_LS}-- show these notes");
- if(help.size() > 0)
- help.add(0, "{MAGENTA}Usage:");
- help.add(0, rscp.getDescription().getName() + " v" + rscp.getDescription().getVersion());
- help.add(1, "Perfect Superperms manager for multiserver environments");
if(sender.hasPermission("rscp.admin"))
- help.add(2, "{_DS}Current serverId is \'{_LS}" + rscp.getServer().getServerId() + "{_DS}\' (server.properties)");
- help.add("{_LG}" + rscp.getDescription().getWebsite());
- if(args.length == 0)
- throw new CommandAnswerException(help);
+ {
+ help.add("{_YL}/rscp examplerows {_LS}-- insert some fake rows into database");
+ help.add("{_YL}/rscp import pex-sql {_LS}-- import data from pex's database (in the same schema)");
+ help.add("{_YL}/rscp debug [value] {_LS}-- show/hide some debugging info to you");
+ help.add("{_YL}/rscp fetch {_LS}-- reread all permissions from database");
+ help.add("{_YL}/rscp reload {_LS}-- reload config and restart the plugin");
+ }
+ help.add("{_YL}/rscp [help] {_LS}-- show this help page");
switch(args[0].toLowerCase())
{
case "user":
onCommandHubUser(sender, args);
return;
- case "group":
- onCommandHubGroup(sender, args);
- return;
case "lock":
/* rscp lock [mMode] */
- if(sender.hasPermission("rscp.lock"))
- {
- final String mMode = (args.length >= 2) ? args[1] : "default";
- String mmon = "Maintenance mode enabled";
- mmon = rscp.getConfig().getString("language.maintenance.locked.default.mmon", mmon);
- mmon = rscp.getConfig().getString("language.maintenance.locked." + mMode + ".mmon", mmon);
- rscp.bukkitListener.setMaintenanceMode(mMode);
- throw new CommandAnswerException(mmon);
- }
+ cmdLock.execute(sender, args);
return;
case "unlock":
/* rscp unlock */
- if(sender.hasPermission("rscp.lock"))
- {
- String mmoff = "Maintenance mode disabled";
- mmoff = rscp.getConfig().getString("language.maintenance.unlocked", mmoff);
- rscp.bukkitListener.setMaintenanceMode(null);
- throw new CommandAnswerException(mmoff);
- }
- break;
+ cmdUnlock.execute(sender);
+ return;
case "examplerows":
/* rscp examplerows */
if(sender.hasPermission("rscp.admin"))
@@ -195,213 +209,108 @@ public class BukkitCommands
if(args.length > 1)
switch(args[1].toLowerCase())
{
- case "pex-yaml":
- if(args.length == 2)
- break;
- // TO DO HERE
- PermissionsEx_YAML importer_pex = new PermissionsEx_YAML(
- new File(rscp.getDataFolder(), args[2]));
- threadFetchDatabaseContents.startDeamon();
- throw new CommandAnswerException(new String[]
- {
- "Data has been imported successfully!",
- /*
- "Entities: {MAGENTA}" + Integer.toString(importer_pex.getEntities().length),
- "Permissions: {MAGENTA}" + Integer.toString(importer_pex.getPermissions().length),
- "Inheritance: {MAGENTA}" + Integer.toString(importer_pex.getInheritance().length),
- */
- "{_DR}{_B}IT IS FAKE :p - all this is undone yet!",
- });
case "pex-sql":
threadMigrateFromPExSQL(sender);
throw new CommandAnswerException("Trying to import PEX database into rscPermissions...");
}
throw new CommandAnswerException(new String[]
{
- "Usage: {GOLD}/rscp import [options]",
+ "Usage: {_YL}/rscp import [options]",
"Available importers:",
- "{_LR}pex-yaml{_LS} (PermissionsEx)",
- "{_LG}pex-sql{_LS} (PermissionsEx)",
+ "{_LG}pex-sql {_LS}-- (PermissionsEx SQL Backend)",
});
}
return;
case "fetch":
/* rscp fetch */
- if(sender.hasPermission("rscp.admin.reload"))
- {
- threadFetchDatabaseContents.startDeamon();
- throw new CommandAnswerException(Phrases.MYSQL_FETCHED.toString());
- }
+ cmdFetch.execute(sender);
+ return;
+ case "debug":
+ /* rscp debug [|toggle] */
+ cmdDebug.execute(sender, args);
return;
case "reload":
/* rscp reload */
- if(sender.hasPermission("rscp.admin.reload"))
- {
- rscp.getServer().getPluginManager().disablePlugin(rscp);
- rscp.getServer().getPluginManager().enablePlugin(rscp);
- throw new CommandAnswerException(Phrases.PLUGIN_RELOADED.toString());
- }
- return;
- case "debug":
- /* rscp debug [yes|on|no|off|toggle] */
- if(sender instanceof ConsoleCommandSender)
- throw new CommandAnswerException(Phrases.PLUGIN_PLAYER_ONLY.toString());
- if(sender.hasPermission("rscp.admin"))
- {
- final Player player = (Player)sender;
- boolean isDebugging = rscp.permissionManager.isDebugging(player);
- if(args.length >= 2)
- switch(args[1].toLowerCase())
- {
- case "yes":
- case "on":
- isDebugging = true;
- break;
- case "no":
- case "off":
- isDebugging = false;
- break;
- case "toggle":
- isDebugging = !isDebugging;
- break;
- default:
- throw new CommandAnswerException(help);
- }
- else
- isDebugging = !isDebugging;
- rscp.permissionManager.setDebugging(player, isDebugging);
- throw new CommandAnswerException(isDebugging ? Phrases.DEBUG_ON.toString() : Phrases.DEBUG_OFF.toString());
- }
+ cmdReload.execute(sender);
return;
case "help":
default:
- throw new CommandAnswerException(help);
+ break;
}
+ throw new CommandAnswerException(help);
}
private void onCommandHubUser(CommandSender sender, String[] args) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
- final String[] help = new String[]
- {
- "rscPermissions command hub (user section).",
- "{MAGENTA}Usage:",
- "/rscp user list permissions",
- "/rscp user list groups",
- // "/rscp user list ranks",
- "/rscp user prefix [prefix]",
- "/rscp user suffix [suffix]",
- };
if(args.length < 3)
- throw new CommandAnswerException(help);
+ return;
final Player player = rscp.bridgeForBukkit.findPlayer(args[1]);
- if(player == null)
- throw new CommandAnswerException("Player should be online");
- final ArrayList list = new ArrayList<>();
+ if(player != null)
+ args[1] = player.getName();
+ final ResolutionResult result = (player != null)
+ ? rscp.permissionManager.getResult(player)
+ : rscp.permissionManager.getResult(args[1]);
+ final ArrayList answer = new ArrayList<>();
switch(args[2].toLowerCase())
{
- case "list":
- if(args.length < 4)
- throw new CommandAnswerException(help);
- switch(args[3].toLowerCase())
- {
- case "permissions":
- list.add("{MAGENTA}Permission list for {_YL}" + player.getName());
- final Map pv = rscp.permissionManager.listPlayerPermissions(player);
- final ArrayList sorted_keys = new ArrayList<>(pv.keySet());
- Collections.sort(sorted_keys);
- for(String perm : sorted_keys)
- if(pv.containsKey(perm))
- list.add((pv.get(perm) ? "{_LG}" : "{_LR}") + perm);
- throw new CommandAnswerException(list);
- case "groups":
- list.add("{MAGENTA}Group list for {_YL}" + player.getName() + "{MAGENTA}:");
- for(String group : rscp.bridgeForBukkit.getPermission().getPlayerGroups(player))
- list.add("{_LG}" + group);
- throw new CommandAnswerException(list);
- }
- throw new CommandAnswerException(list);
+ case "lp":
+ answer.add("Permission list for user {_YL}" + args[1] + "{_LS}:");
+ final ArrayList sorted_keys = new ArrayList<>(result.permissions.keySet());
+ Collections.sort(sorted_keys);
+ for(String perm : sorted_keys)
+ answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm);
+ throw new CommandAnswerException(answer);
+ case "lg":
+ answer.add("Group list for user {_YL}" + args[1] + "{_LS}:");
+ for(String group : result.groups)
+ answer.add("{_LG}" + group);
+ throw new CommandAnswerException(answer);
+ case "p":
case "prefix":
- if(args.length > 3)
- {
- /*
- plugin.API.setPlayerPrefix(null, player.getName(), args[3]);
- list.add("{MAGENTA}Prefix for user {_YL}" + player.getName() +
- " {MAGENTA}has been set to \"{_R}" + plugin.cache.userGetPrefix(player.getName()) + "{MAGENTA}\".");
- */
- } else {
- /*
- list.add("{MAGENTA}Prefix for user {_YL}" + player.getName() +
- " {MAGENTA}is \"{_R}" + plugin.cache.userGetPrefix(player.getName()) + "{MAGENTA}\".");
- */
- }
- throw new CommandAnswerException(list);
+ answer.add("Calculated prefix for user {_YL}" + args[1] + "{_LS} is:");
+ answer.add("{_R}\"" + result.prefix + "{_R}\"");
+ throw new CommandAnswerException(answer);
+ case "s":
case "suffix":
- if(args.length > 3)
- {
- /*
- plugin.API.setPlayerSuffix(null, player.getName(), args[3]);
- list.add("{MAGENTA}Suffix for user {_YL}" + player.getName() +
- " {MAGENTA}has been set to \"{_R}" + plugin.cache.userGetSuffix(player.getName()) + "{MAGENTA}\".");
- */
- } else {
- /*
- list.add("{MAGENTA}Suffix for user {_YL}" + player.getName() +
- " {MAGENTA}is \"{_R}" + plugin.cache.userGetSuffix(player.getName()) + "{MAGENTA}\".");
- */
- }
- throw new CommandAnswerException(list);
+ answer.add("Calculated suffix for user {_YL}" + args[1] + "{_LS} is:");
+ answer.add("{_R}\"" + result.suffix + "{_R}\"");
+ throw new CommandAnswerException(answer);
}
}
- private void onCommandHubGroup(CommandSender sender, String[] args) throws CommandAnswerException
+ public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{
- if(sender.hasPermission("rscp.admin") == false)
- throw new CommandAnswerException("Not enough permissions.");
- final String[] help = new String[]
+ if(arg == null || "".equals(arg))
+ throw new IllegalArgumentException("Argument is null or empty.");
+ switch(arg.toLowerCase())
{
- "rscPermissions command hub (group section).",
- "{MAGENTA}Usage:",
- // "/rscp group list permissions",
- // "/rscp group list ranks",
- "/rscp group prefix [prefix]",
- "/rscp group suffix [suffix]",
- };
- if(args.length < 3)
- throw new CommandAnswerException(help);
- final String group = args[1];
- final ArrayList list = new ArrayList<>();
- switch(args[2].toLowerCase())
+ case "enable":
+ case "true":
+ case "yes":
+ case "on":
+ return true;
+ case "disable":
+ case "false":
+ case "no":
+ case "off":
+ return false;
+ case "toggle":
+ if(prevForToggle != null)
+ return !prevForToggle;
+ else
+ throw new IllegalArgumentException("Previous value is unknown.");
+ }
+ throw new IllegalArgumentException("Cannot understand boolean value.");
+ }
+ public static int argumentToInteger(String arg) throws IllegalArgumentException
+ {
+ if(arg == null || "".equals(arg))
+ throw new IllegalArgumentException("Argument is null or empty.");
+ try
{
- case "prefix":
- if(args.length > 3)
- {
- /*
- plugin.API.setGroupPrefix(null, group, args[3]);
- list.add("{MAGENTA}Prefix for group {_YL}" + group +
- " {MAGENTA}has been set to \"{_R}" + plugin.cache.groupGetPrefix(group) + "{MAGENTA}\".");
- */
- } else {
- /*
- list.add("{MAGENTA}Prefix for group {_YL}" + group +
- " {MAGENTA}is \"{_R}" + plugin.cache.groupGetPrefix(group) + "{MAGENTA}\".");
- */
- }
- throw new CommandAnswerException(list);
- case "suffix":
- if(args.length > 3)
- {
- /*
- plugin.API.setGroupSuffix(null, group, args[3]);
- list.add("{MAGENTA}Suffix for group {_YL}" + group +
- " {MAGENTA}has been set to \"{_R}" + plugin.cache.groupGetSuffix(group) + "{MAGENTA}\".");
- */
- } else {
- /*
- list.add("{MAGENTA}Suffix for group {_YL}" + group +
- " {MAGENTA}is \"{_R}" + plugin.cache.groupGetSuffix(group) + "{MAGENTA}\".");
- */
- }
- throw new CommandAnswerException(list);
+ return Integer.parseInt(arg);
+ } catch(NumberFormatException ex) {
+ throw new IllegalArgumentException(ex.getMessage());
}
}
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
new file mode 100644
index 0000000..f28b4b5
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
@@ -0,0 +1,38 @@
+package ru.simsonic.rscPermissions.Bukkit.Commands;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.entity.Player;
+import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.Engine.Phrases;
+import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
+
+public class CommandDebug
+{
+ private final BukkitPluginMain rscp;
+ CommandDebug(BukkitPluginMain plugin)
+ {
+ this.rscp = plugin;
+ }
+ public void execute(CommandSender sender, String args[]) throws CommandAnswerException
+ {
+ if(sender instanceof ConsoleCommandSender)
+ throw new CommandAnswerException(Phrases.PLUGIN_PLAYER_ONLY.toString());
+ if(sender.hasPermission("rscp.admin"))
+ {
+ final Player player = (Player)sender;
+ boolean isDebugging = rscp.permissionManager.isDebugging(player);
+ if(args.length >= 2)
+ {
+ try
+ {
+ isDebugging = BukkitCommands.argumentToBoolean(args[1], isDebugging);
+ } catch(IllegalArgumentException ex) {
+ throw new CommandAnswerException("{_LR}" + ex.getMessage());
+ }
+ } else
+ isDebugging = !isDebugging;
+ rscp.permissionManager.setDebugging(player, isDebugging);
+ throw new CommandAnswerException(isDebugging ? Phrases.DEBUG_ON.toString() : Phrases.DEBUG_OFF.toString());
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java
new file mode 100644
index 0000000..59c07dd
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java
@@ -0,0 +1,22 @@
+package ru.simsonic.rscPermissions.Bukkit.Commands;
+import org.bukkit.command.CommandSender;
+import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.Engine.Phrases;
+import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
+
+public class CommandFetch
+{
+ private final BukkitPluginMain rscp;
+ CommandFetch(BukkitPluginMain plugin)
+ {
+ this.rscp = plugin;
+ }
+ public void execute(CommandSender sender) throws CommandAnswerException
+ {
+ if(sender.hasPermission("rscp.admin.reload"))
+ {
+ rscp.commandHelper.threadFetchDatabaseContents.startDeamon();
+ throw new CommandAnswerException(Phrases.MYSQL_FETCHED.toString());
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java
new file mode 100644
index 0000000..0ff33a6
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java
@@ -0,0 +1,25 @@
+package ru.simsonic.rscPermissions.Bukkit.Commands;
+import org.bukkit.command.CommandSender;
+import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
+
+public class CommandLock
+{
+ private final BukkitPluginMain rscp;
+ CommandLock(BukkitPluginMain plugin)
+ {
+ this.rscp = plugin;
+ }
+ public void execute(CommandSender sender, String args[]) throws CommandAnswerException
+ {
+ if(sender.hasPermission("rscp.lock"))
+ {
+ final String mMode = (args.length >= 2) ? args[1] : "default";
+ String mmon = "Maintenance mode enabled";
+ mmon = rscp.getConfig().getString("language.maintenance.locked.default.mmon", mmon);
+ mmon = rscp.getConfig().getString("language.maintenance.locked." + mMode + ".mmon", mmon);
+ rscp.bukkitListener.setMaintenanceMode(mMode);
+ throw new CommandAnswerException(mmon);
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java
new file mode 100644
index 0000000..f97a688
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java
@@ -0,0 +1,23 @@
+package ru.simsonic.rscPermissions.Bukkit.Commands;
+import org.bukkit.command.CommandSender;
+import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.Engine.Phrases;
+import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
+
+public class CommandReload
+{
+ private final BukkitPluginMain rscp;
+ CommandReload(BukkitPluginMain plugin)
+ {
+ this.rscp = plugin;
+ }
+ public void execute(CommandSender sender) throws CommandAnswerException
+ {
+ if(sender.hasPermission("rscp.admin.reload"))
+ {
+ rscp.getServer().getPluginManager().disablePlugin(rscp);
+ rscp.getServer().getPluginManager().enablePlugin(rscp);
+ throw new CommandAnswerException(Phrases.PLUGIN_RELOADED.toString());
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java
new file mode 100644
index 0000000..71636a3
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java
@@ -0,0 +1,23 @@
+package ru.simsonic.rscPermissions.Bukkit.Commands;
+import org.bukkit.command.CommandSender;
+import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
+
+public class CommandUnlock
+{
+ private final BukkitPluginMain rscp;
+ CommandUnlock(BukkitPluginMain plugin)
+ {
+ this.rscp = plugin;
+ }
+ public void execute(CommandSender sender) throws CommandAnswerException
+ {
+ if(sender.hasPermission("rscp.lock"))
+ {
+ String mmoff = "Maintenance mode disabled";
+ mmoff = rscp.getConfig().getString("language.maintenance.unlocked", mmoff);
+ rscp.bukkitListener.setMaintenanceMode(null);
+ throw new CommandAnswerException(mmoff);
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/PermissionsEx_YAML.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/PermissionsEx_YAML.java
deleted file mode 100644
index deb3d70..0000000
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/PermissionsEx_YAML.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package ru.simsonic.rscPermissions.Bukkit;
-import java.io.File;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
-
-public final class PermissionsEx_YAML
-{
- public PermissionsEx_YAML(File permissionsYml) throws CommandAnswerException
- {
- try
- {
- final FileConfiguration config = YamlConfiguration.loadConfiguration(permissionsYml);
- final ConfigurationSection csGroups = config.getConfigurationSection("groups");
- final ConfigurationSection csUsers = config.getConfigurationSection("users");
- final ConfigurationSection csWorlds = config.getConfigurationSection("worlds");
- } catch(NullPointerException ex) {
- }
- }
-}
diff --git a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
index 822ab06..143bfe6 100644
--- a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
+++ b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
@@ -6,7 +6,7 @@ import org.spongepowered.api.event.state.ServerStoppedEvent;
import org.spongepowered.api.event.state.ServerStoppingEvent;
import org.spongepowered.api.plugin.Plugin;
-@Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.9.9b")
+@Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.9b")
public class SpongePluginMain
{
public void onServerStart(ServerAboutToStartEvent event)