mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
74f507f4e3
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: e461dcfe #555: Item - add getters/setters for owner/thrower CraftBukkit Changes: 055870c4 #758: Item - add getters/setters for owner/thrower
53 lines
2.2 KiB
Diff
53 lines
2.2 KiB
Diff
From 0000000000000000000000000000000000000000 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 81c88c6bf737945c6cbd659d2feaf3f763b7df73..921b60469d5b66eb69648af30da6e51f23d02ba5 100644
|
|
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
@@ -11,7 +11,7 @@ public abstract class NavigationAbstract {
|
|
protected final EntityInsentient a; public Entity getEntity() { return a; } // Paper - OBFHELPER
|
|
protected final World b;
|
|
@Nullable
|
|
- protected PathEntity c;
|
|
+ protected PathEntity c; protected final PathEntity getCurrentPath() { return this.c; } // Paper - OBFHELPER
|
|
protected double d;
|
|
protected int e;
|
|
protected int f;
|
|
@@ -163,10 +163,30 @@ public abstract class NavigationAbstract {
|
|
return this.a(this.a(d0, d1, d2, 1), d3);
|
|
}
|
|
|
|
+ // Paper start - optimise pathfinding
|
|
+ private int lastFailure = 0;
|
|
+ private int pathfindFailures = 0;
|
|
+ // Paper end
|
|
+
|
|
public boolean a(Entity entity, double d0) {
|
|
+ // Paper start - Pathfinding optimizations
|
|
+ if (this.pathfindFailures > 10 && this.getCurrentPath() == null && MinecraftServer.currentTick < this.lastFailure + 40) {
|
|
+ return false;
|
|
+ }
|
|
+ // Paper end
|
|
PathEntity pathentity = this.a(entity, 1);
|
|
|
|
- return pathentity != null && this.a(pathentity, d0);
|
|
+ // Paper start - Pathfinding optimizations
|
|
+ if (pathentity != null && this.a(pathentity, d0)) {
|
|
+ this.lastFailure = 0;
|
|
+ this.pathfindFailures = 0;
|
|
+ return true;
|
|
+ } else {
|
|
+ this.pathfindFailures++;
|
|
+ this.lastFailure = MinecraftServer.currentTick;
|
|
+ return false;
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
public boolean setDestination(@Nullable PathEntity pathentity, double speed) { return a(pathentity, speed); } // Paper - OBFHELPER
|