diff --git a/pom.xml b/pom.xml
index 9535ecd..278d7db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
ru.simsonic
rscPermissions
- 0.10.0b-SNAPSHOT
+ 0.10.1b-SNAPSHOT
jar
rscPermissions
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
index 542933f..ebf1d81 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
@@ -1,7 +1,5 @@
package ru.simsonic.rscPermissions.Bukkit;
-import java.net.InetSocketAddress;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -145,7 +143,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolveOfflinePlayer(OfflinePlayer offline)
{
final ResolutionParams params = new ResolutionParams();
- params.applicableIdentifiers = getOfflinePlayerIdentifiers(offline);
+ params.applicableIdentifiers = BukkitUtilities.getOfflinePlayerIdentifiers(offline);
final ResolutionResult result = rscp.internalCache.resolvePlayer(params);
for(String id : params.applicableIdentifiers)
resolutions.put(id, result);
@@ -155,7 +153,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolvePlayer(Player player)
{
final ResolutionParams params = new ResolutionParams();
- params.applicableIdentifiers = getPlayerIdentifiers(player);
+ params.applicableIdentifiers = BukkitUtilities.getPlayerIdentifiers(player);
if(rscp.regionListProvider != null)
{
Set regionSet = rscp.regionListProvider.getPlayerRegions(player);
@@ -172,47 +170,14 @@ public class BukkitPermissionManager extends RestartableThread
}
public synchronized void forgetOfflinePlayer(OfflinePlayer offline)
{
- for(String id : getOfflinePlayerIdentifiers(offline))
+ for(String id : BukkitUtilities.getOfflinePlayerIdentifiers(offline))
resolutions.remove(id);
}
public synchronized void forgetPlayer(Player player)
{
- for(String id : getPlayerIdentifiers(player))
+ for(String id : BukkitUtilities.getPlayerIdentifiers(player))
resolutions.remove(id);
}
- private static String[] getOfflinePlayerIdentifiers(OfflinePlayer offline)
- {
- final ArrayList result = new ArrayList<>();
- try
- {
- result.add(offline.getName());
- } catch(RuntimeException | NoSuchMethodError ex) {
- }
- try
- {
- result.add(offline.getUniqueId().toString().toLowerCase());
- } catch(RuntimeException | NoSuchMethodError ex) {
- }
- return result.toArray(new String[result.size()]);
- }
- private static String[] getPlayerIdentifiers(Player player)
- {
- final ArrayList result = new ArrayList<>();
- try
- {
- result.add(player.getName());
- } catch(RuntimeException | NoSuchMethodError ex) {
- }
- try
- {
- result.add(player.getUniqueId().toString().toLowerCase());
- } catch(RuntimeException | NoSuchMethodError ex) {
- }
- final InetSocketAddress socketAddress = player.getAddress();
- if(socketAddress != null)
- result.add(socketAddress.getAddress().getHostAddress());
- return result.toArray(new String[result.size()]);
- }
public Set getDebuggers()
{
synchronized(debug)
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitUtilities.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitUtilities.java
new file mode 100644
index 0000000..0dd1c8a
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitUtilities.java
@@ -0,0 +1,48 @@
+package ru.simsonic.rscPermissions.Bukkit;
+
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+
+public class BukkitUtilities
+{
+ public static String[] getOfflinePlayerIdentifiers(OfflinePlayer offline)
+ {
+ final ArrayList result = new ArrayList<>();
+ // SERVERS BEFORE UUIDs
+ try
+ {
+ result.add(offline.getName());
+ } catch(RuntimeException | NoSuchMethodError ex) {
+ }
+ // SERVERS WITH UUIDs
+ try
+ {
+ result.add(offline.getUniqueId().toString().toLowerCase());
+ } catch(RuntimeException | NoSuchMethodError ex) {
+ }
+ return result.toArray(new String[result.size()]);
+ }
+ public static String[] getPlayerIdentifiers(Player player)
+ {
+ // SERVERS BEFORE UUIDs
+ final ArrayList result = new ArrayList<>();
+ try
+ {
+ result.add(player.getName());
+ } catch(RuntimeException | NoSuchMethodError ex) {
+ }
+ // SERVERS WITH UUIDs
+ try
+ {
+ result.add(player.getUniqueId().toString().toLowerCase());
+ } catch(RuntimeException | NoSuchMethodError ex) {
+ }
+ // ONLINE IP CONNECTION
+ final InetSocketAddress socketAddress = player.getAddress();
+ if(socketAddress != null)
+ result.add(socketAddress.getAddress().getHostAddress());
+ return result.toArray(new String[result.size()]);
+ }
+}
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 be60b39..9cde41c 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
@@ -177,39 +177,4 @@ public class BukkitCommands
}
throw new CommandAnswerException(help);
}
- public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
- {
- if(arg == null || "".equals(arg))
- throw new IllegalArgumentException("Argument is null or empty.");
- switch(arg.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
- {
- 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
index 84591ee..b79af2c 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
@@ -3,6 +3,7 @@ package ru.simsonic.rscPermissions.Bukkit.Commands;
import org.bukkit.command.CommandSender;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.Engine.CommandUtilities;
import ru.simsonic.rscPermissions.Engine.Phrases;
public class CommandDebug
@@ -21,7 +22,7 @@ public class CommandDebug
{
try
{
- isDebugging = BukkitCommands.argumentToBoolean(args[1], isDebugging);
+ isDebugging = CommandUtilities.argumentToBoolean(args[1], isDebugging);
} catch(IllegalArgumentException ex) {
throw new CommandAnswerException("{_LR}" + ex.getMessage());
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
index 263ad0f..7a5501a 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
@@ -6,6 +6,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.Engine.Backends.DatabaseTransaction;
import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
@@ -18,6 +19,11 @@ public class CommandUser
}
public void onUserCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{
+ /*
+ /rscp - command
+ user - 0
+ - 1 // -u; --by-uuid / -n (--by-name)
+ */
if(sender.hasPermission("rscp.admin"))
{
if(args.length < 3)
@@ -28,16 +34,14 @@ public class CommandUser
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
- if(Matchers.isCorrectDashlessUUID(args[1]))
- args[1] = Matchers.uuidAddDashes(args[1]);
switch(args[2].toLowerCase())
{
- case "p":
case "prefix":
+ case "p":
viewPrefix(result, args[1]);
break;
- case "s":
case "suffix":
+ case "s":
viewSuffix(result, args[1]);
break;
case "listpermissions":
@@ -66,6 +70,8 @@ public class CommandUser
}
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
+ if(Matchers.isCorrectDashlessUUID(user))
+ user = Matchers.uuidAddDashes(user);
final ArrayList answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
@@ -73,6 +79,8 @@ public class CommandUser
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
+ if(Matchers.isCorrectDashlessUUID(user))
+ user = Matchers.uuidAddDashes(user);
final ArrayList answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
@@ -80,6 +88,8 @@ public class CommandUser
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
+ if(Matchers.isCorrectDashlessUUID(user))
+ user = Matchers.uuidAddDashes(user);
final ArrayList answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
final ArrayList sorted_keys = new ArrayList<>(result.permissions.keySet());
@@ -90,6 +100,8 @@ public class CommandUser
}
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException
{
+ if(Matchers.isCorrectDashlessUUID(user))
+ user = Matchers.uuidAddDashes(user);
final ArrayList answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:");
for(String group : result.getOrderedGroups())
@@ -99,6 +111,8 @@ public class CommandUser
private void addGroup(ResolutionResult result, String user, String parent, String destination, Integer seconds) throws CommandAnswerException
{
final ArrayList answer = new ArrayList<>();
+ final DatabaseTransaction databaseTransaction = new DatabaseTransaction(rscp);
+ databaseTransaction.apply();
throw new CommandAnswerException(answer);
}
private void removeGroup(ResolutionResult result, String user, String parent) throws CommandAnswerException
diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java b/src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java
new file mode 100644
index 0000000..fa13fd8
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java
@@ -0,0 +1,42 @@
+package ru.simsonic.rscPermissions.Engine;
+
+public class CommandUtilities
+{
+ public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
+ {
+ if(arg == null || "".equals(arg))
+ throw new IllegalArgumentException("Argument is null or empty.");
+ switch(arg.toLowerCase())
+ {
+ case "enable":
+ case "true":
+ case "yes":
+ case "on":
+ case "1":
+ return true;
+ case "disable":
+ case "false":
+ case "no":
+ case "off":
+ case "0":
+ 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
+ {
+ return Integer.parseInt(arg);
+ } catch(NumberFormatException ex) {
+ throw new IllegalArgumentException(ex.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java b/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java
index 366f06e..3233a8f 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java
@@ -1,10 +1,10 @@
package ru.simsonic.rscPermissions.Sponge.Commands;
-import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext;
+import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.command.spec.CommandSpec;
import org.spongepowered.api.text.Text;
diff --git a/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java b/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java
index eb459f4..2418672 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java
@@ -3,7 +3,6 @@ package ru.simsonic.rscPermissions.Sponge;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
-import org.slf4j.Logger;
import org.spongepowered.api.service.context.ContextCalculator;
import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.PermissionService;
diff --git a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
index 1be9c27..e3c88ac 100644
--- a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
+++ b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java
@@ -1,17 +1,6 @@
package ru.simsonic.rscPermissions;
-import com.google.inject.Inject;
import java.io.File;
-import org.slf4j.Logger;
-/*
-import org.spongepowered.api.Game;
-import org.spongepowered.api.event.Subscribe;
-import org.spongepowered.api.event.sstate.ServerAboutToStartEvent;
-import org.spongepowered.api.event.state.ServerStartedEvent;
-import org.spongepowered.api.event.state.ServerStartingEvent;
-import org.spongepowered.api.event.state.ServerStoppedEvent;
-import org.spongepowered.api.event.state.ServerStoppingEvent;
-*/
import org.spongepowered.api.plugin.Plugin;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase;