geforkt von Mirrors/Paper
654b792caf
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 CraftBukkit Changes:a339310c
#755: Fix NPE when calling getInventory() for virtual EnderChests2577f9bf
Increase outdated build delay1dabfdc8
#754: Fix pre-1.16 serialized SkullMeta being broken on 1.16+, losing textures
54 Zeilen
2.2 KiB
Diff
54 Zeilen
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
|