From 3d0c045cd43e609ade4e7db3fb8d9fdf6b29139c Mon Sep 17 00:00:00 2001 From: zml2008 Date: Sun, 22 Jan 2012 21:11:54 -0800 Subject: [PATCH] Added bPermissions support --- pom.xml | 2 +- .../wepif/PermissionsResolverManager.java | 7 +- .../com/sk89q/wepif/bPermissionsResolver.java | 102 ++++++++++++++++++ .../worldedit/bukkit/WorldEditListener.java | 6 +- 4 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/sk89q/wepif/bPermissionsResolver.java 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[] 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;