From 123c0d07876535b94d8e4df4fd0188ceb2034b88 Mon Sep 17 00:00:00 2001 From: xGinko Date: Wed, 20 Mar 2024 22:14:29 +0100 Subject: [PATCH] reduce operation cost --- .../modules/optimization/OptimizeByWorkstation.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java index c18bc60..d83698d 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java @@ -26,7 +26,6 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import java.time.Duration; -import java.util.Iterator; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -101,15 +100,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener return; } - final Iterator villagerIterator = workstationLoc.getNearbyEntitiesByType(Villager.class, search_radius) - .stream() - .filter(villager -> villager.isAdult() && villager.getProfession() != Villager.Profession.NITWIT) - .map(villagerCache::getOrAdd) - .iterator(); - - while (villagerIterator.hasNext()) { - final WrappedVillager wrapped = villagerIterator.next(); - if (wrapped.villager().getProfession() != workstationProfession) continue; + for (Villager villager : workstationLoc.getNearbyEntitiesByType(Villager.class, search_radius)) { + if (villager.getProfession() != workstationProfession) continue; + WrappedVillager wrapped = villagerCache.getOrAdd(villager); if (wrapped.getJobSite() == null) continue; if (wrapped.getJobSite().distanceSquared(workstationLoc) > 1) continue;