diff --git a/permissions_list.txt b/permissions_list.txt index 12c7c05d..c48e68a3 100644 --- a/permissions_list.txt +++ b/permissions_list.txt @@ -41,6 +41,8 @@ worldguard.region.setparent.all worldguard.region.priority.own worldguard.region.priority.all +worldguard.region.bypass + worldguard.reloadwg worldguard.region.delete.own @@ -56,3 +58,5 @@ worldguard.tpregion.override worldguard.buyregion +worldguard.notify + diff --git a/src/com/sk89q/worldguard/bukkit/BukkitBlacklist.java b/src/com/sk89q/worldguard/bukkit/BukkitBlacklist.java index 4d92aeed..5c8a7b3b 100644 --- a/src/com/sk89q/worldguard/bukkit/BukkitBlacklist.java +++ b/src/com/sk89q/worldguard/bukkit/BukkitBlacklist.java @@ -32,7 +32,7 @@ public BukkitBlacklist(Boolean useAsWhitelist, WorldGuardPlugin plugin) { public void broadcastNotification(String msg) { for (Player player : plugin.getServer().getOnlinePlayers()) { - if (plugin.getWgConfiguration().hasPermission(player, "/worldguardnotify")) { + if (plugin.getWgConfiguration().hasPermission(player, "notify")) { player.sendMessage(msg); } } diff --git a/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java b/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java index 113a0809..76a66b17 100644 --- a/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java +++ b/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java @@ -15,8 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . -*/ - + */ package com.sk89q.worldguard.bukkit; import com.sk89q.worldguard.protection.regionmanager.RegionManager; @@ -44,7 +43,7 @@ public class WorldGuardBlockListener extends BlockListener { * Plugin. */ private WorldGuardPlugin plugin; - + /** * Construct the object; * @@ -105,7 +104,7 @@ public void onBlockBreak(BlockBreakEvent event) { player.setItemInHand(held); } } - + if (wcfg.useRegions) { Vector pt = BukkitUtil.toVector(event.getBlock()); @@ -115,20 +114,20 @@ public void onBlockBreak(BlockBreakEvent event) { return; } } - + if (wcfg.getBlacklist() != null) { if (!wcfg.getBlacklist().check( new BlockBreakBlacklistEvent(BukkitPlayer.wrapPlayer(cfg, player), - toVector(event.getBlock()), - event.getBlock().getTypeId()), false, false)) { + toVector(event.getBlock()), + event.getBlock().getTypeId()), false, false)) { event.setCancelled(true); return; } if (wcfg.getBlacklist().check( new DestroyWithBlacklistEvent(BukkitPlayer.wrapPlayer(cfg, player), - toVector(event.getBlock()), - player.getItemInHand().getTypeId()), false, false)) { + toVector(event.getBlock()), + player.getItemInHand().getTypeId()), false, false)) { event.setCancelled(true); return; } @@ -143,15 +142,14 @@ public void onBlockBreak(BlockBreakEvent event) { @Override public void onBlockFlow(BlockFromToEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } World world = event.getBlock().getWorld(); Block blockFrom = event.getBlock(); Block blockTo = event.getToBlock(); - + boolean isWater = blockFrom.getTypeId() == 8 || blockFrom.getTypeId() == 9; boolean isLava = blockFrom.getTypeId() == 10 || blockFrom.getTypeId() == 11; @@ -178,18 +176,18 @@ public void onBlockFlow(BlockFromToEvent event) { } /*if (plugin.classicWater && isWater) { - int blockBelow = blockFrom.getRelative(0, -1, 0).getTypeId(); - if (blockBelow != 0 && blockBelow != 8 && blockBelow != 9) { - blockFrom.setTypeId(9); - if (blockTo.getTypeId() == 0) { - blockTo.setTypeId(9); - } - return; - } + int blockBelow = blockFrom.getRelative(0, -1, 0).getTypeId(); + if (blockBelow != 0 && blockBelow != 8 && blockBelow != 9) { + blockFrom.setTypeId(9); + if (blockTo.getTypeId() == 0) { + blockTo.setTypeId(9); + } + return; + } }*/ // Check the fluid block (from) whether it is air. If so and the target block is protected, cancel the event - if(wcfg.preventWaterDamage.size() > 0 && blockFrom.getTypeId() == 0) { + if (wcfg.preventWaterDamage.size() > 0 && blockFrom.getTypeId() == 0) { int targetId = world.getBlockTypeIdAt( blockTo.getX(), blockTo.getY(), blockTo.getZ()); if (wcfg.preventWaterDamage.contains(targetId)) { @@ -197,7 +195,7 @@ public void onBlockFlow(BlockFromToEvent event) { return; } } - + if (wcfg.preventWaterDamage.size() > 0 && isWater) { int targetId = world.getBlockTypeIdAt( blockTo.getX(), blockTo.getY(), blockTo.getZ()); @@ -220,8 +218,7 @@ public void onBlockFlow(BlockFromToEvent event) { Vector pt = toVector(blockFrom.getLocation()); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(world.getName()); - if (!mgr.getApplicableRegions(pt) - .allowsFlag("waterflow")) { + if (!mgr.getApplicableRegions(pt).allowsFlag("waterflow")) { event.setCancelled(true); return; } @@ -236,11 +233,11 @@ public void onBlockFlow(BlockFromToEvent event) { @Override public void onBlockIgnite(BlockIgniteEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } + IgniteCause cause = event.getCause(); Block block = event.getBlock(); World world = block.getWorld(); @@ -249,7 +246,41 @@ public void onBlockIgnite(BlockIgniteEvent event) { WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(world.getName()); boolean isFireSpread = cause == IgniteCause.SPREAD; - + + if (wcfg.useRegions) { + Vector pt = toVector(block); + Player player = event.getPlayer(); + RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(world.getName()); + + ApplicableRegionSet set = mgr.getApplicableRegions(pt); + + if (player != null && !cfg.hasPermission(player, "region.bypass")) { + LocalPlayer localPlayer = BukkitPlayer.wrapPlayer(cfg, player); + + if (cause == IgniteCause.FLINT_AND_STEEL + && !set.canBuild(localPlayer)) { + event.setCancelled(true); + return; + } + + if (cause == IgniteCause.FLINT_AND_STEEL + && !set.allowsFlag(AreaFlags.FLAG_LIGHTER)) { + event.setCancelled(true); + return; + } + } + + if (isFireSpread && set.allowsFlag(AreaFlags.FLAG_FIRE_SPREAD)) { + event.setCancelled(true); + return; + } + + if (cause == IgniteCause.LAVA && !set.allowsFlag(AreaFlags.FLAG_LAVA_FIRE)) { + event.setCancelled(true); + return; + } + } + if (wcfg.preventLavaFire && cause == IgniteCause.LAVA) { event.setCancelled(true); return; @@ -259,7 +290,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { event.setCancelled(true); return; } - + if (wcfg.blockLighter && cause == IgniteCause.FLINT_AND_STEEL) { event.setCancelled(true); return; @@ -274,7 +305,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { int x = block.getX(); int y = block.getY(); int z = block.getZ(); - + if (wcfg.disableFireSpreadBlocks.contains(world.getBlockTypeIdAt(x, y - 1, z)) || wcfg.disableFireSpreadBlocks.contains(world.getBlockTypeIdAt(x + 1, y, z)) || wcfg.disableFireSpreadBlocks.contains(world.getBlockTypeIdAt(x - 1, y, z)) @@ -284,39 +315,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { return; } } - - /*if (plugin.useRegions) { - Vector pt = toVector(block); - - if (player != null && !plugin.hasPermission(player, "/regionbypass")) { - LocalPlayer localPlayer = plugin.wrapPlayer(player); - - if (cause == IgniteCause.FLINT_AND_STEEL - && !plugin.globalRegionManager.getApplicableRegions(pt).canBuild(localPlayer)) { - event.setCancelled(true); - return; - } - - if (cause == IgniteCause.FLINT_AND_STEEL - && !plugin.globalRegionManager.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_LIGHTER)) { - event.setCancelled(true); - return; - } - } - - f (isFireSpread && !plugin.globalRegionManager.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_FIRE_SPREAD)) { - event.setCancelled(true); - return; - } - - if (cause == IgniteCause.LAVA && !plugin.globalRegionManager.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_LAVA_FIRE)) { - event.setCancelled(true); - return; - } - }*/ + } /** @@ -327,8 +326,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { @Override public void onBlockBurn(BlockBurnEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } @@ -363,8 +361,7 @@ public void onBlockBurn(BlockBurnEvent event) { @Override public void onBlockPhysics(BlockPhysicsEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } @@ -388,7 +385,7 @@ public void onBlockPhysics(BlockPhysicsEvent event) { return; } } - + /** * Called when a block is interacted with * @@ -397,8 +394,7 @@ public void onBlockPhysics(BlockPhysicsEvent event) { @Override public void onBlockInteract(BlockInteractEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } @@ -410,32 +406,33 @@ public void onBlockInteract(BlockInteractEvent event) { if (entity instanceof Player && (block.getType() == Material.CHEST - || block.getType() == Material.DISPENSER - || block.getType() == Material.FURNACE - || block.getType() == Material.BURNING_FURNACE - || block.getType() == Material.NOTE_BLOCK)) { - Player player = (Player)entity; + || block.getType() == Material.DISPENSER + || block.getType() == Material.FURNACE + || block.getType() == Material.BURNING_FURNACE + || block.getType() == Material.NOTE_BLOCK)) { + Player player = (Player) entity; if (wcfg.useRegions) { Vector pt = toVector(block); LocalPlayer localPlayer = BukkitPlayer.wrapPlayer(cfg, player); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); - if (!cfg.hasPermission(player, "/regionbypass") - && !mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_CHEST_ACCESS) - && !mgr.getApplicableRegions(pt).canBuild(localPlayer)) { - player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); - event.setCancelled(true); - return; + if (!cfg.hasPermission(player, "region.bypass")) { + ApplicableRegionSet set = mgr.getApplicableRegions(pt); + if (!set.allowsFlag(AreaFlags.FLAG_CHEST_ACCESS) && !set.canBuild(localPlayer)) { + player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); + event.setCancelled(true); + return; + } } } } - + if (wcfg.getBlacklist() != null && entity instanceof Player) { - Player player = (Player)entity; - + Player player = (Player) entity; + if (!wcfg.getBlacklist().check( new BlockInteractBlacklistEvent(BukkitPlayer.wrapPlayer(cfg, player), toVector(block), - block.getTypeId()), false, false)) { + block.getTypeId()), false, false)) { event.setCancelled(true); return; } @@ -450,8 +447,7 @@ public void onBlockInteract(BlockInteractEvent event) { @Override public void onBlockPlace(BlockPlaceEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } @@ -471,11 +467,11 @@ public void onBlockPlace(BlockPlaceEvent event) { return; } } - + if (wcfg.getBlacklist() != null) { if (!wcfg.getBlacklist().check( new BlockPlaceBlacklistEvent(BukkitPlayer.wrapPlayer(cfg, player), toVector(blockPlaced), - blockPlaced.getTypeId()), false, false)) { + blockPlaced.getTypeId()), false, false)) { event.setCancelled(true); return; } @@ -485,7 +481,7 @@ public void onBlockPlace(BlockPlaceEvent event) { if (wcfg.redstoneSponges && blockPlaced.isBlockIndirectlyPowered()) { return; } - + int ox = blockPlaced.getX(); int oy = blockPlaced.getY(); int oz = blockPlaced.getZ(); @@ -514,19 +510,19 @@ public void onBlockRightClick(BlockRightClickEvent event) { RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); ApplicableRegionSet app = mgr.getApplicableRegions(pt); List regions = mgr.getApplicableRegionsIDs(pt); - + if (regions.size() > 0) { player.sendMessage(ChatColor.YELLOW + "Can you build? " + (app.canBuild(BukkitPlayer.wrapPlayer(cfg, player)) ? "Yes" : "No")); - + StringBuilder str = new StringBuilder(); - for (Iterator it = regions.iterator(); it.hasNext(); ) { + for (Iterator it = regions.iterator(); it.hasNext();) { str.append(it.next()); if (it.hasNext()) { str.append(", "); } } - + player.sendMessage(ChatColor.YELLOW + "Applicable regions: " + str.toString()); } else { player.sendMessage(ChatColor.YELLOW + "WorldGuard: No defined regions here!"); @@ -553,7 +549,6 @@ public void onBlockRightClick(BlockRightClickEvent event) { } } - /** * Called when redstone changes * From: the source of the redstone change @@ -574,7 +569,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event) { int ox = blockTo.getX(); int oy = blockTo.getY(); int oz = blockTo.getZ(); - + for (int cx = -1; cx <= 1; cx++) { for (int cy = -1; cy <= 1; cy++) { for (int cz = -1; cz <= 1; cz++) { @@ -583,17 +578,17 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event) { && sponge.isBlockIndirectlyPowered()) { clearSpongeWater(world, ox + cx, oy + cy, oz + cz); } else if (sponge.getTypeId() == 19 - && ! sponge.isBlockIndirectlyPowered()) { + && !sponge.isBlockIndirectlyPowered()) { addSpongeWater(world, ox + cx, oy + cy, oz + cz); } } } } - + return; } } - + /** * Remove water around a sponge. * @@ -611,14 +606,13 @@ private void clearSpongeWater(World world, int ox, int oy, int oz) { for (int cy = -wcfg.spongeRadius; cy <= wcfg.spongeRadius; cy++) { for (int cz = -wcfg.spongeRadius; cz <= wcfg.spongeRadius; cz++) { if (isBlockWater(world, ox + cx, oy + cy, oz + cz)) { - world.getBlockAt(ox + cx, oy + cy, oz + cz) - .setTypeId(0); + world.getBlockAt(ox + cx, oy + cy, oz + cz).setTypeId(0); } } } } } - + /** * Add water around a sponge. * @@ -641,7 +635,7 @@ private void addSpongeWater(World world, int ox, int oy, int oz) { } } } - + // The positive x edge cx = ox + wcfg.spongeRadius + 1; for (int cy = oy - wcfg.spongeRadius - 1; cy <= oy + wcfg.spongeRadius + 1; cy++) { @@ -661,7 +655,7 @@ private void addSpongeWater(World world, int ox, int oy, int oz) { } } } - + // The positive y edge cy = oy + wcfg.spongeRadius + 1; for (cx = ox - wcfg.spongeRadius - 1; cx <= ox + wcfg.spongeRadius + 1; cx++) { @@ -671,7 +665,7 @@ private void addSpongeWater(World world, int ox, int oy, int oz) { } } } - + // The negative z edge int cz = oz - wcfg.spongeRadius - 1; for (cx = ox - wcfg.spongeRadius - 1; cx <= ox + wcfg.spongeRadius + 1; cx++) { @@ -681,7 +675,7 @@ private void addSpongeWater(World world, int ox, int oy, int oz) { } } } - + // The positive z edge cz = oz + wcfg.spongeRadius + 1; for (cx = ox - wcfg.spongeRadius - 1; cx <= ox + wcfg.spongeRadius + 1; cx++) { @@ -692,7 +686,7 @@ private void addSpongeWater(World world, int ox, int oy, int oz) { } } } - + /** * Sets the given block to fluid water. * Used by addSpongeWater() @@ -708,10 +702,10 @@ private void setBlockToWater(World world, int ox, int oy, int oz) { Block block = world.getBlockAt(ox, oy, oz); int id = block.getTypeId(); if (id == 0) { - block.setTypeId( 8 ); + block.setTypeId(8); } } - + /** * Checks if the given block is water * @@ -729,4 +723,4 @@ private boolean isBlockWater(World world, int ox, int oy, int oz) { return false; } } -} \ No newline at end of file +} diff --git a/src/com/sk89q/worldguard/bukkit/WorldGuardConfiguration.java b/src/com/sk89q/worldguard/bukkit/WorldGuardConfiguration.java index dff042fa..eafec621 100644 --- a/src/com/sk89q/worldguard/bukkit/WorldGuardConfiguration.java +++ b/src/com/sk89q/worldguard/bukkit/WorldGuardConfiguration.java @@ -196,7 +196,7 @@ public boolean canBuild(Player player, int x, int y, int z) { Vector pt = new Vector(x, y, z); LocalPlayer localPlayer = BukkitPlayer.wrapPlayer(this, player); - if (!hasPermission(player, "/regionbypass")) { + if (!hasPermission(player, "region.bypass")) { RegionManager mgr = wg.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); if (!mgr.getApplicableRegions(pt).canBuild(localPlayer)) { @@ -215,7 +215,7 @@ public boolean canBuild(Player player, Vector pt) { if (getWorldConfig(player.getWorld().getName()).useRegions) { LocalPlayer localPlayer = BukkitPlayer.wrapPlayer(this, player); - if (!hasPermission(player, "/regionbypass")) { + if (!hasPermission(player, "region.bypass")) { RegionManager mgr = wg.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); if (!mgr.getApplicableRegions(pt).canBuild(localPlayer)) { @@ -256,17 +256,7 @@ public boolean hasPermission(Player player, String perm) { return false; } } - /** - * Checks for the command or /region. - * - * @param player - * @param cmd - * @return - */ - public boolean canUseRegionCommand(Player player, String cmd) { - return hasPermission(player, "region") - || hasPermission(player, cmd); - } + /** * Checks to see if there are sufficient permissions, otherwise an exception diff --git a/src/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java b/src/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java index 1990c671..10dadac5 100644 --- a/src/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java +++ b/src/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java @@ -15,10 +15,10 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . -*/ - + */ package com.sk89q.worldguard.bukkit; +import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.regionmanager.RegionManager; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -38,11 +38,12 @@ import static com.sk89q.worldguard.bukkit.BukkitUtil.*; public class WorldGuardEntityListener extends EntityListener { + /** * Plugin. */ private WorldGuardPlugin plugin; - + /** * Construct the object; * @@ -52,14 +53,13 @@ public WorldGuardEntityListener(WorldGuardPlugin plugin) { this.plugin = plugin; } - public void onEntityDamageByBlock(EntityDamageByBlockEvent event) { Entity defender = event.getEntity(); DamageCause type = event.getCause(); - - if (defender instanceof Player) { - Player player = (Player)defender; + + if (defender instanceof Player) { + Player player = (Player) defender; WorldGuardConfiguration cfg = plugin.getWgConfiguration(); WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(player.getWorld().getName()); @@ -81,13 +81,12 @@ public void onEntityDamageByBlock(EntityDamageByBlockEvent event) { } } - public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { Entity attacker = event.getDamager(); Entity defender = event.getEntity(); - + if (defender instanceof Player) { - Player player = (Player)defender; + Player player = (Player) defender; WorldGuardConfiguration cfg = plugin.getWgConfiguration(); WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(player.getWorld().getName()); @@ -102,50 +101,48 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { Vector pt = toVector(defender.getLocation()); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_PVP)) { - ((Player)attacker).sendMessage(ChatColor.DARK_RED + "You are in a no-PvP area."); + if (!mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_PVP)) { + ((Player) attacker).sendMessage(ChatColor.DARK_RED + "You are in a no-PvP area."); event.setCancelled(true); return; } } } - + if (attacker != null && attacker instanceof Monster) { if (attacker instanceof Creeper && wcfg.blockCreeperExplosions) { event.setCancelled(true); return; } - + if (wcfg.useRegions) { Vector pt = toVector(defender.getLocation()); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); + ApplicableRegionSet set = mgr.getApplicableRegions(pt); - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_MOB_DAMAGE)) { + if (!set.allowsFlag(AreaFlags.FLAG_MOB_DAMAGE)) { event.setCancelled(true); return; } - + if (attacker instanceof Creeper) { - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_CREEPER_EXPLOSION)) { + if (!set.allowsFlag(AreaFlags.FLAG_CREEPER_EXPLOSION)) { event.setCancelled(true); return; } } } - + } } } - + public void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) { Entity defender = event.getEntity(); Entity attacker = event.getDamager(); - - if (defender instanceof Player) { - Player player = (Player)defender; + + if (defender instanceof Player) { + Player player = (Player) defender; WorldGuardConfiguration cfg = plugin.getWgConfiguration(); WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(player.getWorld().getName()); @@ -160,25 +157,23 @@ public void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) { Vector pt = toVector(defender.getLocation()); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_PVP)) { - ((Player)attacker).sendMessage(ChatColor.DARK_RED + "You are in a no-PvP area."); + if (!mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_PVP)) { + ((Player) attacker).sendMessage(ChatColor.DARK_RED + "You are in a no-PvP area."); event.setCancelled(true); return; } } } if (attacker != null && attacker instanceof Skeleton) { - if (wcfg.useRegions) { - Vector pt = toVector(defender.getLocation()); - RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); + if (wcfg.useRegions) { + Vector pt = toVector(defender.getLocation()); + RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(player.getWorld().getName()); - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_MOB_DAMAGE)) { - event.setCancelled(true); - return; - } - } + if (!mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_MOB_DAMAGE)) { + event.setCancelled(true); + return; + } + } } } @@ -187,11 +182,10 @@ public void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) { @Override public void onEntityDamage(EntityDamageEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } - + if (event instanceof EntityDamageByProjectileEvent) { this.onEntityDamageByProjectile((EntityDamageByProjectileEvent) event); return; @@ -205,9 +199,9 @@ public void onEntityDamage(EntityDamageEvent event) { Entity defender = event.getEntity(); DamageCause type = event.getCause(); - - if (defender instanceof Player) { - Player player = (Player)defender; + + if (defender instanceof Player) { + Player player = (Player) defender; WorldGuardConfiguration cfg = plugin.getWgConfiguration(); WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(player.getWorld().getName()); @@ -216,7 +210,7 @@ public void onEntityDamage(EntityDamageEvent event) { event.setCancelled(true); return; } - + if (wcfg.disableFallDamage && type == DamageCause.FALL) { event.setCancelled(true); return; @@ -232,7 +226,7 @@ public void onEntityDamage(EntityDamageEvent event) { event.setCancelled(true); return; } - + if (wcfg.teleportOnSuffocation && type == DamageCause.SUFFOCATION) { findFreePosition(player); event.setCancelled(true); @@ -255,8 +249,7 @@ public void onEntityDamage(EntityDamageEvent event) { @Override public void onEntityExplode(EntityExplodeEvent event) { - if(event.isCancelled()) - { + if (event.isCancelled()) { return; } @@ -271,18 +264,17 @@ public void onEntityExplode(EntityExplodeEvent event) { event.setCancelled(true); return; } - + if (wcfg.blockCreeperExplosions) { event.setCancelled(true); return; } - + if (wcfg.useRegions) { Vector pt = toVector(l); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(wcfg.getWorldName()); - - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_CREEPER_EXPLOSION)) { + + if (!mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_CREEPER_EXPLOSION)) { event.setCancelled(true); return; } @@ -292,13 +284,12 @@ public void onEntityExplode(EntityExplodeEvent event) { event.setCancelled(true); return; } - + if (wcfg.useRegions) { Vector pt = toVector(l); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(wcfg.getWorldName()); - if (!mgr.getApplicableRegions(pt) - .allowsFlag(AreaFlags.FLAG_TNT)) { + if (!mgr.getApplicableRegions(pt).allowsFlag(AreaFlags.FLAG_TNT)) { event.setCancelled(true); return; } @@ -315,31 +306,90 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { WorldGuardConfiguration cfg = plugin.getWgConfiguration(); WorldGuardWorldConfiguration wcfg = cfg.getWorldConfig(event.getEntity().getWorld().getName()); - CreatureType creaType = (CreatureType)CreatureType.valueOf(event.getMobType().toString()); + CreatureType creaType = (CreatureType) CreatureType.valueOf(event.getMobType().toString()); String creaName = ""; Boolean cancelEvent = false; - switch(creaType) { - case SPIDER: if (wcfg.blockCreatureSpawn.contains("spider")) { cancelEvent = true; } creaName = "spider"; break; - case ZOMBIE: if (wcfg.blockCreatureSpawn.contains("zombie")) { cancelEvent = true; } creaName = "zombie"; break; - case CREEPER: if (wcfg.blockCreatureSpawn.contains("creeper")) { cancelEvent = true; } creaName = "creeper"; break; - case SKELETON: if (wcfg.blockCreatureSpawn.contains("skeleton")) { cancelEvent = true; } creaName = "skeleton"; break; - case SQUID: if (wcfg.blockCreatureSpawn.contains("squid")) { cancelEvent = true; } creaName = "squid"; break; - case PIG_ZOMBIE: if (wcfg.blockCreatureSpawn.contains("pigzombie")) { cancelEvent = true; } creaName = "pigzombie"; break; - case GHAST: if (wcfg.blockCreatureSpawn.contains("ghast")) { cancelEvent = true; } creaName = "ghast"; break; - case SLIME: if (wcfg.blockCreatureSpawn.contains("slime")) { cancelEvent = true; } creaName = "slime"; break; - case PIG: if (wcfg.blockCreatureSpawn.contains("pig")) { cancelEvent = true; } creaName = "pig"; break; - case COW: if (wcfg.blockCreatureSpawn.contains("cow")) { cancelEvent = true; } creaName = "cow"; break; - case SHEEP: if (wcfg.blockCreatureSpawn.contains("sheep")) { cancelEvent = true; } creaName = "sheep"; break; - case CHICKEN: if (wcfg.blockCreatureSpawn.contains("chicken")) { cancelEvent = true; } creaName = "chicken"; break; + switch (creaType) { + case SPIDER: + if (wcfg.blockCreatureSpawn.contains("spider")) { + cancelEvent = true; + } + creaName = "spider"; + break; + case ZOMBIE: + if (wcfg.blockCreatureSpawn.contains("zombie")) { + cancelEvent = true; + } + creaName = "zombie"; + break; + case CREEPER: + if (wcfg.blockCreatureSpawn.contains("creeper")) { + cancelEvent = true; + } + creaName = "creeper"; + break; + case SKELETON: + if (wcfg.blockCreatureSpawn.contains("skeleton")) { + cancelEvent = true; + } + creaName = "skeleton"; + break; + case SQUID: + if (wcfg.blockCreatureSpawn.contains("squid")) { + cancelEvent = true; + } + creaName = "squid"; + break; + case PIG_ZOMBIE: + if (wcfg.blockCreatureSpawn.contains("pigzombie")) { + cancelEvent = true; + } + creaName = "pigzombie"; + break; + case GHAST: + if (wcfg.blockCreatureSpawn.contains("ghast")) { + cancelEvent = true; + } + creaName = "ghast"; + break; + case SLIME: + if (wcfg.blockCreatureSpawn.contains("slime")) { + cancelEvent = true; + } + creaName = "slime"; + break; + case PIG: + if (wcfg.blockCreatureSpawn.contains("pig")) { + cancelEvent = true; + } + creaName = "pig"; + break; + case COW: + if (wcfg.blockCreatureSpawn.contains("cow")) { + cancelEvent = true; + } + creaName = "cow"; + break; + case SHEEP: + if (wcfg.blockCreatureSpawn.contains("sheep")) { + cancelEvent = true; + } + creaName = "sheep"; + break; + case CHICKEN: + if (wcfg.blockCreatureSpawn.contains("chicken")) { + cancelEvent = true; + } + creaName = "chicken"; + break; } if (wcfg.useRegions && creaName != "") { Vector pt = toVector(event.getEntity().getLocation()); RegionManager mgr = plugin.getGlobalRegionManager().getRegionManager(event.getEntity().getWorld().getName()); - Boolean flagValue = mgr.getApplicableRegions(pt) - .getBooleanAreaFlag("creaturespawn", creaName, true, null); + Boolean flagValue = mgr.getApplicableRegions(pt).getBooleanAreaFlag("creaturespawn", creaName, true, null); if (flagValue != null) { if (!flagValue) { cancelEvent = true; @@ -348,13 +398,13 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { } } } - + if (cancelEvent) { event.setCancelled(true); return; } } - + /** * Find a position for the player to stand that is not inside a block. * Blocks above the player will be iteratively tested until there is