Update isRegionProtectedFromBuild() WorldGuard

This commit is contained in:
jack lin 2014-09-30 23:49:26 +13:00
parent 20cbb0031d
commit 07799fdf0b

View file

@ -38,11 +38,12 @@ import org.bukkit.World.Environment;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock; import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.FallingSand;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -119,11 +120,11 @@ import com.projectkorra.ProjectKorra.waterbending.WaterWall;
import com.projectkorra.ProjectKorra.waterbending.Wave; import com.projectkorra.ProjectKorra.waterbending.Wave;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.flags.DefaultFlag; import com.sk89q.worldguard.protection.flags.DefaultFlag;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.CheckType;
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager; import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
import org.bukkit.entity.FallingSand;
import org.bukkit.entity.TNTPrimed;
public class Methods { public class Methods {
@ -1180,6 +1181,7 @@ public class Methods {
for (Location location : new Location[] { loc, player.getLocation() }) { for (Location location : new Location[] { loc, player.getLocation() }) {
World world = location.getWorld();
if (lwc != null && respectLWC) { if (lwc != null && respectLWC) {
LWCPlugin lwcp = (LWCPlugin) lwc; LWCPlugin lwcp = (LWCPlugin) lwc;
@ -1199,32 +1201,53 @@ public class Methods {
if (ignite.contains(ability)) { if (ignite.contains(ability)) {
if (!wg.hasPermission(player, "worldguard.override.lighter")) { if (!wg.hasPermission(player, "worldguard.override.lighter")) {
if (wg.getGlobalStateManager().get(location.getWorld()).blockLighter) if (wg.getGlobalStateManager().get(world).blockLighter)
return true;
if (!wg.getGlobalRegionManager().hasBypass(player,
location.getWorld())
&& !wg.getGlobalRegionManager()
.get(location.getWorld())
.getApplicableRegions(location)
.allows(DefaultFlag.LIGHTER,
wg.wrapPlayer(player)))
return true; return true;
if (wg.getDescription().getVersion().startsWith("5")) {
if (!wg.getGlobalRegionManager().hasBypass(player, world)
&& !wg.getGlobalRegionManager()
.get(world)
.getApplicableRegions(location)
.allows(DefaultFlag.LIGHTER, wg.wrapPlayer(player)))
return true;
} else { // Version 6.x.x and above. API change
if (player.hasPermission("worldguard.region.bypass." + world.getName())
&& wg.getRegionContainer()
.get(world)
.getApplicableRegions(location)
.queryState(wg.wrapPlayer(player), DefaultFlag.LIGHTER)
.equals(State.DENY))
return true;
}
} }
} }
if (explode.contains(ability)) { if (explode.contains(ability)) {
if (wg.getGlobalStateManager().get(location.getWorld()).blockTNTExplosions) if (wg.getGlobalStateManager().get(location.getWorld()).blockTNTExplosions)
return true; return true;
if (!wg.getGlobalRegionManager().get(location.getWorld()) if (wg.getDescription().getVersion().startsWith("5")) {
.getApplicableRegions(location) if (!wg.getGlobalRegionManager().get(world)
.allows(DefaultFlag.TNT)) .getApplicableRegions(location)
return true; .allows(DefaultFlag.TNT))
return true;
} else { // Version 6.x.x and above. API change
if (wg.getRegionContainer().get(world)
.getApplicableRegions(location)
.queryState(null, DefaultFlag.TNT).equals(State.DENY))
return true;
}
} }
if ((!(wg.getGlobalRegionManager().canBuild(player, location)) || !(wg if (wg.getDescription().getVersion().startsWith("5")) {
.getGlobalRegionManager() if ((!(wg.getGlobalRegionManager().canBuild(player, location)) || !(wg
.canConstruct(player, location)))) { .getGlobalRegionManager()
return true; .canConstruct(player, location)))) {
return true;
}
} else { // Version 6.x.x and above. API change
if (!wg.getRegionContainer().createQuery()
.testBuild(location, player, (StateFlag[]) null))
return true;
} }
} }
@ -1261,9 +1284,9 @@ public class Methods {
WorldCoord worldCoord; WorldCoord worldCoord;
try { try {
TownyWorld world = TownyUniverse.getDataSource().getWorld( TownyWorld tWorld = TownyUniverse.getDataSource().getWorld(
location.getWorld().getName()); world.getName());
worldCoord = new WorldCoord(world.getName(), worldCoord = new WorldCoord(tWorld.getName(),
Coord.parseCoord(location)); Coord.parseCoord(location));
boolean bBuild = PlayerCacheUtil.getCachePermission(player, boolean bBuild = PlayerCacheUtil.getCachePermission(player,