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 будет отключена."