36 lines
1.7 KiB
Diff
36 lines
1.7 KiB
Diff
|
From 9615b6f9aa28294eb6338baf0d29e2e5fc1921bb Mon Sep 17 00:00:00 2001
|
||
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||
|
Date: Tue, 13 Nov 2018 14:01:00 +0000
|
||
|
Subject: [PATCH] limit the range at which we'll consider an attackable target
|
||
|
|
||
|
This patch aims to ensure that MCP World#getNearestAttackablePlayer
|
||
|
will not trigger chunk loads due to PathfinderGoalNearestAttackableTarget
|
||
|
performing a ray trace operation by pre-checking the maximum limit;
|
||
|
|
||
|
Given that the implementation shows that the limit should only ever
|
||
|
decrease when set, allowing us to skip further checks earlier on
|
||
|
when looking for an attackable entity
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||
|
index cdbb247da..027871c00 100644
|
||
|
--- a/src/main/java/net/minecraft/server/World.java
|
||
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||
|
@@ -2795,8 +2795,13 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
||
|
for (int i = 0; i < this.players.size(); ++i) {
|
||
|
EntityHuman entityhuman1 = (EntityHuman) this.players.get(i);
|
||
|
|
||
|
+ // Paper start
|
||
|
+ // move distance check up, if set, check distance^2 is less than XZlimit^2, continue
|
||
|
+ // 4th method param is XZlimit (at least at the time of commit)
|
||
|
+ double d6 = entityhuman1.d(d0, entityhuman1.locY, d2);
|
||
|
+ if (d3 < 0.0D || d6 < d3 * d3)
|
||
|
if (!entityhuman1.abilities.isInvulnerable && entityhuman1.isAlive() && !entityhuman1.isSpectator() && (predicate == null || predicate.test(entityhuman1))) {
|
||
|
- double d6 = entityhuman1.d(d0, entityhuman1.locY, d2);
|
||
|
+ // Paper end
|
||
|
double d7 = d3;
|
||
|
|
||
|
if (entityhuman1.isSneaking()) {
|
||
|
--
|
||
|
2.19.1
|
||
|
|