diff --git a/src/main/java/world/bentobox/limits/Settings.java b/src/main/java/world/bentobox/limits/Settings.java index 8905480..d753e65 100644 --- a/src/main/java/world/bentobox/limits/Settings.java +++ b/src/main/java/world/bentobox/limits/Settings.java @@ -98,7 +98,7 @@ public class Settings { } addon.log("Entity group limits:"); - getGroupLimitDefinitions().stream().map(e -> "Limit " + e.getName() + " to " + e.getLimit()).forEach(addon::log); + getGroupLimitDefinitions().stream().map(e -> "Limit " + e.getName() + " (" + e.getTypes().stream().map(x -> x.name()).collect(Collectors.joining(", ")) + ") to " + e.getLimit()).forEach(addon::log); } private EntityType getType(String key) { diff --git a/src/main/java/world/bentobox/limits/listeners/EntityLimitListener.java b/src/main/java/world/bentobox/limits/listeners/EntityLimitListener.java index 58964c4..2d99b6a 100644 --- a/src/main/java/world/bentobox/limits/listeners/EntityLimitListener.java +++ b/src/main/java/world/bentobox/limits/listeners/EntityLimitListener.java @@ -217,17 +217,20 @@ public class EntityLimitListener implements Listener { if (limitAmount < 0 && groupsLimits.isEmpty()) return new AtLimitResult(); // We have to count the entities - int count = (int) ent.getWorld().getEntities().stream() - .filter(e -> e.getType().equals(ent.getType())) - .filter(e -> island.inIslandSpace(e.getLocation())).count(); - if (count >= limitAmount) - return new AtLimitResult(ent.getType(), limitAmount); + if (limitAmount >= 0) + { + int count = (int) ent.getWorld().getEntities().stream() + .filter(e -> e.getType().equals(ent.getType())) + .filter(e -> island.inIslandSpace(e.getLocation())).count(); + if (count >= limitAmount) + return new AtLimitResult(ent.getType(), limitAmount); + } // Now do the group limits for (Map.Entry group : groupsLimits.entrySet()) { //do not use lambda if (group.getValue() < 0) continue; - count = (int) ent.getWorld().getEntities().stream() + int count = (int) ent.getWorld().getEntities().stream() .filter(e -> group.getKey().contains(e.getType())) .filter(e -> island.inIslandSpace(e.getLocation())).count(); if (count >= group.getValue())