9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0151-Remove-stream-in-BehaviorUtils.patch

49 lines
2.2 KiB
Diff

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) {