From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Date: Sat, 26 Oct 2024 00:56:24 +0800 Subject: [PATCH] Remove stream in BehaviorUtils diff --git a/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java b/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java index e7f74b4f54069ffdf74f029639cbf0756f2db095..b5257eefa04e930b45ffd9d46f28e53026ad728f 100644 --- a/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java +++ b/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java @@ -110,10 +110,33 @@ public class BehaviorUtils { public static SectionPos findSectionClosestToVillage(ServerLevel serverLevel, SectionPos sectionPos, int radius) { int i = serverLevel.sectionsToVillage(sectionPos); - return SectionPos.cube(sectionPos, radius) - .filter(pos -> serverLevel.sectionsToVillage(pos) < i) - .min(Comparator.comparingInt(serverLevel::sectionsToVillage)) - .orElse(sectionPos); + // Leaf start - Remove stream in BehaviorUtils + SectionPos closestSection = sectionPos; + int closestDistance = i; + + final int lowerX = sectionPos.getX() - radius; + final int lowerY = sectionPos.getY() - radius; + final int lowerZ = sectionPos.getZ() - radius; + final int upperX = sectionPos.getX() + radius; + final int upperY = sectionPos.getY() + radius; + final int upperZ = sectionPos.getZ() + radius; + + for (int x = lowerX; x <= upperX; x++) { + for (int z = lowerZ; z <= upperZ; z++) { + for (int y = lowerY; y <= upperY; y++) { + SectionPos pos = SectionPos.of(x, y, z); + int distance = serverLevel.sectionsToVillage(pos); + + if (distance < closestDistance) { + closestDistance = distance; + closestSection = pos; + } + } + } + } + + return closestSection; + // Leaf end - Remove stream in BehaviorUtils } public static boolean isWithinAttackRange(Mob mob, LivingEntity target, int cooldown) {