9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2026-01-06 15:51:31 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0138-Remove-streams-on-InsideBrownianWalk.patch
Taiyou 83e9043a45 Couple fixes and improvements (#287)
* a lot of cleanup and new chunk changes

* perf: Head Node Hit Optimization

* part 1: reworked-reworked ChunkHolderManager

* part 2: speeeeeeeeeeeeeeeeeeeeeeeeeeed

* Optimise MobEffectUtil#getDigSpeedAmplification

* optimize chunk unloads and cleanup a bit

* fix 🐝

* rewritten async target finding

* extend the custom map usage

---------

Co-authored-by: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
2025-04-21 23:49:33 +03:00

54 lines
3.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Taiyou06 <kaandindar21@gmail.com>
Date: Wed, 19 Mar 2025 15:18:58 +0100
Subject: [PATCH] Remove streams on InsideBrownianWalk
This method is mainly visible when ton of villagers suddenly wants to sleep
Safe optimization, no need to provide any numbers.
diff --git a/net/minecraft/world/entity/ai/behavior/InsideBrownianWalk.java b/net/minecraft/world/entity/ai/behavior/InsideBrownianWalk.java
index cbde74f4b6d586a5f80cdd675573441636bf682d..2324b941c7513692608b5146bc90c8e6124d2ee6 100644
--- a/net/minecraft/world/entity/ai/behavior/InsideBrownianWalk.java
+++ b/net/minecraft/world/entity/ai/behavior/InsideBrownianWalk.java
@@ -20,16 +20,31 @@ public class InsideBrownianWalk {
return false;
} else {
BlockPos blockPos = mob.blockPosition();
- List<BlockPos> list = BlockPos.betweenClosedStream(blockPos.offset(-1, -1, -1), blockPos.offset(1, 1, 1))
- .map(BlockPos::immutable)
- .collect(Util.toMutableList());
+ // Leaf start - Remove streams on InsideBrownianWalk
+ BlockPos minPos = blockPos.offset(-1, -1, -1);
+ BlockPos maxPos = blockPos.offset(1, 1, 1);
+ List<BlockPos> list = new java.util.ArrayList<>();
+
+ for (int x = minPos.getX(); x <= maxPos.getX(); x++) {
+ for (int y = minPos.getY(); y <= maxPos.getY(); y++) {
+ for (int z = minPos.getZ(); z <= maxPos.getZ(); z++) {
+ list.add(new BlockPos(x, y, z).immutable());
+ }
+ }
+ }
+
Collections.shuffle(list);
- list.stream()
- .filter(pos -> !level.canSeeSky(pos))
- .filter(pos -> level.loadedAndEntityCanStandOn(pos, mob))
- .filter(pos -> level.noCollision(mob))
- .findFirst()
- .ifPresent(pos -> walkTarget.set(new WalkTarget(pos, speedModifier, 0)));
+
+ for (BlockPos pos : list) {
+ if (!level.canSeeSky(pos) &&
+ level.loadedAndEntityCanStandOn(pos, mob) &&
+ level.noCollision(mob)) {
+ walkTarget.set(new WalkTarget(pos, speedModifier, 0));
+ break;
+ }
+ }
+ // Leaf end - Remove streams on InsideBrownianWalk
+
return true;
}
}