diff --git a/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java b/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java index 04e0161..f9e4952 100644 --- a/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java +++ b/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java @@ -21,7 +21,9 @@ public class PotionRegionEffect extends RegionEffect { @Override public void effect(Player player) { - player.addPotionEffect(potionEffect); + if (this.isIgnorePerm() || player.hasPermission(this.getPermission())) { + player.addPotionEffect(potionEffect); + } } @Override diff --git a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java index 5a5b583..7399c09 100644 --- a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java +++ b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java @@ -6,13 +6,15 @@ import org.bukkit.inventory.ItemStack; import java.util.List; public abstract class RegionEffect { - + private final boolean wearingRequired; private final List ignoreItems; + private final boolean ignorePerm; public RegionEffect(boolean wearingRequired, List ignoreItems) { this.wearingRequired = wearingRequired; this.ignoreItems = ignoreItems; + this.ignorePerm = true; } /** @@ -39,12 +41,29 @@ public abstract class RegionEffect { /** * Whether the ItemStack is within #getIgnoreItems() - * @param item + * @param item the {@link ItemStack} * @return true if item is ignored */ public boolean shouldIgnore(ItemStack item) { return ignoreItems.contains(item); } + + /** + * Gets the permission for this effect to apply. + * @return permission the player requires + */ + public String getPermission() { + return "rpgregions.effect." + getName(); + } + + /** + * Whether the permission should be ignored or not. + * @return true if permission is ignored + */ + public boolean isIgnorePerm() { + return ignorePerm; + } + /** * User friendly name of this effect. * @return name of effect