From e6cd9c1e9561543dd2e9dc7f1570a67acf2b5c8d Mon Sep 17 00:00:00 2001
From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Date: Sat, 19 Feb 2022 21:45:58 +0000
Subject: [PATCH] Adds support for alternate permissions managers

---
 .../permissions/PermissionsManager.java       | 25 ++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/ParaUtil.Spigot/src/me/aa07/parautil/spigot/permissions/PermissionsManager.java b/ParaUtil.Spigot/src/me/aa07/parautil/spigot/permissions/PermissionsManager.java
index 7d550c7..9a18118 100644
--- a/ParaUtil.Spigot/src/me/aa07/parautil/spigot/permissions/PermissionsManager.java
+++ b/ParaUtil.Spigot/src/me/aa07/parautil/spigot/permissions/PermissionsManager.java
@@ -20,6 +20,7 @@ public class PermissionsManager implements Listener {
     private PermissionsConfig config;
     private HashMap<Player, PermissionAttachment> attachments;
     private HashSet<Player> admins;
+    private boolean enabled;
 
     public PermissionsManager(ParaUtilSpigot plugin, ConfigurationManager config) {
         this.plugin = plugin;
@@ -32,22 +33,38 @@ public PermissionsManager(ParaUtilSpigot plugin, ConfigurationManager config) {
         // ADD ALL PERMISSIONS THIS PLUGIN USES
         Bukkit.getPluginManager().addPermission(new Permission("parautil.lookup"));
 
-        plugin.getLogger().info("[PermissionsManager] Loaded");
+        if (Bukkit.getPluginManager().getPlugin("PermissionsEx") != null) {
+            enabled = false;
+            plugin.getLogger().info("[PermissionsManager] PermissionsEx detected. Events disabled.");
+        } else {
+            enabled = true;
+            plugin.getLogger().info("[PermissionsManager] Loaded");
+        }
+
     }
 
     // Called from LoginMananger
     public void grantAdminPermissions(Player player) {
+        if (!enabled) {
+            return;
+        }
         admins.add(player);
     }
 
     // Called from the reload command
     public void refreshAll() {
+        if (!enabled) {
+            return;
+        }
         for (Player player : Bukkit.getOnlinePlayers()) {
             refreshPermissions(player);
         }
     }
 
     public void refreshPermissions(Player player) {
+        if (!enabled) {
+            return;
+        }
         PermissionAttachment pa = attachments.get(player);
         // Remove all old
         for (String perm : pa.getPermissions().keySet()) {
@@ -74,12 +91,18 @@ public void refreshPermissions(Player player) {
     }
 
     public void addAttachment(Player player) {
+        if (!enabled) {
+            return;
+        }
         PermissionAttachment pa = player.addAttachment(plugin);
         attachments.put(player, pa);
     }
 
     @EventHandler
     public void onPlayerQuit(PlayerQuitEvent event) {
+        if (!enabled) {
+            return;
+        }
         attachments.remove(event.getPlayer());
     }