From aab7d4a649f0b4509df0869228b5403417977c69 Mon Sep 17 00:00:00 2001 From: Florian CUNY Date: Tue, 7 Aug 2018 16:42:47 +0200 Subject: [PATCH] Made mod bypass permissions flags-specific & differenciated between everywhere and only on island This is a 2 in 1 : #70 and #139. Those were long-awaited features. Now it's time for testing ! --- .../bentobox/bentobox/api/flags/AbstractFlagListener.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/api/flags/AbstractFlagListener.java b/src/main/java/world/bentobox/bentobox/api/flags/AbstractFlagListener.java index 3175677a5..ada3508be 100644 --- a/src/main/java/world/bentobox/bentobox/api/flags/AbstractFlagListener.java +++ b/src/main/java/world/bentobox/bentobox/api/flags/AbstractFlagListener.java @@ -144,8 +144,8 @@ public abstract class AbstractFlagListener implements Listener { return false; } - // Ops or bypass mods can do anything - if (user.isOp() || user.hasPermission(getIWM().getPermissionPrefix(loc.getWorld()) + ".mod.bypassprotect")) { + // Ops or "bypass everywhere" moderators can do anything + if (user.isOp() || user.hasPermission(getIWM().getPermissionPrefix(loc.getWorld()) + ".mod.bypass." + flag.getID() + ".everywhere")) { user = null; return true; } @@ -154,7 +154,8 @@ public abstract class AbstractFlagListener implements Listener { User.setPlugin(plugin); if (island.isPresent()) { - if (!island.get().isAllowed(user, flag)) { + // If it is not allowed on the island, "bypass island" moderators can do anything + if (!island.get().isAllowed(user, flag) && !user.hasPermission(getIWM().getPermissionPrefix(loc.getWorld()) + ".mod.bypass." + flag.getID() + ".island")) { noGo(e, flag, silent); // Clear the user for the next time user = null;