diff --git a/pom.xml b/pom.xml index bf7f5ee..21087e0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ ru.simsonic rscPermissions - 0.9.13b + 0.9.15b jar rscPermissions @@ -46,7 +46,7 @@ mysql mysql-connector-java - 5.1.34 + 5.1.35 runtime @@ -107,7 +107,7 @@ org.spongepowered spongeapi - 1.0 + 2.0 provided @@ -122,7 +122,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.2 + 3.3 1.7 1.7 @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 2.5 + 2.6 false @@ -185,7 +185,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.1 + 2.10.3 attach-javadocs diff --git a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java index cef7256..43b4206 100644 --- a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java +++ b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java @@ -1,10 +1,13 @@ package ru.simsonic.rscPermissions; + +import com.sk89q.wepif.PermissionsResolverManager; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.ServicePriority; import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.Bukkit.VaultChat; import ru.simsonic.rscPermissions.Bukkit.VaultPermission; +import ru.simsonic.rscPermissions.Bukkit.WorldEditPermissions; import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscUtilityLibrary.Bukkit.Tools; import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; @@ -70,6 +73,29 @@ public class BridgeForBukkitAPI } else BukkitPluginMain.consoleLog.warning(GenericChatCodes.processStringStatic("[rscp] " + Phrases.INTEGRATION_V_N.toString())); } + protected void setupWEPIF() + { + final Plugin plugin = rscp.getServer().getPluginManager().getPlugin("WorldEdit"); + if(plugin != null) + { + final WorldEditPermissions wepif = new WorldEditPermissions(this); + final PermissionsResolverManager prm = PermissionsResolverManager.getInstance(); + if(prm != null) + prm.setPluginPermissionsResolver(wepif); + else + com.sk89q.wepif.PermissionsResolverManager.initialize(wepif); + BukkitPluginMain.consoleLog.info(GenericChatCodes.processStringStatic("[rscp] " + Phrases.INTEGRATION_WE_Y.toString())); + } else + BukkitPluginMain.consoleLog.warning(GenericChatCodes.processStringStatic("[rscp] " + Phrases.INTEGRATION_WE_N.toString())); + } + public void printDebugString(String info) + { + if(rscp.permissionManager.isConsoleDebugging()) + { + final StringBuilder sb = new StringBuilder(Settings.chatPrefix).append("[DEBUG] {_LS}").append(info); + rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString())); + } + } public void printDebugStackTrace() { if(rscp.permissionManager.isConsoleDebugging()) diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java index 3d58bc2..8f76849 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import ru.simsonic.rscPermissions.Bukkit.BukkitDatabaseFetcher; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java index bc63f0b..7d1ed5f 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import org.bukkit.command.CommandSender; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.Engine.Phrases; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java index 59c07dd..7362068 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandFetch.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import org.bukkit.command.CommandSender; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.Engine.Phrases; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java index 0ff33a6..c309469 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandLock.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import org.bukkit.command.CommandSender; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java index f97a688..f9ffbbd 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandReload.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import org.bukkit.command.CommandSender; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.Engine.Phrases; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java index 71636a3..d37c0f7 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUnlock.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; + import org.bukkit.command.CommandSender; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java index 0dd93fe..2df585a 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit; + import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.entity.Player; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java index c4d894c..4fce010 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit; + import net.milkbowl.vault.permission.Permission; import org.bukkit.OfflinePlayer; import org.bukkit.World; diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java index f805c4e..29ed40d 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Bukkit; + import java.util.Set; import org.bukkit.OfflinePlayer; import org.bukkit.World; @@ -41,197 +42,210 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss @Deprecated public boolean playerAdd(String world, String player, String permission) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override @Deprecated public boolean playerRemove(String world, String player, String permission) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupHas(String world, String group, String permission) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupAdd(String world, String group, String permission) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupRemove(String world, String group, String permission) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override @Deprecated public boolean playerAddGroup(String world, String player, String group) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override @Deprecated public boolean playerRemoveGroup(String world, String player, String group) { + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean has(CommandSender sender, String permission) { + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); return sender.hasPermission(permission); } @Override public boolean has(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); return rscp.permissionManager.getResult(player).hasPermission(permission); } @Override @Deprecated public boolean playerHas(String world, String player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); return rscp.permissionManager.getResult(player).hasPermission(permission); } @Override public boolean playerHas(String world, OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); return rscp.permissionManager.getResult(player).hasPermission(permission); } @Override public boolean playerHas(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); return rscp.permissionManager.getResult(player).hasPermission(permission); } @Override public boolean playerAdd(String world, OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAdd(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddTransient(OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddTransient(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddTransient(String worldName, OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddTransient(String worldName, Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveTransient(String worldName, OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveTransient(String worldName, Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemove(String world, OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override @Deprecated public boolean playerRemove(World world, String player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemove(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveTransient(OfflinePlayer player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveTransient(Player player, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupHas(World world, String group, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupAdd(World world, String group, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean groupRemove(World world, String group, String permission) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddGroup(String world, OfflinePlayer player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerAddGroup(Player player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveGroup(String world, OfflinePlayer player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override public boolean playerRemoveGroup(Player player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); throw new UnsupportedOperationException("This method is unsupported by rscPermissions."); } @Override @Deprecated public boolean playerInGroup(String world, String player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); for(String parent : result.getDeorderedGroups()) if(parent.equalsIgnoreCase(group)) @@ -241,7 +255,7 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss @Override public boolean playerInGroup(String world, OfflinePlayer player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); for(String parent : result.getDeorderedGroups()) if(parent.equalsIgnoreCase(group)) @@ -251,7 +265,7 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss @Override public boolean playerInGroup(Player player, String group) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); for(String parent : result.getDeorderedGroups()) if(parent.equalsIgnoreCase(group)) @@ -262,21 +276,21 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss @Deprecated public String[] getPlayerGroups(String world, String player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); return result.getDeorderedGroups(); } @Override public String[] getPlayerGroups(String world, OfflinePlayer player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); return result.getDeorderedGroups(); } @Override public String[] getPlayerGroups(Player player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final ResolutionResult result = rscp.permissionManager.getResult(player); return result.getDeorderedGroups(); } @@ -284,28 +298,28 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss @Deprecated public String getPrimaryGroup(String world, String player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final String[] groups = getPlayerGroups(world, player); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); } @Override public String getPrimaryGroup(String world, OfflinePlayer player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final String[] groups = getPlayerGroups(world, player); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); } @Override public String getPrimaryGroup(Player player) { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final String[] groups = getPlayerGroups(player); return groups.length > 0 ? groups[groups.length - 1] : rscp.settings.getDefaultGroup(); } @Override public String[] getGroups() { - rscp.bridgeForBukkit.printDebugStackTrace(); + bridge.printDebugStackTrace(); final Set groups = rscp.internalCache.getGroups(); return groups.toArray(new String[groups.size()]); } diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/WorldEditPermissions.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/WorldEditPermissions.java new file mode 100644 index 0000000..dbf11fd --- /dev/null +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/WorldEditPermissions.java @@ -0,0 +1,206 @@ +package ru.simsonic.rscPermissions.Bukkit; + +import com.avaje.ebean.EbeanServer; +import com.sk89q.wepif.PermissionsResolver; +import java.io.File; +import java.io.InputStream; +import java.util.List; +import java.util.logging.Logger; +import org.bukkit.OfflinePlayer; +import org.bukkit.Server; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.generator.ChunkGenerator; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginDescriptionFile; +import org.bukkit.plugin.PluginLoader; +import ru.simsonic.rscPermissions.BridgeForBukkitAPI; +import ru.simsonic.rscPermissions.BukkitPluginMain; + +public final class WorldEditPermissions implements Plugin, PermissionsResolver +{ + private final BukkitPluginMain rscp; + private final BridgeForBukkitAPI bridge; + private final VaultPermission permissions; + public WorldEditPermissions(BridgeForBukkitAPI bridge) + { + this.bridge = bridge; + this.rscp = (BukkitPluginMain)bridge.getPlugin(); + this.permissions = (VaultPermission)bridge.getPermission(); + } + @Override + public void load() + { + } + @Override + public String getDetectionMessage() + { + return "Using rscp's WEPIF implementation for permissions"; + } + @Override + @Deprecated + public boolean hasPermission(String player, String permission) + { + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); + return rscp.permissionManager.getResult(player).hasPermissionWC(permission); + } + @Override + @Deprecated + public boolean hasPermission(String worldName, String player, String permission) + { + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); + return rscp.permissionManager.getResult(player).hasPermissionWC(permission); + } + @Override + @Deprecated + public boolean hasPermission(OfflinePlayer player, String permission) + { + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); + return rscp.permissionManager.getResult(player).hasPermissionWC(permission); + } + @Override + @Deprecated + public boolean hasPermission(String world, OfflinePlayer player, String permission) + { + bridge.printDebugString("Looking for permission: {_LG}" + permission); + bridge.printDebugStackTrace(); + return rscp.permissionManager.getResult(player).hasPermissionWC(permission); + } + @Override + public boolean inGroup(OfflinePlayer player, String group) + { + return permissions.playerInGroup("", player, group); + } + @Override + @Deprecated + public boolean inGroup(String player, String group) + { + return permissions.playerInGroup("", player, group); + } + @Override + public String[] getGroups(OfflinePlayer player) + { + return permissions.getPlayerGroups("", player); + } + @Override + @Deprecated + public String[] getGroups(String player) + { + return permissions.getPlayerGroups("", player); + } + @Override + public String getName() + { + return rscp.getName(); + } + @Override + public PluginDescriptionFile getDescription() + { + return rscp.getDescription(); + } + @Override + public File getDataFolder() + { + return rscp.getDataFolder(); + } + @Override + public FileConfiguration getConfig() + { + return rscp.getConfig(); + } + @Override + public InputStream getResource(String filename) + { + return rscp.getResource(filename); + } + @Override + public void saveConfig() + { + rscp.saveConfig(); + } + @Override + public void saveDefaultConfig() + { + rscp.saveDefaultConfig(); + } + @Override + public void saveResource(String arg0, boolean arg1) + { + rscp.saveResource(arg0, arg1); + } + @Override + public void reloadConfig() + { + rscp.reloadConfig(); + } + @Override + public PluginLoader getPluginLoader() + { + return rscp.getPluginLoader(); + } + @Override + public Server getServer() + { + return rscp.getServer(); + } + @Override + public boolean isEnabled() + { + return rscp.isEnabled(); + } + @Override + public void onLoad() + { + rscp.onLoad(); + } + @Override + public void onEnable() + { + rscp.onEnable(); + } + @Override + public void onDisable() + { + rscp.onDisable(); + } + @Override + public boolean isNaggable() + { + return rscp.isNaggable(); + } + @Override + public void setNaggable(boolean canNag) + { + rscp.setNaggable(canNag); + } + @Override + public EbeanServer getDatabase() + { + return rscp.getDatabase(); + } + @Override + public ChunkGenerator getDefaultWorldGenerator(String arg0, String arg1) + { + return rscp.getDefaultWorldGenerator(arg0, arg1); + } + @Override + public Logger getLogger() + { + return rscp.getLogger(); + } + @Override + public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) + { + return rscp.onTabComplete(sender, cmd, label, args); + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) + { + return rscp.onCommand(sender, cmd, label, args); + } +} diff --git a/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java b/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java index 1a3f9cb..e2c33e4 100644 --- a/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java +++ b/src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java @@ -75,13 +75,21 @@ public final class BukkitPluginMain extends JavaPlugin metrics.start(); consoleLog.info(Phrases.PLUGIN_METRICS.toString()); } catch(IOException ex) { - consoleLog.log(Level.INFO, "[rscp][Metrics] Exception: {0}", ex); + consoleLog.log(Level.WARNING, "[rscp][Metrics] Exception: {0}", ex); } // Register event's dispatcher getServer().getPluginManager().registerEvents(bukkitListener, this); regionUpdateObserver.registerListeners(); - // Integrate Vault + // Integrate Vault and WEPIF bridgeForBukkit.setupVault(); + getServer().getScheduler().runTask(this, new Runnable() + { + @Override + public void run() + { + bridgeForBukkit.setupWEPIF(); + } + }); // WorldGuard, Residence and other possible region list providers regionListProvider.integrate(); // Start all needed parallel threads as daemons diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java index 2630c33..bd412d8 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Engine; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -15,6 +16,7 @@ import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowPermission; import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.Backends.DatabaseContents; +import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; public class InternalCache { @@ -199,6 +201,8 @@ public class InternalCache intermediateResults.add(resolveParent(params)); } final ResolutionResult result = processPrefixesAndSuffixes(params, intermediateResults); + result.prefix = GenericChatCodes.processStringStatic(result.prefix); + result.suffix = GenericChatCodes.processStringStatic(result.suffix); processPermissions(params, applicablePermissions); result.permissions = params.finalPerms; result.groups = params.groupList; diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java index 03ce09c..7a6c9dd 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java @@ -1,4 +1,5 @@ package ru.simsonic.rscPermissions.Engine; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -18,6 +19,8 @@ public enum Phrases PLUGIN_CONSOLE_ONLY("generic.console-only"), INTEGRATION_V_Y ("integration.vault-yes"), INTEGRATION_V_N ("integration.vault-no"), + INTEGRATION_WE_Y ("integration.worldedit-yes"), + INTEGRATION_WE_N ("integration.worldedit-no"), INTEGRATION_WG_Y ("integration.worldguard-yes"), INTEGRATION_WG_N ("integration.worldguard-no"), INTEGRATION_WG_OLD ("integration.worldguard-old"), diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java index b6fc833..f3af936 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java @@ -1,8 +1,10 @@ package ru.simsonic.rscPermissions.Engine; + import java.util.ArrayList; import java.util.Map; import java.util.Set; import ru.simsonic.rscPermissions.API.Settings; +import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; public class ResolutionResult { @@ -17,6 +19,18 @@ public class ResolutionResult return entry.getValue(); return false; } + public boolean hasPermissionWC(String permission) + { + for(Map.Entry entry : permissions.entrySet()) + { + final String key = entry.getKey(); + if(key.equals(permission)) + return entry.getValue(); + if(key.contains("*") && GenericChatCodes.wildcardMatch(permission, key)) + return entry.getValue(); + } + return false; + } public String[] getDeorderedGroups() { final ArrayList list = new ArrayList(groups.size()); diff --git a/src/main/resources/languages/english.yml b/src/main/resources/languages/english.yml index ec5a283..d7e2147 100644 --- a/src/main/resources/languages/english.yml +++ b/src/main/resources/languages/english.yml @@ -8,6 +8,8 @@ generic: integration: vault-yes: "{_LG}Vault was found and integrated." vault-no: "{_LR}There is no Vault found. Vault is highly recommended to be installed on your server." + worldedit-yes: "{_LG}WorldEdit (WEPIF) was found and integrated." + worldedit-no: "{_YL}WorldEdit (WEPIF) was not found." worldguard-yes: "{_LG}WorldGuard was found and integrated." worldguard-no: "{_YL}WorldGuard was not found." worldguard-old: "{_LR}WorldGuard 5.9 or older is found, I need 6.0 or later. {_YL}Region support for WG is disabled." diff --git a/src/main/resources/languages/russian.yml b/src/main/resources/languages/russian.yml index 1a2ef43..3a8e713 100644 --- a/src/main/resources/languages/russian.yml +++ b/src/main/resources/languages/russian.yml @@ -8,6 +8,8 @@ generic: integration: vault-yes: "{_LG}Vault обнаружён и подключён." vault-no: "{_LR}Не удаётся найти плагин Vault. Рекомендуется его скорейшая установка." + worldedit-yes: "{_LG}WorldEdit (WEPIF) обнаружён и подключён." + worldedit-no: "{_YL}WorldEdit (WEPIF) не обнаружен." worldguard-yes: "{_LG}WorldGuard обнаружён и подключён." worldguard-no: "{_YL}WorldGuard не обнаружен." worldguard-old: "{_LR}Найден WorldGuard 5.9 или старше, но для работы требуется версия 6.0 или новее. {_YL}Поддержка регионов WG будет отключена."