Check if chunks are loaded

This commit is contained in:
mathias 2019-08-01 17:58:50 +03:00
parent 5186696d1c
commit aadc92ce7a

View file

@ -111,11 +111,14 @@ class EntitySpawn implements Listener {
@EventHandler @EventHandler
void onEntityAddToWorld(EntityAddToWorldEvent event) { void onEntityAddToWorld(EntityAddToWorldEvent event) {
if (event.getEntityType() != EntityType.PLAYER) { if (event.getEntityType() != EntityType.PLAYER) {
final Entity entity = event.getEntity(); if (event.getEntity().getLocation().isGenerated() == true &&
final int count = entity.getLocation().getChunk().getEntities().length; event.getEntity().getLocation().isChunkLoaded() == true) {
final Entity entity = event.getEntity();
final int count = entity.getLocation().getChunk().getEntities().length;
if (count > 50) { if (count > 50) {
entity.remove(); entity.remove();
}
} }
} }
} }
@ -123,10 +126,13 @@ class EntitySpawn implements Listener {
@EventHandler @EventHandler
void onEntitySpawn(EntitySpawnEvent event) { void onEntitySpawn(EntitySpawnEvent event) {
if (event.getEntityType() != EntityType.PLAYER) { if (event.getEntityType() != EntityType.PLAYER) {
final int entityCount = event.getLocation().getChunk().getEntities().length; if (event.getLocation().isGenerated() == true &&
event.getLocation().isChunkLoaded() == true) {
final int entityCount = event.getLocation().getChunk().getEntities().length;
if (entityCount > 50) { if (entityCount > 50) {
event.setCancelled(true); event.setCancelled(true);
}
} }
} }
} }
@ -143,12 +149,17 @@ class EntitySpawn implements Listener {
@EventHandler @EventHandler
void onPreCreatureSpawn(PreCreatureSpawnEvent event) { void onPreCreatureSpawn(PreCreatureSpawnEvent event) {
if (event.getType() != EntityType.PLAYER) { if (event.getType() != EntityType.PLAYER) {
final int entityCount = event.getSpawnLocation().getChunk().getEntities().length; if (event.getSpawnLocation().isGenerated() == true &&
event.getSpawnLocation().isChunkLoaded() == true) {
final int entityCount = event.getSpawnLocation().getChunk().getEntities().length;
if (entityCount > 50) { if (entityCount > 50) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} else if (event.getType() == EntityType.ENDER_DRAGON) { }
}
if (event.getType() == EntityType.ENDER_DRAGON) {
final int dragonCount = event.getSpawnLocation().getWorld().getEntitiesByClass(EnderDragon.class).size(); final int dragonCount = event.getSpawnLocation().getWorld().getEntitiesByClass(EnderDragon.class).size();
if (dragonCount > 25) { if (dragonCount > 25) {