geforkt von Mirrors/Paper
b5184575e6
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
36 Zeilen
1.7 KiB
Diff
36 Zeilen
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
|
|
|