reduce operation cost

This commit is contained in:
xGinko 2024-03-20 22:14:29 +01:00
parent 533031863f
commit 123c0d0787

View File

@ -26,7 +26,6 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import java.time.Duration; import java.time.Duration;
import java.util.Iterator;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -101,15 +100,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
return; return;
} }
final Iterator<WrappedVillager> villagerIterator = workstationLoc.getNearbyEntitiesByType(Villager.class, search_radius) for (Villager villager : workstationLoc.getNearbyEntitiesByType(Villager.class, search_radius)) {
.stream() if (villager.getProfession() != workstationProfession) continue;
.filter(villager -> villager.isAdult() && villager.getProfession() != Villager.Profession.NITWIT) WrappedVillager wrapped = villagerCache.getOrAdd(villager);
.map(villagerCache::getOrAdd)
.iterator();
while (villagerIterator.hasNext()) {
final WrappedVillager wrapped = villagerIterator.next();
if (wrapped.villager().getProfession() != workstationProfession) continue;
if (wrapped.getJobSite() == null) continue; if (wrapped.getJobSite() == null) continue;
if (wrapped.getJobSite().distanceSquared(workstationLoc) > 1) continue; if (wrapped.getJobSite().distanceSquared(workstationLoc) > 1) continue;