@EventHandler(priority = EventPriority.LOWEST) public void onBlockBreak(BlockBreakEvent event) { if (event.getBlock().getType() == Material.MOB_SPAWNER && SpawnerAdjuster.useBlockListener) { if (event.getPlayer() != null) { if (!SpawnerAdjuster.permCheck(event.getPlayer(), "SpawnerAdjuster.BreakSpawners")) { event.setCancelled(true); return; } } if (SpawnerAdjuster.permCheck(event.getPlayer(), "SpawnerAdjuster.DropSpawners") && SpawnerAdjuster.allowDroppedSpawners) { if (!event.isCancelled()) { short asdf = 1; ItemStack spawnerstack = new ItemStack(event.getBlock().getType(), 1, asdf, event.getBlock().getData()); event .getBlock() .getLocation() .getWorld() .dropItemNaturally(event.getBlock().getLocation(), spawnerstack); } } } }
private void forceSpawn(CreatureSpawner spawner) { int range = 1; boolean reset = false; // if(spawner.getCreatureType() == CreatureType.SKELETON) for (int dx = -(range); dx <= range && !reset; dx++) { for (int dy = -(range); dy <= range && !reset; dy++) { for (int dz = -(range); dz <= range && !reset; dz++) { if (spawner.getBlock().getRelative(dx, dy, dz).getType() == Material.AIR) { LivingEntity spawnedEnt = spawner .getWorld() .spawnCreature( spawner.getBlock().getRelative(dx, dy, dz).getLocation(), spawner.getSpawnedType()); List<Entity> entList = spawnedEnt.getNearbyEntities( SpawnerAdjuster.spawnerEntCheckRadius - 1, SpawnerAdjuster.spawnerEntCheckRadius - 1, SpawnerAdjuster.spawnerEntCheckRadius - 1); /// int i = 0; //index int numEntsofType = 0; // number of matching ents /** * this check needs work. Next version! while(i <= entList.size()) { if(entList.get(i) * instanceof LivingEntity) { numEntsofType++; } i++; } */ numEntsofType = entList.size(); if (numEntsofType >= SpawnerAdjuster.maxNumberOfEntsNearSpawner && SpawnerAdjuster.useRadiusCheck) { spawnedEnt.remove(); } reset = true; /* anti-munson implement here */ if (!SpawnerAdjuster.canSpawn(spawner, spawnedEnt)) { spawnedEnt.remove(); } /* end anti munson implement */ /* prevent pig spawns if defined as such */ if (spawnedEnt.getType() == EntityType.PIG && SpawnerAdjuster.advanced_stopPigSpawns) { spawnedEnt.remove(); } } } } } spawner.setDelay(600); }