Browse Source

Много плюшек.

master
Stanislav Usenkov 10 years ago
parent
commit
e85b046081
  1. 8
      pom.xml
  2. 12
      src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java
  3. 2
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  4. 6
      src/main/java/ru/simsonic/rscPermissions/API/TranslationProvider.java
  5. 8
      src/main/java/ru/simsonic/rscPermissions/Backends/BackendDatabase.java
  6. 15
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  7. 28
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  8. 18
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
  9. 28
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  10. 255
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
  11. 89
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java
  12. 26
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  13. 21
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  14. 4
      src/main/java/ru/simsonic/rscPermissions/Engine/Matchers.java
  15. 24
      src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java
  16. 1
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java
  17. 19
      src/main/java/ru/simsonic/rscPermissions/IndependentMain.java
  18. 8
      src/main/resources/languages/english.yml
  19. 8
      src/main/resources/languages/russian.yml

8
pom.xml

@ -4,7 +4,7 @@
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.9.3a</version> <version>0.9.4a</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>
@ -16,15 +16,11 @@
<id>sponge-repo</id> <id>sponge-repo</id>
<url>http://repo.spongepowered.org/Sponge/maven/</url> <url>http://repo.spongepowered.org/Sponge/maven/</url>
</repository> </repository>
<repository>
<id>bukkit-repo</id>
<url>http://repo.bukkit.org/content/groups/public/</url>
</repository>
<repository> <repository>
<id>spigot-repo</id> <id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url> <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
</repository> </repository>
<!-- MC Metrics --> <!-- Metrics (mcstats.org) -->
<repository> <repository>
<id>metrics-repo</id> <id>metrics-repo</id>
<url>http://repo.mcstats.org/content/repositories/public/</url> <url>http://repo.mcstats.org/content/repositories/public/</url>

12
src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java

@ -46,6 +46,7 @@ public enum PlayerType
return hyphenatedUUID; return hyphenatedUUID;
if(dehyphenatedRegExp.matcher(entity.toLowerCase()).matches()) if(dehyphenatedRegExp.matcher(entity.toLowerCase()).matches())
return dehyphenatedUUID; return dehyphenatedUUID;
/*
final Matcher mIP1 = ipWildcardRegExp.matcher(entity); final Matcher mIP1 = ipWildcardRegExp.matcher(entity);
if(mIP1.matches()) if(mIP1.matches())
{ {
@ -55,6 +56,7 @@ public enum PlayerType
final String a4 = mIP1.group(4); final String a4 = mIP1.group(4);
// TO DO // TO DO
long address = 0, mask = 0; long address = 0, mask = 0;
return internetWildcard;
} }
final Matcher mIP2 = ipSubnetMaskRegExp.matcher(entity); final Matcher mIP2 = ipSubnetMaskRegExp.matcher(entity);
if(mIP2.matches()) if(mIP2.matches())
@ -66,9 +68,12 @@ public enum PlayerType
final String sn = mIP1.group(5); final String sn = mIP1.group(5);
// TO DO // TO DO
long address = 0, mask = 0; long address = 0, mask = 0;
return internetSubnetMask;
} }
*/
return inapplicable; return inapplicable;
} }
/*
public static void getAddressDetails(String entity, RowPermission row) public static void getAddressDetails(String entity, RowPermission row)
{ {
final Matcher mIP1 = ipWildcardRegExp.matcher(entity); final Matcher mIP1 = ipWildcardRegExp.matcher(entity);
@ -97,16 +102,19 @@ public enum PlayerType
long address = 0, mask = 0; long address = 0, mask = 0;
} }
} }
*/
public boolean isEntityApplicable(String entity, String identifier) public boolean isEntityApplicable(String entity, String identifier)
{ {
if(entity == null || "".equals(entity) || identifier == null || "".equals(identifier))
return false;
switch(this) switch(this)
{ {
case name: case name:
return identifier.equals(entity); return identifier.equals(entity);
case hyphenatedUUID: case hyphenatedUUID:
identifier = identifier.replace("-", "").toLowerCase(); identifier = identifier.replace("-", "");
case dehyphenatedUUID: case dehyphenatedUUID:
return entity.equals(identifier); return entity.equalsIgnoreCase(identifier);
} }
return false; return false;
} }

2
src/main/java/ru/simsonic/rscPermissions/API/Settings.java

@ -21,6 +21,6 @@ public interface Settings
public long getRegionFinderGranularity(); public long getRegionFinderGranularity();
public int getAutoReloadDelayTicks(); public int getAutoReloadDelayTicks();
public boolean isUseMetrics(); public boolean isUseMetrics();
public String getLanguage(); public TranslationProvider getTranslationProvider();
public ConnectionParams getConnectionParams(); public ConnectionParams getConnectionParams();
} }

6
src/main/java/ru/simsonic/rscPermissions/API/TranslationProvider.java

@ -0,0 +1,6 @@
package ru.simsonic.rscPermissions.API;
public interface TranslationProvider
{
public String getString(String path);
}

8
src/main/java/ru/simsonic/rscPermissions/Backends/BackendDatabase.java

@ -28,14 +28,6 @@ public class BackendDatabase extends ConnectionMySQL
contents.entities = fetchEntities(); contents.entities = fetchEntities();
contents.permissions = fetchPermissions(); contents.permissions = fetchPermissions();
contents.inheritance = fetchInheritance(); contents.inheritance = fetchInheritance();
logger.log(Level.INFO,
"[rscp] Fetched {0} entities, {1} permissions and {2} inheritances",
new Integer[]
{
contents.entities.length,
contents.permissions.length,
contents.inheritance.length,
});
return contents; return contents;
} }
private RowEntity[] fetchEntities() private RowEntity[] fetchEntities()

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

@ -1,4 +1,5 @@
package ru.simsonic.rscPermissions; package ru.simsonic.rscPermissions;
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.Bukkit.VaultChat; import ru.simsonic.rscPermissions.Bukkit.VaultChat;
@ -14,7 +15,7 @@ public class BridgeForBukkitAPI
private final BukkitPluginMain rscp; private final BukkitPluginMain rscp;
private final VaultPermission vaultPermission; private final VaultPermission vaultPermission;
private final VaultChat vaultChat; private final VaultChat vaultChat;
public BridgeForBukkitAPI(BukkitPluginMain plugin) protected BridgeForBukkitAPI(BukkitPluginMain plugin)
{ {
BridgeForBukkitAPI.instance = BridgeForBukkitAPI.this; BridgeForBukkitAPI.instance = BridgeForBukkitAPI.this;
this.rscp = plugin; this.rscp = plugin;
@ -41,6 +42,13 @@ public class BridgeForBukkitAPI
{ {
return rscp.isEnabled(); return rscp.isEnabled();
} }
public Player findPlayer(String player)
{
for(Player online : rscp.getServer().getOnlinePlayers())
if(online.getName().equals(player))
return online;
return null;
}
protected void setupVault() protected void setupVault()
{ {
final Plugin plugin = rscp.getServer().getPluginManager().getPlugin("Vault"); final Plugin plugin = rscp.getServer().getPluginManager().getPlugin("Vault");
@ -54,7 +62,8 @@ public class BridgeForBukkitAPI
rscp.getServer().getServicesManager().register( rscp.getServer().getServicesManager().register(
net.milkbowl.vault.permission.Permission.class, vaultPermission, net.milkbowl.vault.permission.Permission.class, vaultPermission,
rscp, ServicePriority.Highest); rscp, ServicePriority.Highest);
BukkitPluginMain.consoleLog.info("[rscp] Vault found and integrated."); BukkitPluginMain.consoleLog.info("[rscp] Vault was found and integrated.");
} } else
BukkitPluginMain.consoleLog.info("[rscp] Sorry, I cannot find Vault...");
} }
} }

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

@ -5,6 +5,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachment;
@ -21,11 +22,12 @@ public class BukkitPermissionManager extends RestartableThread
this.rscp = plugin; this.rscp = plugin;
} }
private final LinkedBlockingQueue<Player> updateQueue = new LinkedBlockingQueue<>(); private final LinkedBlockingQueue<Player> updateQueue = new LinkedBlockingQueue<>();
private final HashMap<Player, PermissionAttachment> attachments = new HashMap<>(); private final Map<Player, PermissionAttachment> attachments = new HashMap<>();
private final HashMap<Player, Map<String, Boolean>> persistentPermissions = new HashMap<>(); private final Map<Player, Map<String, Boolean>> persistentPermissions = new HashMap<>();
private final HashMap<Player, Map<String, Boolean>> transientPermissions = new HashMap<>(); private final Map<Player, Map<String, Boolean>> transientPermissions = new HashMap<>();
private final HashMap<Player, String> prefixes = new HashMap<>(); private final Map<Player, Set<String>> groups = new ConcurrentHashMap<>();
private final HashMap<Player, String> suffixes = new HashMap<>(); private final Map<Player, String> prefixes = new ConcurrentHashMap<>();
private final Map<Player, String> suffixes = new ConcurrentHashMap<>();
public void recalculateOnlinePlayers() public void recalculateOnlinePlayers()
{ {
updateQueue.addAll(rscp.getServer().getOnlinePlayers()); updateQueue.addAll(rscp.getServer().getOnlinePlayers());
@ -46,6 +48,21 @@ public class BukkitPermissionManager extends RestartableThread
return attachment.getPermissions(); return attachment.getPermissions();
return Collections.EMPTY_MAP; return Collections.EMPTY_MAP;
} }
public String getPlayerPrefix(Player player)
{
final String prefix = prefixes.get(player);
return prefix != null ? prefix : "";
}
public String getPlayerSuffix(Player player)
{
final String suffix = suffixes.get(player);
return suffix != null ? suffix : "";
}
public Set<String> getPlayerGroups(Player player)
{
final Set<String> result = groups.get(player);
return result != null ? result : Collections.EMPTY_SET;
}
public void removePlayer(Player player) public void removePlayer(Player player)
{ {
updateQueue.remove(player); updateQueue.remove(player);
@ -65,6 +82,7 @@ public class BukkitPermissionManager extends RestartableThread
for(Player current = updateQueue.take(); current != null; current = updateQueue.take()) for(Player current = updateQueue.take(); current != null; current = updateQueue.take())
{ {
final ResolutionResult result = rscp.permissionManager.resolvePlayer(current); final ResolutionResult result = rscp.permissionManager.resolvePlayer(current);
groups.put(current, result.groups);
prefixes.put(current, result.prefix); prefixes.put(current, result.prefix);
suffixes.put(current, result.suffix); suffixes.put(current, result.suffix);
persistentPermissions.put(current, result.permissions); persistentPermissions.put(current, result.permissions);

18
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java

@ -1,6 +1,9 @@
package ru.simsonic.rscPermissions.Bukkit; package ru.simsonic.rscPermissions.Bukkit;
import java.io.File;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.API.TranslationProvider;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams; import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
@ -62,7 +65,7 @@ public class BukkitPluginConfiguration implements Settings
language = config.getString("settings.language", "english"); language = config.getString("settings.language", "english");
strDefaultGroup = config.getString("settings.default-group", "Default"); strDefaultGroup = config.getString("settings.default-group", "Default");
strMaintenanceMode = config.getString("settings.maintenance-mode", ""); strMaintenanceMode = config.getString("settings.maintenance-mode", "");
bAlwaysInheritDefault = config.getBoolean("always-inherit-default-group", false); bAlwaysInheritDefault = config.getBoolean("settings.always-inherit-default-group", false);
bTreatAsteriskAsOP = config.getBoolean("settings.treat-asterisk-as-op", true); bTreatAsteriskAsOP = config.getBoolean("settings.treat-asterisk-as-op", true);
bUseMetrics = config.getBoolean("settings.use-metrics", true); bUseMetrics = config.getBoolean("settings.use-metrics", true);
bUseWorldGuard = config.getBoolean("settings.integration.worldguard", true); bUseWorldGuard = config.getBoolean("settings.integration.worldguard", true);
@ -128,9 +131,18 @@ public class BukkitPluginConfiguration implements Settings
return nRegionFinderGranularity; return nRegionFinderGranularity;
} }
@Override @Override
public String getLanguage() public TranslationProvider getTranslationProvider()
{ {
return language; final File langFile = new File(plugin.getDataFolder(), language + ".yml");
final YamlConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);
return new TranslationProvider()
{
@Override
public String getString(String path)
{
return langConfig.getString(path, path);
}
};
} }
@Override @Override
public ConnectionParams getConnectionParams() public ConnectionParams getConnectionParams()

28
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -7,11 +7,13 @@ import java.util.logging.Level;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.Bukkit.PermissionsEx_YAML; import ru.simsonic.rscPermissions.Bukkit.PermissionsEx_YAML;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException; import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.RestartableThread; import ru.simsonic.rscUtilityLibrary.RestartableThread;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitCommands public class BukkitCommands
{ {
@ -32,11 +34,12 @@ public class BukkitCommands
return; return;
} }
final DatabaseContents contents = rscp.connection.retrieveContents(); final DatabaseContents contents = rscp.connection.retrieveContents();
rscp.connection.disconnect();
if(contents != null) if(contents != null)
{ {
contents.normalize(); contents.normalize();
rscp.fileCache.cleanup(); rscp.localStorage.cleanup();
rscp.fileCache.saveContents(contents); rscp.localStorage.saveContents(contents);
contents.filterServerId(rscp.getServer().getServerId()); contents.filterServerId(rscp.getServer().getServerId());
rscp.internalCache.fill(contents); rscp.internalCache.fill(contents);
final Runnable syncTask = new Runnable() final Runnable syncTask = new Runnable()
@ -44,6 +47,14 @@ public class BukkitCommands
@Override @Override
public synchronized void run() public synchronized void run()
{ {
BukkitPluginMain.consoleLog.log(Level.INFO,
"[rscp] Fetched {0} entities, {1} permissions and {2} inheritances",
new Integer[]
{
contents.entities.length,
contents.permissions.length,
contents.inheritance.length,
});
rscp.permissionManager.recalculateOnlinePlayers(); rscp.permissionManager.recalculateOnlinePlayers();
notify(); notify();
} }
@ -70,7 +81,7 @@ public class BukkitCommands
{ {
try try
{ {
setName("rscp:MigrateFromPExSQL"); setName("rscp:MigrateFromPermissionsEx-SQL");
rscp.connection.executeUpdateT("Migrate_from_PermissionsEx"); rscp.connection.executeUpdateT("Migrate_from_PermissionsEx");
threadFetchDatabaseContents.join(); threadFetchDatabaseContents.join();
rscp.getServer().getScheduler().runTask(rscp, new Runnable() rscp.getServer().getScheduler().runTask(rscp, new Runnable()
@ -78,8 +89,10 @@ public class BukkitCommands
@Override @Override
public void run() public void run()
{ {
rscp.formattedMessage(sender, "Migration from PermissionsEx (MySQL backend) done!"); sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
rscp.formattedMessage(sender, "Check the latest database row for new data."); + "Migration from PermissionsEx (MySQL backend) done!"));
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
+ "Check the latest database row for new data."));
} }
}); });
} catch(InterruptedException ex) { } catch(InterruptedException ex) {
@ -283,11 +296,8 @@ public class BukkitCommands
throw new CommandAnswerException(list); throw new CommandAnswerException(list);
case "groups": case "groups":
list.add("{MAGENTA}Group list for {_YL}" + player.getName() + "{MAGENTA}:"); list.add("{MAGENTA}Group list for {_YL}" + player.getName() + "{MAGENTA}:");
/* for(String group : rscp.permissionManager.getPlayerGroups(player))
ArrayList<String> groups = plugin.cache.getUserGroups(player.getName());
for(String group : groups)
list.add("{_LG}" + group); list.add("{_LG}" + group);
*/
throw new CommandAnswerException(list); throw new CommandAnswerException(list);
/* /*
case "ranks": case "ranks":

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

@ -3,14 +3,17 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.BridgeForBukkitAPI; import ru.simsonic.rscPermissions.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public final class VaultChat extends net.milkbowl.vault.chat.Chat public final class VaultChat extends net.milkbowl.vault.chat.Chat
{ {
private final BridgeForBukkitAPI bridge; private final BridgeForBukkitAPI bridge;
private final BukkitPluginMain rscp;
public VaultChat(BridgeForBukkitAPI bridge, net.milkbowl.vault.permission.Permission perms) public VaultChat(BridgeForBukkitAPI bridge, net.milkbowl.vault.permission.Permission perms)
{ {
super(perms); super(perms);
this.bridge = bridge; this.bridge = bridge;
this.rscp = (BukkitPluginMain)bridge.getPlugin();
} }
@Override @Override
public String getName() public String getName()
@ -25,336 +28,338 @@ public final class VaultChat extends net.milkbowl.vault.chat.Chat
@Override @Override
public String getPlayerPrefix(String world, String player) public String getPlayerPrefix(String world, String player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); final Player online = bridge.findPlayer(player);
return online != null ? rscp.permissionManager.getPlayerPrefix(online) : null;
} }
@Override @Override
public void setPlayerPrefix(String world, String player, String prefix) public String getPlayerSuffix(String world, String player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); final Player online = bridge.findPlayer(player);
return online != null ? rscp.permissionManager.getPlayerSuffix(online) : null;
} }
@Override @Override
public String getPlayerSuffix(String world, String player) public void setPlayerPrefix(String world, String player, String prefix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerSuffix(String world, String player, String suffix) public void setPlayerSuffix(String world, String player, String suffix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupPrefix(String world, String group) public String getGroupPrefix(String world, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupSuffix(String world, String group) public String getGroupSuffix(String world, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupSuffix(String world, String group, String suffix) public void setGroupSuffix(String world, String group, String suffix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public int getPlayerInfoInteger(String world, String player, String node, int defaultValue) public String getPlayerPrefix(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoInteger(String world, String player, String node, int value) public String getPlayerPrefix(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); return rscp.permissionManager.getPlayerPrefix(player);
} }
@Override @Override
public int getGroupInfoInteger(String world, String group, String node, int defaultValue) public void setPlayerPrefix(String world, OfflinePlayer player, String prefix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoInteger(String world, String group, String node, int value) public void setPlayerPrefix(Player player, String prefix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public double getPlayerInfoDouble(String world, String player, String node, double defaultValue) public String getPlayerSuffix(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoDouble(String world, String player, String node, double value) public String getPlayerSuffix(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); return rscp.permissionManager.getPlayerSuffix(player);
} }
@Override @Override
public double getGroupInfoDouble(String world, String group, String node, double defaultValue) public void setPlayerSuffix(String world, OfflinePlayer player, String suffix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoDouble(String world, String group, String node, double value) public void setPlayerSuffix(Player player, String suffix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue) public String getGroupPrefix(World world, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoBoolean(String world, String player, String node, boolean value) public void setGroupPrefix(World world, String group, String prefix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue) public String getGroupSuffix(World world, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoBoolean(String world, String group, String node, boolean value) public void setGroupSuffix(World world, String group, String suffix)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerInfoString(String world, String player, String node, String defaultValue) public boolean playerInGroup(String world, OfflinePlayer player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoString(String world, String player, String node, String value) public boolean playerInGroup(Player player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupInfoString(String world, String group, String node, String defaultValue) public String[] getPlayerGroups(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoString(String world, String group, String node, String value) public String[] getPlayerGroups(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerPrefix(String world, OfflinePlayer player) public String getPrimaryGroup(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerPrefix(Player player) public String getPrimaryGroup(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerPrefix(String world, OfflinePlayer player, String prefix) public String[] getGroups()
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerPrefix(Player player, String prefix) public int getPlayerInfoInteger(String world, String player, String node, int defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerSuffix(String world, OfflinePlayer player) public void setPlayerInfoInteger(String world, String player, String node, int value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerSuffix(Player player) public int getGroupInfoInteger(String world, String group, String node, int defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerSuffix(String world, OfflinePlayer player, String suffix) public void setGroupInfoInteger(String world, String group, String node, int value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerSuffix(Player player, String suffix) public double getPlayerInfoDouble(String world, String player, String node, double defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupPrefix(World world, String group) public void setPlayerInfoDouble(String world, String player, String node, double value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupPrefix(World world, String group, String prefix) public double getGroupInfoDouble(String world, String group, String node, double defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupSuffix(World world, String group) public void setGroupInfoDouble(String world, String group, String node, double value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupSuffix(World world, String group, String suffix) public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoBoolean(String world, String player, String node, boolean value)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoBoolean(String world, String group, String node, boolean value)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getPlayerInfoString(String world, String player, String node, String defaultValue)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoString(String world, String player, String node, String value)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getGroupInfoString(String world, String group, String node, String defaultValue)
{
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoString(String world, String group, String node, String value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue) public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public int getPlayerInfoInteger(Player player, String node, int defaultValue) public int getPlayerInfoInteger(Player player, String node, int defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value) public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoInteger(Player player, String node, int value) public void setPlayerInfoInteger(Player player, String node, int value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public int getGroupInfoInteger(World world, String group, String node, int defaultValue) public int getGroupInfoInteger(World world, String group, String node, int defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoInteger(World world, String group, String node, int value) public void setGroupInfoInteger(World world, String group, String node, int value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue) public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public double getPlayerInfoDouble(Player player, String node, double defaultValue) public double getPlayerInfoDouble(Player player, String node, double defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value) public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoDouble(Player player, String node, double value) public void setPlayerInfoDouble(Player player, String node, double value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public double getGroupInfoDouble(World world, String group, String node, double defaultValue) public double getGroupInfoDouble(World world, String group, String node, double defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoDouble(World world, String group, String node, double value) public void setGroupInfoDouble(World world, String group, String node, double value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue) public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue) public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value) public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoBoolean(Player player, String node, boolean value) public void setPlayerInfoBoolean(Player player, String node, boolean value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue) public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoBoolean(World world, String group, String node, boolean value) public void setGroupInfoBoolean(World world, String group, String node, boolean value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue) public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPlayerInfoString(Player player, String node, String defaultValue) public String getPlayerInfoString(Player player, String node, String defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value) public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setPlayerInfoString(Player player, String node, String value) public void setPlayerInfoString(Player player, String node, String value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getGroupInfoString(World world, String group, String node, String defaultValue) public String getGroupInfoString(World world, String group, String node, String defaultValue)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public void setGroupInfoString(World world, String group, String node, String value) public void setGroupInfoString(World world, String group, String node, String value)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean playerInGroup(String world, OfflinePlayer player, String group)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public boolean playerInGroup(Player player, String group)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public String[] getPlayerGroups(String world, OfflinePlayer player)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public String[] getPlayerGroups(Player player)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public String getPrimaryGroup(String world, OfflinePlayer player)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public String getPrimaryGroup(Player player)
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
}
@Override
public String[] getGroups()
{
throw new UnsupportedOperationException("This method is still unsupported. Sorry.");
} }
} }

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

@ -4,13 +4,16 @@ import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.BridgeForBukkitAPI; import ru.simsonic.rscPermissions.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public class VaultPermission extends net.milkbowl.vault.permission.Permission public class VaultPermission extends net.milkbowl.vault.permission.Permission
{ {
private final BridgeForBukkitAPI bridge; private final BridgeForBukkitAPI bridge;
private final BukkitPluginMain rscp;
public VaultPermission(BridgeForBukkitAPI bridge) public VaultPermission(BridgeForBukkitAPI bridge)
{ {
this.bridge = bridge; this.bridge = bridge;
this.rscp = (BukkitPluginMain)bridge.getPlugin();
} }
@Override @Override
public String getName() public String getName()
@ -30,216 +33,216 @@ public class VaultPermission extends net.milkbowl.vault.permission.Permission
@Override @Override
public boolean playerHas(String world, String player, String permission) public boolean playerHas(String world, String player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAdd(String world, String player, String permission) public boolean playerAdd(String world, String player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemove(String world, String player, String permission) public boolean playerRemove(String world, String player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupHas(String world, String group, String permission) public boolean groupHas(String world, String group, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupAdd(String world, String group, String permission) public boolean groupAdd(String world, String group, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean groupRemove(String world, String group, String permission) public boolean groupRemove(String world, String group, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerInGroup(String world, String player, String group) public boolean playerInGroup(String world, String player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAddGroup(String world, String player, String group) public boolean playerAddGroup(String world, String player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemoveGroup(String world, String player, String group) public boolean playerRemoveGroup(String world, String player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String[] getPlayerGroups(String world, String player) public String[] getPlayerGroups(String world, String player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPrimaryGroup(String world, String player) public String getPrimaryGroup(String world, String player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String[] getGroups() public String[] getGroups()
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean hasGroupSupport() public boolean hasGroupSupport()
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean has(CommandSender sender, String permission) public boolean has(CommandSender sender, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); return sender.hasPermission(permission);
} }
@Override @Override
public boolean has(Player player, String permission) public boolean has(Player player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); return 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 still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerHas(Player player, String permission) public boolean playerHas(Player player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerAdd(String world, OfflinePlayer player, String permission) public boolean playerAdd(String world, OfflinePlayer player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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) throws UnsupportedOperationException
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerRemove(World world, String player, String permission) public boolean playerRemove(World world, String player, String permission)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerInGroup(String world, OfflinePlayer player, String group) public boolean playerInGroup(String world, OfflinePlayer player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public boolean playerInGroup(Player player, String group) public boolean playerInGroup(Player player, String group)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); 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)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String[] getPlayerGroups(String world, OfflinePlayer player) public String[] getPlayerGroups(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String[] getPlayerGroups(Player player) public String[] getPlayerGroups(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPrimaryGroup(String world, OfflinePlayer player) public String getPrimaryGroup(String world, OfflinePlayer player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
@Override @Override
public String getPrimaryGroup(Player player) public String getPrimaryGroup(Player player)
{ {
throw new UnsupportedOperationException("This method is still unsupported. Sorry."); throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
} }
} }

26
src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java

@ -19,16 +19,17 @@ import ru.simsonic.rscPermissions.Bukkit.BukkitRegionProviders;
import ru.simsonic.rscPermissions.Bukkit.Commands.BukkitCommands; import ru.simsonic.rscPermissions.Bukkit.Commands.BukkitCommands;
import ru.simsonic.rscPermissions.Bukkit.RegionUpdateObserver; import ru.simsonic.rscPermissions.Bukkit.RegionUpdateObserver;
import ru.simsonic.rscPermissions.Engine.InternalCache; import ru.simsonic.rscPermissions.Engine.InternalCache;
import ru.simsonic.rscPermissions.Engine.Phrases;
import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException; import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public final class BukkitPluginMain extends JavaPlugin public final class BukkitPluginMain extends JavaPlugin
{ {
public static final Logger consoleLog = Bukkit.getLogger(); public static final Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this); public final BukkitPluginConfiguration settings = new BukkitPluginConfiguration(this);
public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this); public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this);
public final BukkitEventListener bukkitListener = new BukkitEventListener(this); public final BukkitEventListener bukkitListener = new BukkitEventListener(this);
public final BackendJson fileCache = new BackendJson(getDataFolder()); public final BackendJson localStorage = new BackendJson(getDataFolder());
public final BackendDatabase connection = new BackendDatabase(consoleLog); public final BackendDatabase connection = new BackendDatabase(consoleLog);
public final InternalCache internalCache = new InternalCache(); public final InternalCache internalCache = new InternalCache();
public final BukkitPermissionManager permissionManager = new BukkitPermissionManager(this); public final BukkitPermissionManager permissionManager = new BukkitPermissionManager(this);
@ -46,12 +47,14 @@ public final class BukkitPluginMain extends JavaPlugin
@Override @Override
public void onEnable() public void onEnable()
{ {
Phrases.extractAll(this); Phrases.extractAll(getDataFolder());
settings.readSettings(); settings.readSettings();
internalCache.setDefaultGroup(settings.getDefaultGroup()); internalCache.setDefaultGroup(
Phrases.fill(this, settings.getLanguage()); settings.getDefaultGroup(),
settings.isDefaultForever());
Phrases.translate(settings.getTranslationProvider());
// Restore temporary cached data from json files // Restore temporary cached data from json files
final DatabaseContents contents = fileCache.retrieveContents(); final DatabaseContents contents = localStorage.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime(); contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents); internalCache.fill(contents);
consoleLog.log(Level.INFO, consoleLog.log(Level.INFO,
@ -87,7 +90,7 @@ public final class BukkitPluginMain extends JavaPlugin
connection.initialize(settings.getConnectionParams()); connection.initialize(settings.getConnectionParams());
commandHelper.threadFetchDatabaseContents.startDeamon(); commandHelper.threadFetchDatabaseContents.startDeamon();
// Done // Done
consoleLog.info("[rscp] rscPermissions has been successfully enabled."); consoleLog.info(Phrases.PLUGIN_ENABLED.toString());
} }
@Override @Override
public void onDisable() public void onDisable()
@ -99,7 +102,7 @@ public final class BukkitPluginMain extends JavaPlugin
connection.disconnect(); connection.disconnect();
regionListProvider.deintegrate(); regionListProvider.deintegrate();
metrics = null; metrics = null;
consoleLog.info("[rscp] rscPermissions has been disabled."); consoleLog.info(Phrases.PLUGIN_DISABLED.toString());
} }
private int nAutoUpdaterTaskId = -1; private int nAutoUpdaterTaskId = -1;
public void scheduleAutoUpdate() public void scheduleAutoUpdate()
@ -131,11 +134,4 @@ public final class BukkitPluginMain extends JavaPlugin
} }
return true; return true;
} }
public void formattedMessage(CommandSender sender, String message)
{
if(message == null || "".equals(message))
return;
message = GenericChatCodes.processStringStatic(Settings.chatPrefix + message);
sender.sendMessage(message);
}
} }

21
src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -4,6 +4,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import ru.simsonic.rscPermissions.API.EntityType; import ru.simsonic.rscPermissions.API.EntityType;
@ -19,10 +20,12 @@ public class InternalCache
private final HashMap<String, RowEntity> entities_g = new HashMap<>(); private final HashMap<String, RowEntity> entities_g = new HashMap<>();
private final HashMap<String, RowEntity> entities_u = new HashMap<>(); private final HashMap<String, RowEntity> entities_u = new HashMap<>();
private final RowInheritance defaultInheritance = new RowInheritance(); private final RowInheritance defaultInheritance = new RowInheritance();
public void setDefaultGroup(String defaultGroup) private boolean alwaysInheritDefaultGroup = false;
public void setDefaultGroup(String defaultGroup, boolean alwaysInheritDefaultGroup)
{ {
defaultInheritance.parent = defaultGroup; defaultInheritance.parent = defaultGroup;
defaultInheritance.deriveInstance(); defaultInheritance.deriveInstance();
this.alwaysInheritDefaultGroup = alwaysInheritDefaultGroup;
} }
public synchronized void fill(DatabaseContents contents) public synchronized void fill(DatabaseContents contents)
{ {
@ -57,6 +60,7 @@ public class InternalCache
else else
names_u.add(row.entity); names_u.add(row.entity);
} }
names_g.add(defaultInheritance.parent);
for(String name : names_g) for(String name : names_g)
{ {
final String groupInternalName = name.toLowerCase(); final String groupInternalName = name.toLowerCase();
@ -144,6 +148,8 @@ public class InternalCache
Collections.sort(inheritances); Collections.sort(inheritances);
entry.getValue().inheritance = inheritances.toArray(new RowInheritance[inheritances.size()]); entry.getValue().inheritance = inheritances.toArray(new RowInheritance[inheritances.size()]);
} }
defaultInheritance.childType = EntityType.player;
defaultInheritance.entityParent = entities_g.get(defaultInheritance.parent.toLowerCase());
} }
public synchronized ResolutionResult resolvePlayer(String player) public synchronized ResolutionResult resolvePlayer(String player)
{ {
@ -160,9 +166,10 @@ public class InternalCache
{ {
final ArrayList<RowPermission> applicablePermissions = new ArrayList<>(); final ArrayList<RowPermission> applicablePermissions = new ArrayList<>();
final ArrayList<RowInheritance> applicableInheritance = new ArrayList<>(); final ArrayList<RowInheritance> applicableInheritance = new ArrayList<>();
params.groupList = new HashSet<>(); params.groupList = new LinkedHashSet<>();
params.finalPerms = new HashMap<>(); params.finalPerms = new HashMap<>();
params.instantiator = ""; params.instantiator = "";
params.depth = 0;
for(RowEntity row : entities_u.values()) for(RowEntity row : entities_u.values())
for(String identifier : params.applicableIdentifiers) for(String identifier : params.applicableIdentifiers)
if(row.playerType.isEntityApplicable(row.entity, identifier)) if(row.playerType.isEntityApplicable(row.entity, identifier))
@ -175,6 +182,9 @@ public class InternalCache
} }
final ArrayList<ResolutionResult> intermediateResults = new ArrayList<>(); final ArrayList<ResolutionResult> intermediateResults = new ArrayList<>();
Collections.sort(applicableInheritance); Collections.sort(applicableInheritance);
// Mix into default inheritance
if(applicableInheritance.isEmpty() || alwaysInheritDefaultGroup)
applicableInheritance.add(0, defaultInheritance);
for(RowInheritance row : applicableInheritance) for(RowInheritance row : applicableInheritance)
{ {
params.instantiator = ""; params.instantiator = "";
@ -191,8 +201,8 @@ public class InternalCache
{ {
final RowEntity currentParent = params.parentEntity; final RowEntity currentParent = params.parentEntity;
final String instantiator = params.instantiator; final String instantiator = params.instantiator;
params.groupList.add(currentParent.entity + ("".equals(instantiator) ? "" : Settings.separator + instantiator));
final ArrayList<ResolutionResult> intermediateResults = new ArrayList<>(); final ArrayList<ResolutionResult> intermediateResults = new ArrayList<>();
params.depth += 1;
for(RowInheritance row : params.parentEntity.inheritance) for(RowInheritance row : params.parentEntity.inheritance)
if(isInheritanceApplicable(params, row)) if(isInheritanceApplicable(params, row))
{ {
@ -202,6 +212,11 @@ public class InternalCache
: instantiator; : instantiator;
intermediateResults.add(resolveParent(params)); intermediateResults.add(resolveParent(params));
} }
params.depth -= 1;
params.groupList.add(
new String(new char[params.depth]).replace('\0', '*')
+ currentParent.entity
+ ("".equals(instantiator) ? "" : Settings.separator + instantiator));
// Prefixes and suffixes // Prefixes and suffixes
params.parentEntity = currentParent; params.parentEntity = currentParent;
params.instantiator = instantiator; params.instantiator = instantiator;

4
src/main/java/ru/simsonic/rscPermissions/Engine/Matchers.java

@ -11,11 +11,11 @@ public class Matchers
return multiobject.split(genericSplitter); return multiobject.split(genericSplitter);
} }
private static final Pattern patternUUID = Pattern.compile( private static final Pattern patternUUID = Pattern.compile(
"<uuid>" + "(?:[a-f\\d]{8}(?:-[a-f\\d]{4}){3}-[a-f\\d]{12})" + "</uuid>"); "(?:[a-f\\d]{8}(?:-[a-f\\d]{4}){3}-[a-f\\d]{12})");
private static boolean isCorrectUUID(String entityName) private static boolean isCorrectUUID(String entityName)
{ {
if(entityName == null) if(entityName == null)
return false; return false;
return patternUUID.matcher("<uuid>" + entityName.toLowerCase() + "</uuid>").find(); return patternUUID.matcher(entityName).find();
} }
} }

24
src/main/java/ru/simsonic/rscPermissions/Phrases.java → src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java

@ -1,13 +1,12 @@
package ru.simsonic.rscPermissions; package ru.simsonic.rscPermissions.Engine;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.channels.Channels; import java.nio.channels.Channels;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
import java.util.logging.Level; import ru.simsonic.rscPermissions.API.TranslationProvider;
import org.bukkit.configuration.file.YamlConfiguration; import ru.simsonic.rscPermissions.BukkitPluginMain;
import org.bukkit.plugin.Plugin;
public enum Phrases public enum Phrases
{ {
@ -28,23 +27,21 @@ public enum Phrases
{ {
return phrase; return phrase;
} }
public static void fill(Plugin plugin, String langName) public static void translate(TranslationProvider provider)
{ {
final File langFile = new File(plugin.getDataFolder(), langName + ".yml");
final YamlConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);
for(Phrases value : Phrases.values()) for(Phrases value : Phrases.values())
value.phrase = langConfig.getString(value.node, value.node); value.phrase = provider.getString(value.node);
} }
public static void extractAll(Plugin plugin) public static void extractAll(File workingDir)
{ {
extract(plugin, "english"); extract(workingDir, "english");
extract(plugin, "russian"); extract(workingDir, "russian");
} }
public static void extract(Plugin plugin, String langName) public static void extract(File workingDir, String langName)
{ {
try try
{ {
final File langFile = new File(plugin.getDataFolder(), langName + ".yml"); final File langFile = new File(workingDir, langName + ".yml");
if(!langFile.isFile()) if(!langFile.isFile())
{ {
final FileChannel fileChannel = new FileOutputStream(langFile).getChannel(); final FileChannel fileChannel = new FileOutputStream(langFile).getChannel();
@ -52,7 +49,6 @@ public enum Phrases
fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE); fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE);
} }
} catch(IOException ex) { } catch(IOException ex) {
BukkitPluginMain.consoleLog.log(Level.WARNING, "Cannot extract language: {0}\n{1}", new Object[] { langName, ex });
} }
} }
} }

1
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java

@ -9,6 +9,7 @@ public class ResolutionParams
public String[] destRegions; public String[] destRegions;
public String destWorld; public String destWorld;
public int expirience; public int expirience;
protected transient int depth;
protected transient RowEntity parentEntity; protected transient RowEntity parentEntity;
protected transient String instantiator; protected transient String instantiator;
protected transient Map<String, Boolean> finalPerms; protected transient Map<String, Boolean> finalPerms;

19
src/main/java/ru/simsonic/rscPermissions/IndependentMain.java

@ -1,5 +1,8 @@
package ru.simsonic.rscPermissions; package ru.simsonic.rscPermissions;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
import ru.simsonic.rscPermissions.Backends.BackendDatabase; import ru.simsonic.rscPermissions.Backends.BackendDatabase;
@ -41,14 +44,18 @@ public class IndependentMain
System.out.println("Permission database is empty, stopping."); System.out.println("Permission database is empty, stopping.");
return; return;
} }
intCache.setDefaultGroup("Moderators", true);
intCache.fill(contents); intCache.fill(contents);
final ResolutionResult result = intCache.resolvePlayer("rscpTester"); final ResolutionResult result = intCache.resolvePlayer("rscpTester");
for(Map.Entry<String, Boolean> perm : result.permissions.entrySet()) // Sorted output
System.out.println(perm.getKey() + " = " + perm.getValue()); ArrayList<String> perms = new ArrayList<>(result.permissions.keySet());
if(result.prefix != null) Collections.sort(perms);
System.out.println("Prefix = " + result.prefix); for(String key : perms)
if(result.suffix != null) System.out.println("Permission: " + key + " = " + result.permissions.get(key));
System.out.println("Suffix = " + result.suffix); for(String group : result.groups)
System.out.println("Parent: " + group);
System.out.println("Prefix: " + result.prefix);
System.out.println("Suffix: " + result.suffix);
System.out.println("Done."); System.out.println("Done.");
} }
} }

8
src/main/resources/languages/english.yml

@ -1,7 +1,7 @@
generic: generic:
enabled: "" enabled: "[rscp] rscPermissions has been successfully enabled."
disabled: "" disabled: "[rscp] rscPermissions has been disabled."
reloaded: "" reloaded: "[rscp] rscPermissions has been reloaded."
metrics: "[rscp] Metrics enabled." metrics: "[rscp] Metrics enabled."
mysql: mysql:
fetched: "" fetched: "[rscp] "

8
src/main/resources/languages/russian.yml

@ -1,7 +1,7 @@
generic: generic:
enabled: "" enabled: "[rscp] Плагин успешно включён."
disabled: "" disabled: "[rscp] Плагин выключен."
reloaded: "" reloaded: "[rscp] Плагин перезапущен."
metrics: "[rscp] Включён сбор метрики (mcstats.org)." metrics: "[rscp] Включён сбор метрики (mcstats.org)."
mysql: mysql:
fetched: "" fetched: "[rscp] "

Loading…
Cancel
Save