diff --git a/Essentials/pom.xml b/Essentials/pom.xml index f531dd4a2..e95f72cc1 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -129,7 +129,7 @@ net.milkbowl.vault Vault - 1.2.32 + 1.5.4 zPermissions @@ -139,4 +139,10 @@ ${project.basedir}/../lib/zPermissions.jar + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases + + diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 399125763..b31fcc3f3 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -97,6 +97,18 @@ public class PermissionsHandler implements IPermissionsHandler { public void checkPermissions() { final PluginManager pluginManager = ess.getServer().getPluginManager(); + final Plugin vaultAPI = pluginManager.getPlugin("Vault"); + if (vaultAPI != null && vaultAPI.isEnabled()) { + if (!(handler instanceof VaultHandler)) { + VaultHandler vault = new VaultHandler(ess); + if (vault.setupPermissions()) { + LOGGER.log(Level.INFO, "Essentials: Using Vault based permissions."); + handler = vault; + return; + } + } + } + final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx"); if (permExPlugin != null && permExPlugin.isEnabled()) { if (!(handler instanceof PermissionsExHandler)) { diff --git a/Essentials/src/com/earth2me/essentials/perm/VaultHandler.java b/Essentials/src/com/earth2me/essentials/perm/VaultHandler.java new file mode 100644 index 000000000..43ea54bd3 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/VaultHandler.java @@ -0,0 +1,51 @@ +package com.earth2me.essentials.perm; + +import com.earth2me.essentials.Essentials; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.entity.Player; +import org.bukkit.plugin.RegisteredServiceProvider; + +import java.util.Arrays; +import java.util.List; + +public class VaultHandler extends SuperpermsHandler { + + private Essentials plugin; + private static Permission perms = null; + + public VaultHandler(Essentials plugin) { + this.plugin = plugin; + } + + public boolean setupPermissions() { + try { + Class.forName("net.milkbowl.vault.permission.Permission"); + } catch (ClassNotFoundException e) { + return false; + } + + RegisteredServiceProvider rsp = plugin.getServer().getServicesManager().getRegistration(Permission.class); + perms = rsp.getProvider(); + return perms != null; + } + + @Override + public String getGroup(final Player base) { + return perms.getPrimaryGroup(base); + } + + @Override + public List getGroups(final Player base) { + return Arrays.asList(perms.getPlayerGroups(base)); + } + + @Override + public boolean inGroup(final Player base, final String group) { + return perms.playerInGroup(base, group); + } + + @Override + public boolean hasPermission(final Player base, String node) { + return base.hasPermission(node); + } +}