Browse Source

Version is 0.9.12a:

* Debugging mode can be enabled for console with the same command /rscp debug
* When in console debugging mode, every API method call will print current stack.
* API methods returns plain groups lists, without drawing symbolic tree leafs.
master
SimSonic 10 years ago
parent
commit
39dcad5d55
  1. 2
      pom.xml
  2. 13
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  3. 6
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  4. 13
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  5. 9
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
  6. 20
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
  7. 91
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java
  8. 13
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

2
pom.xml

@ -4,7 +4,7 @@
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.9.11a</version> <version>0.9.12a</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>

13
src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java

@ -2,6 +2,7 @@ package ru.simsonic.rscPermissions;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.ServicePriority;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Bukkit.VaultChat; import ru.simsonic.rscPermissions.Bukkit.VaultChat;
import ru.simsonic.rscPermissions.Bukkit.VaultPermission; import ru.simsonic.rscPermissions.Bukkit.VaultPermission;
import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscPermissions.Engine.Phrases;
@ -69,4 +70,16 @@ public class BridgeForBukkitAPI
} else } else
BukkitPluginMain.consoleLog.warning(GenericChatCodes.processStringStatic("[rscp] " + Phrases.INTEGRATION_V_N.toString())); BukkitPluginMain.consoleLog.warning(GenericChatCodes.processStringStatic("[rscp] " + Phrases.INTEGRATION_V_N.toString()));
} }
public void printDebugStackTrace()
{
if(rscp.permissionManager.isConsoleDebugging())
{
final StringBuilder sb = new StringBuilder(Settings.chatPrefix);
sb.append("[DEBUG] An API method was invoked from the path:\n");
for(StackTraceElement ste : Thread.currentThread().getStackTrace())
if(!ste.getClassName().equals(BridgeForBukkitAPI.class.getName()))
sb.append(ste.toString()).append(System.lineSeparator());
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString()));
}
}
} }

6
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java

@ -1,7 +1,7 @@
package ru.simsonic.rscPermissions.Bukkit; package ru.simsonic.rscPermissions.Bukkit;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.entity.Player; import org.bukkit.command.CommandSender;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
@ -62,14 +62,14 @@ public class BukkitDatabaseFetcher extends RestartableThread
} catch(InterruptedException ex) { } catch(InterruptedException ex) {
} }
final long queryTime = System.currentTimeMillis() - queryStartTime; final long queryTime = System.currentTimeMillis() - queryStartTime;
final Set<Player> debuggers = rscp.permissionManager.getDebuggers(); final Set<CommandSender> debuggers = rscp.permissionManager.getDebuggers();
if(!debuggers.isEmpty()) if(!debuggers.isEmpty())
rscp.getServer().getScheduler().runTask(rscp, new Runnable() rscp.getServer().getScheduler().runTask(rscp, new Runnable()
{ {
@Override @Override
public void run() public void run()
{ {
for(Player debugger : debuggers) for(CommandSender debugger : debuggers)
debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
+ "Database has been fetched in " + queryTime + " milliseconds.")); + "Database has been fetched in " + queryTime + " milliseconds."));
} }

13
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -9,6 +9,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachment;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
@ -31,7 +32,7 @@ public class BukkitPermissionManager extends RestartableThread
private final Map<Player, PermissionAttachment> attachments = new HashMap<>(); private final Map<Player, PermissionAttachment> attachments = new HashMap<>();
private final Map<Player, Map<String, Boolean>> persistent = new HashMap<>(); private final Map<Player, Map<String, Boolean>> persistent = new HashMap<>();
private final Map<Player, Map<String, Boolean>> temporary = new HashMap<>(); private final Map<Player, Map<String, Boolean>> temporary = new HashMap<>();
private final Set<Player> debug = new HashSet<>(); private final Set<CommandSender> debug = new HashSet<>();
public void recalculateOnlinePlayers() public void recalculateOnlinePlayers()
{ {
updateQueue.addAll(Tools.getOnlinePlayers()); updateQueue.addAll(Tools.getOnlinePlayers());
@ -200,21 +201,25 @@ public class BukkitPermissionManager extends RestartableThread
result.add(socketAddress.getAddress().getHostAddress()); result.add(socketAddress.getAddress().getHostAddress());
return result.toArray(new String[result.size()]); return result.toArray(new String[result.size()]);
} }
public Set<Player> getDebuggers() public Set<CommandSender> getDebuggers()
{ {
synchronized(debug) synchronized(debug)
{ {
return new HashSet<>(debug); return new HashSet<>(debug);
} }
} }
public boolean isDebugging(Player target) public boolean isConsoleDebugging()
{
return isDebugging(rscp.getServer().getConsoleSender());
}
public boolean isDebugging(CommandSender target)
{ {
synchronized(debug) synchronized(debug)
{ {
return debug.contains(target); return debug.contains(target);
} }
} }
public void setDebugging(Player target, boolean value) public void setDebugging(CommandSender target, boolean value)
{ {
synchronized(debug) synchronized(debug)
{ {

9
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java

@ -1,7 +1,5 @@
package ru.simsonic.rscPermissions.Bukkit.Commands; package ru.simsonic.rscPermissions.Bukkit.Commands;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscPermissions.Engine.Phrases;
import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException; import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException;
@ -15,12 +13,9 @@ public class CommandDebug
} }
public void execute(CommandSender sender, String args[]) throws CommandAnswerException 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")) if(sender.hasPermission("rscp.admin"))
{ {
final Player player = (Player)sender; boolean isDebugging = rscp.permissionManager.isDebugging(sender);
boolean isDebugging = rscp.permissionManager.isDebugging(player);
if(args.length >= 2) if(args.length >= 2)
{ {
try try
@ -31,7 +26,7 @@ public class CommandDebug
} }
} else } else
isDebugging = !isDebugging; isDebugging = !isDebugging;
rscp.permissionManager.setDebugging(player, isDebugging); rscp.permissionManager.setDebugging(sender, isDebugging);
throw new CommandAnswerException(isDebugging ? Phrases.DEBUG_ON.toString() : Phrases.DEBUG_OFF.toString()); throw new CommandAnswerException(isDebugging ? Phrases.DEBUG_ON.toString() : Phrases.DEBUG_OFF.toString());
} }
} }

20
src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java

@ -32,12 +32,14 @@ public final class VaultChat extends VaultDeprecatedChat
@Override @Override
public String getPlayerPrefix(String world, OfflinePlayer player) public String getPlayerPrefix(String world, OfflinePlayer player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix; return result.prefix;
} }
@Override @Override
public String getPlayerPrefix(Player player) public String getPlayerPrefix(Player player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix; return result.prefix;
} }
@ -45,6 +47,7 @@ public final class VaultChat extends VaultDeprecatedChat
@Deprecated @Deprecated
public String getPlayerPrefix(String world, String player) public String getPlayerPrefix(String world, String player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.prefix; return result.prefix;
} }
@ -52,12 +55,14 @@ public final class VaultChat extends VaultDeprecatedChat
@Override @Override
public String getPlayerSuffix(String world, OfflinePlayer player) public String getPlayerSuffix(String world, OfflinePlayer player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix; return result.suffix;
} }
@Override @Override
public String getPlayerSuffix(Player player) public String getPlayerSuffix(Player player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix; return result.suffix;
} }
@ -65,6 +70,7 @@ public final class VaultChat extends VaultDeprecatedChat
@Deprecated @Deprecated
public String getPlayerSuffix(String world, String player) public String getPlayerSuffix(String world, String player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.suffix; return result.suffix;
} }
@ -72,78 +78,92 @@ public final class VaultChat extends VaultDeprecatedChat
@Override @Override
public void setPlayerPrefix(String world, OfflinePlayer player, String prefix) public void setPlayerPrefix(String world, OfflinePlayer player, String prefix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerPrefix(Player player, String prefix) public void setPlayerPrefix(Player player, String prefix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
@Deprecated @Deprecated
public void setPlayerPrefix(String world, String player, String prefix) public void setPlayerPrefix(String world, String player, String prefix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
// ***** SET PLAYER SUFFIX ***** // ***** SET PLAYER SUFFIX *****
@Override @Override
public void setPlayerSuffix(String world, OfflinePlayer player, String suffix) public void setPlayerSuffix(String world, OfflinePlayer player, String suffix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerSuffix(Player player, String suffix) public void setPlayerSuffix(Player player, String suffix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
@Deprecated @Deprecated
public void setPlayerSuffix(String world, String player, String suffix) public void setPlayerSuffix(String world, String player, String suffix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
// ***** GET GROUP PREFIX ***** // ***** GET GROUP PREFIX *****
@Override @Override
public String getGroupPrefix(String world, String group) public String getGroupPrefix(String world, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.internalCache.getGroup(group).prefix; return rscp.internalCache.getGroup(group).prefix;
} }
@Override @Override
public String getGroupPrefix(World world, String group) public String getGroupPrefix(World world, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.internalCache.getGroup(group).prefix; return rscp.internalCache.getGroup(group).prefix;
} }
// ***** GET GROUP SUFFIX ***** // ***** GET GROUP SUFFIX *****
@Override @Override
public String getGroupSuffix(String world, String group) public String getGroupSuffix(String world, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.internalCache.getGroup(group).suffix; return rscp.internalCache.getGroup(group).suffix;
} }
@Override @Override
public String getGroupSuffix(World world, String group) public String getGroupSuffix(World world, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.internalCache.getGroup(group).suffix; return rscp.internalCache.getGroup(group).suffix;
} }
// ***** SET GROUP PREFIX ***** // ***** SET GROUP PREFIX *****
@Override @Override
public void setGroupPrefix(World world, String group, String prefix) public void setGroupPrefix(World world, String group, String prefix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupPrefix(String world, String group, String prefix) public void setGroupPrefix(String world, String group, String prefix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
// ***** SET GROUP SUFFIX ***** // ***** SET GROUP SUFFIX *****
@Override @Override
public void setGroupSuffix(String world, String group, String suffix) public void setGroupSuffix(String world, String group, String suffix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupSuffix(World world, String group, String suffix) public void setGroupSuffix(World world, String group, String suffix)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
// ***** DELEGATED TO PERMISSION ***** // ***** DELEGATED TO PERMISSION *****

91
src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java

@ -1,4 +1,5 @@
package ru.simsonic.rscPermissions.Bukkit; package ru.simsonic.rscPermissions.Bukkit;
import java.util.Set;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -32,10 +33,9 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss
return true; return true;
} }
@Override @Override
@Deprecated public boolean hasGroupSupport()
public boolean playerHas(String world, String player, String permission)
{ {
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); return true;
} }
@Override @Override
@Deprecated @Deprecated
@ -77,16 +77,6 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String[] getGroups()
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean hasGroupSupport()
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean has(CommandSender sender, String permission) public boolean has(CommandSender sender, String permission)
{ {
return sender.hasPermission(permission); return sender.hasPermission(permission);
@ -94,174 +84,229 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss
@Override @Override
public boolean has(Player player, String permission) public boolean has(Player player, String permission)
{ {
return player.hasPermission(permission); rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.permissionManager.getResult(player).hasPermission(permission);
}
@Override
@Deprecated
public boolean playerHas(String world, String player, String permission)
{
rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.permissionManager.getResult(player).hasPermission(permission);
} }
@Override @Override
public boolean playerHas(String world, OfflinePlayer player, String permission) public boolean playerHas(String world, OfflinePlayer player, String permission)
{ {
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.permissionManager.getResult(player).hasPermission(permission);
} }
@Override @Override
public boolean playerHas(Player player, String permission) public boolean playerHas(Player player, String permission)
{ {
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); rscp.bridgeForBukkit.printDebugStackTrace();
return rscp.permissionManager.getResult(player).hasPermission(permission);
} }
@Override @Override
public boolean playerAdd(String world, OfflinePlayer player, String permission) public boolean playerAdd(String world, OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAdd(Player player, String permission) public boolean playerAdd(Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddTransient(OfflinePlayer player, String permission) throws UnsupportedOperationException public boolean playerAddTransient(OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddTransient(Player player, String permission) public boolean playerAddTransient(Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddTransient(String worldName, OfflinePlayer player, String permission) public boolean playerAddTransient(String worldName, OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddTransient(String worldName, Player player, String permission) public boolean playerAddTransient(String worldName, Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveTransient(String worldName, OfflinePlayer player, String permission) public boolean playerRemoveTransient(String worldName, OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveTransient(String worldName, Player player, String permission) public boolean playerRemoveTransient(String worldName, Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemove(String world, OfflinePlayer player, String permission) public boolean playerRemove(String world, OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
@Deprecated @Deprecated
public boolean playerRemove(World world, String player, String permission) public boolean playerRemove(World world, String player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemove(Player player, String permission) public boolean playerRemove(Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveTransient(OfflinePlayer player, String permission) public boolean playerRemoveTransient(OfflinePlayer player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveTransient(Player player, String permission) public boolean playerRemoveTransient(Player player, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupHas(World world, String group, String permission) public boolean groupHas(World world, String group, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupAdd(World world, String group, String permission) public boolean groupAdd(World world, String group, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupRemove(World world, String group, String permission) public boolean groupRemove(World world, String group, String permission)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddGroup(String world, OfflinePlayer player, String group) public boolean playerAddGroup(String world, OfflinePlayer player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddGroup(Player player, String group) public boolean playerAddGroup(Player player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveGroup(String world, OfflinePlayer player, String group) public boolean playerRemoveGroup(String world, OfflinePlayer player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveGroup(Player player, String group) public boolean playerRemoveGroup(Player player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
@Deprecated @Deprecated
public boolean playerInGroup(String world, String player, String group) public boolean playerInGroup(String world, String player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.contains(group); for(String parent : result.getDeorderedGroups())
if(parent.equalsIgnoreCase(group))
return true;
return false;
} }
@Override @Override
public boolean playerInGroup(String world, OfflinePlayer player, String group) public boolean playerInGroup(String world, OfflinePlayer player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.contains(group); for(String parent : result.getDeorderedGroups())
if(parent.equalsIgnoreCase(group))
return true;
return false;
} }
@Override @Override
public boolean playerInGroup(Player player, String group) public boolean playerInGroup(Player player, String group)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.contains(group); for(String parent : result.getDeorderedGroups())
if(parent.equalsIgnoreCase(group))
return true;
return false;
} }
@Override @Override
@Deprecated @Deprecated
public String[] getPlayerGroups(String world, String player) public String[] getPlayerGroups(String world, String player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.toArray(new String[result.groups.size()]); return result.getDeorderedGroups();
} }
@Override @Override
public String[] getPlayerGroups(String world, OfflinePlayer player) public String[] getPlayerGroups(String world, OfflinePlayer player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.toArray(new String[result.groups.size()]); return result.getDeorderedGroups();
} }
@Override @Override
public String[] getPlayerGroups(Player player) public String[] getPlayerGroups(Player player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final ResolutionResult result = rscp.permissionManager.getResult(player); final ResolutionResult result = rscp.permissionManager.getResult(player);
return result.groups.toArray(new String[result.groups.size()]); return result.getDeorderedGroups();
} }
@Override @Override
@Deprecated @Deprecated
public String getPrimaryGroup(String world, String player) public String getPrimaryGroup(String world, String player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final String[] groups = getPlayerGroups(world, player); final String[] groups = getPlayerGroups(world, player);
return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup();
} }
@Override @Override
public String getPrimaryGroup(String world, OfflinePlayer player) public String getPrimaryGroup(String world, OfflinePlayer player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final String[] groups = getPlayerGroups(world, player); final String[] groups = getPlayerGroups(world, player);
return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup();
} }
@Override @Override
public String getPrimaryGroup(Player player) public String getPrimaryGroup(Player player)
{ {
rscp.bridgeForBukkit.printDebugStackTrace();
final String[] groups = getPlayerGroups(player); final String[] groups = getPlayerGroups(player);
return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup();
} }
@Override
public String[] getGroups()
{
rscp.bridgeForBukkit.printDebugStackTrace();
final Set<String> groups = rscp.internalCache.getGroups();
return groups.toArray(new String[groups.size()]);
}
} }

13
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

@ -1,6 +1,8 @@
package ru.simsonic.rscPermissions.Engine; package ru.simsonic.rscPermissions.Engine;
import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import ru.simsonic.rscPermissions.API.Settings;
public class ResolutionResult public class ResolutionResult
{ {
@ -15,4 +17,15 @@ public class ResolutionResult
return entry.getValue(); return entry.getValue();
return false; return false;
} }
public String[] getDeorderedGroups()
{
final ArrayList<String> list = new ArrayList(groups.size());
final String separator = new String(new char[] { Settings.groupLevelTab });
for(String group : groups)
{
String[] splitted = group.split(separator);
list.add(splitted[splitted.length - 1]);
}
return list.toArray(new String[list.size()]);
}
} }

Loading…
Cancel
Save