@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
	private void onEntityExplode(EntityExplodeEvent event) {

		if (Main.instance.getSpawnerConfig().getBoolean("protect_from_explosions")) {
			// protect_from_explosions

			if (event.blockList().isEmpty()) {
				return;
			}

			// check if explosion causes a spawner to be broken
			for (Block block : event.blockList()) {

				// if block was a spawner cancel explosion event
				// this gives a natural protection around spawners
				if (block.getType() == Material.MOB_SPAWNER) {
					event.setCancelled(true);

					// return since we already found a spawner
					return;
				}
			}

		} else if (Main.instance.getSpawnerConfig().getBoolean("drop_from_explosions")) {
			// drop_from_explosions

			if (event.blockList().isEmpty()) {
				return;
			}

			// check if explosion causes any spawners to drop
			for (Block block : event.blockList()) {
				// if block was a spawner drop a spawner
				if (block.getType().equals(Material.MOB_SPAWNER)) {

					SpawnerType spawnerType = SpawnerFunctions.getSpawner(block);
					String spawnerName = spawnerType.getName();
					if (spawnerName != null) {

						// get a new spawner
						Spawner dropSpawner = SpawnerFunctions.makeSpawner(spawnerName);

						// drop item
						block.getWorld().dropItemNaturally(block.getLocation(), dropSpawner);
					}
				}
			}
		}

	}