mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
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: 30885166 Update to Minecraft 1.16.4 CraftBukkit Changes: 3af81c71 Update to Minecraft 1.16.4 Spigot Changes: f011ca24 Update to Minecraft 1.16.4 Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
54 lines
2.2 KiB
Diff
54 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 64b991859f0f3ca7d932b8acc8aeed401e22a388..1558c5f8256f50be6850f1d7f70eee3e8ec76496 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
|