mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-12-26 19:18:53 +01:00
Force __global__ BUILD flag to NONE.
This is due to the legacy reason of the global region having not been previously processed as a regular region.
This commit is contained in:
parent
bfb3f9e840
commit
a35aaf9659
@ -407,14 +407,20 @@ public int getPriority(final ProtectedRegion region) {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <V> V getEffectiveFlag(final ProtectedRegion region, Flag<V> flag, @Nullable LocalPlayer player) {
|
public <V> V getEffectiveFlag(final ProtectedRegion region, Flag<V> flag, @Nullable LocalPlayer player) {
|
||||||
// The global region normally does not prevent building so
|
if (region == globalRegion) {
|
||||||
// PASSTHROUGH has to be ALLOW, except when people use the global
|
if (flag == DefaultFlag.PASSTHROUGH) {
|
||||||
// region as a whitelist
|
// Has members/owners -> the global region acts like
|
||||||
if (region == globalRegion && flag == DefaultFlag.PASSTHROUGH) {
|
// a regular region without PASSTHROUGH
|
||||||
if (region.hasMembersOrOwners()) {
|
if (region.hasMembersOrOwners()) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return (V) State.ALLOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (flag == DefaultFlag.BUILD) {
|
||||||
|
// Legacy behavior -> we can't let people change BUILD on
|
||||||
|
// the global region
|
||||||
return null;
|
return null;
|
||||||
} else {
|
|
||||||
return (V) State.ALLOW;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1959,4 +1959,38 @@ public void testGetEffectiveFlagInheritanceAndDifferingGroupsMemberOnParentFlagO
|
|||||||
assertThat(result.getEffectiveFlag(region, DefaultFlag.FAREWELL_MESSAGE, null), equalTo("everyone"));
|
assertThat(result.getEffectiveFlag(region, DefaultFlag.FAREWELL_MESSAGE, null), equalTo("everyone"));
|
||||||
assertThat(result.getEffectiveFlag(region, DefaultFlag.GREET_MESSAGE, null), equalTo(null));
|
assertThat(result.getEffectiveFlag(region, DefaultFlag.GREET_MESSAGE, null), equalTo(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetEffectiveFlagGlobalRegionBuild() throws Exception {
|
||||||
|
MockApplicableRegionSet mock = new MockApplicableRegionSet();
|
||||||
|
|
||||||
|
ProtectedRegion global = mock.global();
|
||||||
|
|
||||||
|
FlagValueCalculator result = mock.getFlagCalculator();
|
||||||
|
assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetEffectiveFlagGlobalRegionBuildDeny() throws Exception {
|
||||||
|
MockApplicableRegionSet mock = new MockApplicableRegionSet();
|
||||||
|
|
||||||
|
ProtectedRegion global = mock.global();
|
||||||
|
global.setFlag(DefaultFlag.BUILD, State.DENY);
|
||||||
|
|
||||||
|
FlagValueCalculator result = mock.getFlagCalculator();
|
||||||
|
// Cannot let users override BUILD on GLOBAL
|
||||||
|
assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetEffectiveFlagGlobalRegionBuildAllow() throws Exception {
|
||||||
|
MockApplicableRegionSet mock = new MockApplicableRegionSet();
|
||||||
|
|
||||||
|
ProtectedRegion global = mock.global();
|
||||||
|
global.setFlag(DefaultFlag.BUILD, State.ALLOW);
|
||||||
|
|
||||||
|
FlagValueCalculator result = mock.getFlagCalculator();
|
||||||
|
// Cannot let users override BUILD on GLOBAL
|
||||||
|
assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(null));
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user