diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java index 01886590..c04040c5 100644 --- a/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java @@ -71,6 +71,7 @@ public abstract class WorldConfiguration { public boolean itemDurability; public boolean disableExpDrops; public boolean blockPotionsAlways; + public boolean disableConduitEffects; public boolean pumpkinScuba; public boolean noPhysicsGravel; public boolean noPhysicsSand; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java index a395ac6d..ea0f8753 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java @@ -164,6 +164,7 @@ public void loadConfiguration() { } } blockPotionsAlways = getBoolean("gameplay.block-potions-overly-reliably", false); + disableConduitEffects = getBoolean("gameplay.disable-conduit-effects", false); simulateSponge = getBoolean("simulation.sponge.enable", false); spongeRadius = Math.max(1, getInt("simulation.sponge.radius", 3)) - 1; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java index 23670371..9a48afac 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java @@ -26,6 +26,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityPotionEffectEvent; public class WorldRulesListener extends AbstractListener { @@ -40,17 +41,24 @@ public WorldRulesListener(WorldGuardPlugin plugin) { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onSpawnEntity(final SpawnEntityEvent event) { - WorldConfiguration config = getWorldConfig(BukkitAdapter.adapt(event.getWorld())); - - // ================================================================ - // EXP_DROPS flag - // ================================================================ - if (event.getEffectiveType() == EntityType.EXPERIENCE_ORB) { + WorldConfiguration config = getWorldConfig(BukkitAdapter.adapt(event.getWorld())); + if (config.disableExpDrops) { event.setCancelled(true); } } } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onPotionEffect(EntityPotionEffectEvent event) { + if (event.getCause() == EntityPotionEffectEvent.Cause.CONDUIT) { + WorldConfiguration config = getWorldConfig(BukkitAdapter.adapt(event.getEntity().getWorld())); + + if (config.disableConduitEffects) { + event.setCancelled(true); + } + } + } + }