From cf7c9fc4c20fecb772d839336dac0bb6d52e4cc0 Mon Sep 17 00:00:00 2001 From: graywolf336 Date: Wed, 8 Jan 2014 15:27:38 -0600 Subject: [PATCH] Protect the jails against explosions, if it is enabled --- .../java/com/graywolf336/jail/JailMain.java | 2 +- .../com/graywolf336/jail/enums/Settings.java | 1 + .../jail/listeners/EntityListener.java | 30 ++++++++++++++++++- src/main/resources/config.yml | 1 + 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/graywolf336/jail/JailMain.java b/src/main/java/com/graywolf336/jail/JailMain.java index cb96441..e9f1648 100644 --- a/src/main/java/com/graywolf336/jail/JailMain.java +++ b/src/main/java/com/graywolf336/jail/JailMain.java @@ -44,7 +44,7 @@ public class JailMain extends JavaPlugin { PluginManager plm = this.getServer().getPluginManager(); plm.registerEvents(new BlockListener(this), this); - plm.registerEvents(new EntityListener(), this); + plm.registerEvents(new EntityListener(this), this); plm.registerEvents(new HandCuffListener(this), this); plm.registerEvents(new PlayerListener(this), this); diff --git a/src/main/java/com/graywolf336/jail/enums/Settings.java b/src/main/java/com/graywolf336/jail/enums/Settings.java index 183ff85..3a60e9c 100644 --- a/src/main/java/com/graywolf336/jail/enums/Settings.java +++ b/src/main/java/com/graywolf336/jail/enums/Settings.java @@ -10,6 +10,7 @@ public enum Settings { DEBUG("system.debug"), DEFAULTJAIL("jailing.jail.defaultJail"), DELETEINVENTORY("jailing.jail.deleteInventory"), + EXPLOSIONPROTECTION("jailing.during.explosionProtection"), IGNORESLEEPINGSTATE("jailing.during.ignoreSleeping"), JAILDEFAULTTIME("jailing.jail.defaultTime"), JAILEDGAMEMODE("jailing.jail.gameMode"), diff --git a/src/main/java/com/graywolf336/jail/listeners/EntityListener.java b/src/main/java/com/graywolf336/jail/listeners/EntityListener.java index d487413..8fb56e4 100644 --- a/src/main/java/com/graywolf336/jail/listeners/EntityListener.java +++ b/src/main/java/com/graywolf336/jail/listeners/EntityListener.java @@ -1,7 +1,35 @@ package com.graywolf336.jail.listeners; +import org.bukkit.block.Block; +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityExplodeEvent; + +import com.graywolf336.jail.JailMain; +import com.graywolf336.jail.enums.Settings; public class EntityListener implements Listener { - + private JailMain pl; + + public EntityListener(JailMain plugin) { + this.pl = plugin; + } + + @EventHandler(ignoreCancelled=true) + public void onEntityExplode(EntityExplodeEvent event) { + //Only do the checking if plugin has it enabled + //otherwise let's not go through all the blocks + if(pl.getConfig().getBoolean(Settings.EXPLOSIONPROTECTION.getPath())) { + //Loop through the blocklist and do stuff + for(Block b : event.blockList()) { + //Check the current block and if it is inside a jail, + //then let's do something else + if(pl.getJailManager().getJailFromLocation(b.getLocation()) != null) { + //Clear the blocklist, this way the explosion effect still happens + event.blockList().clear(); + return; + } + } + } + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5c4bae9..523a1b5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,6 +16,7 @@ jailing: blockBreakProtection: true blockPlaceProtection: true countDownTimeWhileOffline: false + explosionProtection: true ignoreSleeping: true maxAFKTime: 10m #in minutes maxFoodLevel: 20