diff --git a/pom.xml b/pom.xml
index ce4918d75..bde419a5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,7 @@
com.sk89q
dummypermscompat
- 1.4
+ 1.6
diff --git a/src/main/java/com/sk89q/wepif/PermissionsResolverManager.java b/src/main/java/com/sk89q/wepif/PermissionsResolverManager.java
index ae3779cad..a107f7a9c 100644
--- a/src/main/java/com/sk89q/wepif/PermissionsResolverManager.java
+++ b/src/main/java/com/sk89q/wepif/PermissionsResolverManager.java
@@ -86,6 +86,7 @@ public class PermissionsResolverManager implements PermissionsResolver {
protected Class extends PermissionsResolver>[] availableResolvers = new Class[] {
PluginPermissionsResolver.class,
PermissionsExResolver.class,
+ bPermissionsResolver.class,
NijiPermissionsResolver.class,
DinnerPermsResolver.class,
FlatFilePermissionsResolver.class
@@ -268,7 +269,8 @@ public class PermissionsResolverManager implements PermissionsResolver {
String name = plugin.getDescription().getName();
if (plugin instanceof PermissionsProvider) {
setPluginPermissionsResolver(plugin);
- } else if ("Permissions".equals(name) || "PermissionsEx".equals(name)) {
+ } else if ("Permissions".equals(name) || "PermissionsEx".equals(name)
+ || "bPermissions".equals(name)) {
load();
}
}
@@ -278,7 +280,8 @@ public class PermissionsResolverManager implements PermissionsResolver {
String name = event.getPlugin().getDescription().getName();
if (event.getPlugin() instanceof PermissionsProvider
- || "Permissions".equals(name) || "PermissionsEx".equals(name)) {
+ || "Permissions".equals(name) || "PermissionsEx".equals(name)
+ || "bPermissions".equals(name)) {
load();
}
}
diff --git a/src/main/java/com/sk89q/wepif/bPermissionsResolver.java b/src/main/java/com/sk89q/wepif/bPermissionsResolver.java
new file mode 100644
index 000000000..2e7dae32e
--- /dev/null
+++ b/src/main/java/com/sk89q/wepif/bPermissionsResolver.java
@@ -0,0 +1,102 @@
+/*
+ * WorldEdit
+ * Copyright (C) 2012 sk89q
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.wepif;
+
+import com.sk89q.util.yaml.YAMLProcessor;
+import de.bananaco.bpermissions.api.ApiLayer;
+import de.bananaco.bpermissions.api.util.CalculableType;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.Server;
+import org.bukkit.entity.Player;
+
+/**
+ * @author zml2008
+ */
+public class bPermissionsResolver implements PermissionsResolver {
+
+ public static PermissionsResolver factory(Server server, YAMLProcessor config) {
+ try {
+ Class.forName("de.bananaco.bpermissions.ApiLayer");
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+
+ return new bPermissionsResolver(server);
+ }
+
+ private final Server server;
+
+ public bPermissionsResolver(Server server) {
+ this.server = server;
+ }
+
+ public void load() {
+ }
+
+ public String getDetectionMessage() {
+ return "bPermissions detected! Using bPermissions for permissions";
+ }
+
+ public boolean hasPermission(String name, String permission) {
+ return hasPermission(server.getOfflinePlayer(name), permission);
+ }
+
+ public boolean hasPermission(String worldName, String name, String permission) {
+ return ApiLayer.hasPermission(worldName, CalculableType.USER, name, permission);
+ }
+
+ public boolean inGroup(String player, String group) {
+ return inGroup(server.getOfflinePlayer(player), group);
+ }
+
+ public String[] getGroups(String player) {
+ return getGroups(server.getOfflinePlayer(player));
+ }
+
+ public boolean hasPermission(OfflinePlayer player, String permission) {
+ Player onlinePlayer = player.getPlayer();
+ if (onlinePlayer == null) {
+ return ApiLayer.hasPermission(null, CalculableType.USER, player.getName(), permission);
+ } else {
+ return ApiLayer.hasPermission(onlinePlayer.getWorld().getName(), CalculableType.USER, player.getName(), permission);
+ }
+ }
+
+ public boolean hasPermission(String worldName, OfflinePlayer player, String permission) {
+ return hasPermission(worldName, player.getName(), permission);
+ }
+
+ public boolean inGroup(OfflinePlayer player, String group) {
+ Player onlinePlayer = player.getPlayer();
+ if (onlinePlayer == null) {
+ return ApiLayer.hasGroupRecursive(null, CalculableType.USER, player.getName(), group);
+ } else {
+ return ApiLayer.hasGroupRecursive(onlinePlayer.getWorld().getName(), CalculableType.USER, player.getName(), group);
+ }
+ }
+
+ public String[] getGroups(OfflinePlayer player) {
+ Player onlinePlayer = player.getPlayer();
+ if (onlinePlayer == null) {
+ return ApiLayer.getGroups(null, CalculableType.USER, player.getName());
+ } else {
+ return ApiLayer.getGroups(onlinePlayer.getWorld().getName(), CalculableType.USER, player.getName());
+ }
+ }
+}
diff --git a/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java b/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java
index 8b5b892e5..d1551ba38 100644
--- a/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java
+++ b/src/main/java/com/sk89q/worldedit/bukkit/WorldEditListener.java
@@ -1,7 +1,6 @@
-// $Id$
/*
* WorldEdit
- * Copyright (C) 2012 sk89q and contributors
+ * Copyright (C) 2012 sk89q
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,6 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
+// $Id$
+
package com.sk89q.worldedit.bukkit;
import com.sk89q.util.StringUtil;