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);
+ }
+}