geforkt von Mirrors/Paper
5b6dfb3463
This work is 100% unfinished. I am pushing it up so that we as a team can work on this update. Do not try to use this branch. You will fail.
52 Zeilen
1.7 KiB
Diff
52 Zeilen
1.7 KiB
Diff
From add330cbad4d620b15e610e7df6f692ce69560df Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Thu, 3 Mar 2016 02:02:07 -0600
|
|
Subject: [PATCH] Optimize Pathfinding
|
|
|
|
Prevents pathfinding from spamming failures for things such as
|
|
arrow attacks.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
index 9337b9397..1964684ac 100644
|
|
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
@@ -122,10 +122,26 @@ public abstract class NavigationAbstract {
|
|
}
|
|
|
|
public boolean a(Entity entity, double d0) {
|
|
+ // Paper start - Pathfinding optimizations
|
|
+ if (this.pathfindFailures > 10 && this.c == null && MinecraftServer.currentTick < this.lastFailure + 40) {
|
|
+ return false;
|
|
+ }
|
|
+
|
|
PathEntity pathentity = this.a(entity);
|
|
|
|
- return pathentity != null && this.a(pathentity, d0);
|
|
+ if (pathentity != null && this.a(pathentity, d0)) {
|
|
+ this.lastFailure = 0;
|
|
+ this.pathfindFailures = 0;
|
|
+ return true;
|
|
+ } else {
|
|
+ this.pathfindFailures++;
|
|
+ this.lastFailure = MinecraftServer.currentTick;
|
|
+ return false;
|
|
+ }
|
|
}
|
|
+ private int lastFailure = 0;
|
|
+ private int pathfindFailures = 0;
|
|
+ // Paper end
|
|
|
|
public boolean a(@Nullable PathEntity pathentity, double d0) {
|
|
if (pathentity == null) {
|
|
@@ -258,6 +274,7 @@ public abstract class NavigationAbstract {
|
|
}
|
|
|
|
public void r() {
|
|
+ this.pathfindFailures = 0; this.lastFailure = 0; // Paper - Pathfinding optimizations
|
|
this.c = null;
|
|
}
|
|
|
|
--
|
|
2.18.0
|
|
|