Fix bug in enderdragon limiter

This commit is contained in:
mathias 2018-12-20 02:46:15 +02:00
parent 87ee785860
commit 011690f7fd

View file

@ -3,6 +3,7 @@ package pw.kaboom.extras;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -30,8 +31,6 @@ import org.bukkit.block.Container;
import org.bukkit.block.CreatureSpawner; import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
@ -324,34 +323,35 @@ class Events implements Listener {
void onEntitySpawn(EntitySpawnEvent event) { void onEntitySpawn(EntitySpawnEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
Entity[] chunkEntities = event.getLocation().getChunk().getEntities(); Entity[] chunkEntities = event.getLocation().getChunk().getEntities();
int onChunk = 0; List<LivingEntity> worldEntities = event.getLocation().getWorld().getLivingEntities();
int count = 0;
if (entity.getType() == EntityType.ENDER_DRAGON) { if (entity.getType() == EntityType.ENDER_DRAGON) {
for (Entity chunkEntity : chunkEntities) { for (LivingEntity worldEntity : worldEntities) {
if (onChunk < 5) { if (count < 25) {
if (chunkEntity.getType() == EntityType.ENDER_DRAGON) { if (worldEntity.getType() == EntityType.ENDER_DRAGON) {
onChunk++; count++;
continue;
} }
continue;
} }
break; break;
} }
if (onChunk == 5) { if (count == 25) {
event.setCancelled(true); event.setCancelled(true);
} }
} else if (entity.getType() != EntityType.PLAYER) { } else if (entity.getType() != EntityType.PLAYER) {
for (Entity chunkEntity : chunkEntities) { for (Entity chunkEntity : chunkEntities) {
if (onChunk < 50) { if (count < 50) {
if (chunkEntity.getType() != EntityType.PLAYER) { if (chunkEntity.getType() != EntityType.PLAYER) {
onChunk++; count++;
continue;
} }
continue;
} }
break; break;
} }
if (onChunk == 50) { if (count == 50) {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@ -552,7 +552,7 @@ class Events implements Listener {
@EventHandler @EventHandler
void onPreCreatureSpawn(PreCreatureSpawnEvent event) { void onPreCreatureSpawn(PreCreatureSpawnEvent event) {
Entity[] chunkEntities = event.getSpawnLocation().getChunk().getEntities(); /* Entity[] chunkEntities = event.getSpawnLocation().getChunk().getEntities();
int onChunk = 0; int onChunk = 0;
if (event.getType() == EntityType.ENDER_DRAGON) { if (event.getType() == EntityType.ENDER_DRAGON) {
@ -583,7 +583,7 @@ class Events implements Listener {
if (onChunk == 50) { if (onChunk == 50) {
event.setCancelled(true); event.setCancelled(true);
} }
} }*/
} }
@EventHandler @EventHandler