diff --git a/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java b/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java index 0a0e5dad..91279b27 100644 --- a/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java +++ b/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java @@ -390,25 +390,28 @@ public V getEffectiveFlag(final ProtectedRegion region, Flag flag, @Nulla while (current != null) { V value = current.getFlag(flag); - boolean use = true; - if (flag.getRegionGroupFlag() != null) { - RegionGroup group = current.getFlag(flag.getRegionGroupFlag()); - if (group == null) { - group = flag.getRegionGroupFlag().getDefault(); + if (value != null) { + boolean use = true; + + if (flag.getRegionGroupFlag() != null) { + RegionGroup group = current.getFlag(flag.getRegionGroupFlag()); + if (group == null) { + group = flag.getRegionGroupFlag().getDefault(); + } + + if (subject == null) { + use = group.contains(Association.NON_MEMBER); + } else if (!group.contains(subject.getAssociation(region))) { + use = false; + } } - if (subject == null) { - use = group.contains(Association.NON_MEMBER); - } else if (!group.contains(subject.getAssociation(region))) { - use = false; + if (use) { + return value; } } - if (use && value != null) { - return value; - } - current = current.getParent(); }