diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java index 9d46427..d0d299c 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java @@ -7,12 +7,16 @@ import com.songoda.epicbosses.events.BossDamageEvent; import com.songoda.epicbosses.holder.ActiveBossHolder; import com.songoda.epicbosses.managers.BossEntityManager; import com.songoda.epicbosses.managers.files.BossesFileManager; +import com.songoda.epicbosses.settings.Settings; import com.songoda.epicbosses.utils.ServerUtils; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.ExplosionPrimeEvent; /** * @author Charles Cullen @@ -85,4 +89,13 @@ public class BossDamageListener implements Listener { activeBossHolder.getMapOfDamagingUsers().put(player.getUniqueId(), currentDamage + damage); } + @EventHandler(priority = EventPriority.HIGHEST) + public void onBossExplode(ExplosionPrimeEvent event) { + if (!(event.getEntity() instanceof LivingEntity)) return; + LivingEntity livingEntity = (LivingEntity) event.getEntity(); + ActiveBossHolder activeBossHolder = this.bossEntityManager.getActiveBossHolder(livingEntity); + + if (activeBossHolder != null && !Settings.BOSS_EXPLOSIONS.getBoolean()) + event.setCancelled(true); + } } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/settings/Settings.java b/plugin-modules/Core/src/com/songoda/epicbosses/settings/Settings.java index 62d8319..c6e61cc 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/settings/Settings.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/settings/Settings.java @@ -28,6 +28,9 @@ public class Settings { "Which economy plugin should be used?", "Supported plugins you have installed: \"" + EconomyManager.getManager().getRegisteredPlugins().stream().collect(Collectors.joining("\", \"")) + "\"."); + public static final ConfigSetting BOSS_EXPLOSIONS = new ConfigSetting(config, "Toggles.bossExplosions", false, + "Should bosses such as Creepers be allowed to explode?"); + public static final ConfigSetting BOSS_SHOP = new ConfigSetting(config, "Toggles.bossShop", true); public static final ConfigSetting ENDERMAN_TELEPORTING = new ConfigSetting(config, "Toggles.endermanTeleporting", true);