From 0b3c40dc3e9545f8c8aa628c4f1b3a01a668d185 Mon Sep 17 00:00:00 2001 From: Dark Arc Date: Sat, 24 Nov 2012 02:17:34 -0500 Subject: [PATCH] Implements WORLDGUARD-2315 Enderdragon portal blocking --- .../bukkit/ConfigurationManager.java | 37 ++++++++----------- .../worldguard/bukkit/WorldConfiguration.java | 2 + .../bukkit/WorldGuardEntityListener.java | 17 +++++++-- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java b/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java index 33caa580..33d98b55 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java @@ -18,6 +18,15 @@ */ package com.sk89q.worldguard.bukkit; +import com.sk89q.commandbook.CommandBook; +import com.sk89q.commandbook.GodComponent; +import com.sk89q.util.yaml.YAMLFormat; +import com.sk89q.util.yaml.YAMLProcessor; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.blacklist.Blacklist; +import org.bukkit.World; +import org.bukkit.entity.Player; + import java.io.File; import java.io.IOException; import java.util.HashMap; @@ -27,16 +36,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import com.sk89q.commandbook.CommandBook; -import com.sk89q.commandbook.GodComponent; -import com.sk89q.util.yaml.YAMLFormat; -import com.sk89q.util.yaml.YAMLProcessor; -import org.bukkit.World; -import org.bukkit.entity.Player; - -import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.blacklist.Blacklist; - /** * Represents the global configuration and also delegates configuration * for individual worlds. @@ -140,20 +139,14 @@ public void load() { } config.removeProperty("suppress-tick-sync-warnings"); - useRegionsScheduler = config.getBoolean( - "regions.use-scheduler", true); - useRegionsCreatureSpawnEvent = config.getBoolean( - "regions.use-creature-spawn-event", true); - autoGodMode = config.getBoolean( - "auto-invincible", config.getBoolean("auto-invincible-permission", false)); + useRegionsScheduler = config.getBoolean("regions.use-scheduler", true); + useRegionsCreatureSpawnEvent = config.getBoolean("regions.use-creature-spawn-event", true); + autoGodMode = config.getBoolean("auto-invincible", config.getBoolean("auto-invincible-permission", false)); config.removeProperty("auto-invincible-permission"); - usePlayerMove = config.getBoolean( - "use-player-move-event", true); + usePlayerMove = config.getBoolean("use-player-move-event", true); - deopOnJoin = config.getBoolean( - "security.deop-everyone-on-join", false); - blockInGameOp = config.getBoolean( - "security.block-in-game-op-command", false); + deopOnJoin = config.getBoolean("security.deop-everyone-on-join", false); + blockInGameOp = config.getBoolean("security.block-in-game-op-command", false); hostKeys = new HashMap(); Object hostKeysRaw = config.getProperty("host-keys"); diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java index 6ead2d83..3a628ac2 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java @@ -98,6 +98,7 @@ public class WorldConfiguration { public boolean blockWitherSkullExplosions; public boolean blockWitherSkullBlockDamage; public boolean blockEnderDragonBlockDamage; + public boolean blockEnderDragonPortalCreation; public boolean blockFireballExplosions; public boolean blockFireballBlockDamage; public boolean blockEntityPaintingDestroy; @@ -334,6 +335,7 @@ private void loadConfiguration() { blockWitherSkullExplosions = getBoolean("mobs.block-wither-skull-explosions", false); blockWitherSkullBlockDamage = getBoolean("mobs.block-wither-skull-block-damage", false); blockEnderDragonBlockDamage = getBoolean("mobs.block-enderdragon-block-damage", false); + blockEnderDragonPortalCreation = getBoolean("mobs.block-enderdragon-portal-creation", false); blockFireballExplosions = getBoolean("mobs.block-fireball-explosions", false); blockFireballBlockDamage = getBoolean("mobs.block-fireball-block-damage", false); antiWolfDumbness = getBoolean("mobs.anti-wolf-dumbness", false); diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java index b6c4e152..24d8b1c3 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardEntityListener.java @@ -27,10 +27,7 @@ import com.sk89q.worldguard.protection.events.DisallowedPVPEvent; import com.sk89q.worldguard.protection.flags.DefaultFlag; import com.sk89q.worldguard.protection.managers.RegionManager; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.World; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; @@ -688,6 +685,18 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { } } + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onCreatePortal(EntityCreatePortalEvent event) { + ConfigurationManager cfg = plugin.getGlobalStateManager(); + WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + + switch (event.getEntityType()) { + case ENDER_DRAGON: + if (wcfg.blockEnderDragonBlockDamage) event.setCancelled(true); + break; + } + } + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPigZap(PigZapEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager();