ensure world is set for pathfinders
This commit is contained in:
parent
320feb400b
commit
bd4280b9ec
1 changed files with 60 additions and 23 deletions
|
@ -1,30 +1,67 @@
|
|||
From 67fd8976c70a84758a635896026b931f58b32689 Mon Sep 17 00:00:00 2001
|
||||
From efe00b392d2d7c0ce533572ff47bd7a27cbb2d57 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Mon, 10 Sep 2018 23:52:28 -0400
|
||||
Subject: [PATCH] Prevent pathfinding from loading chunks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
index 4023253f42..b2480301ef 100644
|
||||
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
@@ -21,13 +21,14 @@ public abstract class NavigationAbstract {
|
||||
protected long n;
|
||||
protected PathfinderAbstract o;
|
||||
private BlockPosition q;
|
||||
- private Pathfinder r;
|
||||
+ private Pathfinder r; public Pathfinder getPathfinder() { return r; } // Paper - OBFHELPER
|
||||
|
||||
public NavigationAbstract(EntityInsentient entityinsentient, World world) {
|
||||
this.a = entityinsentient;
|
||||
this.b = world;
|
||||
this.p = entityinsentient.getAttributeInstance(GenericAttributes.FOLLOW_RANGE);
|
||||
this.r = this.a();
|
||||
+ getPathfinder().getPathfinder().world = world; // Paper
|
||||
}
|
||||
|
||||
public BlockPosition i() {
|
||||
diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
index 04c71ac0ef..6e583356ce 100644
|
||||
--- a/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
+++ b/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
@@ -8,7 +8,7 @@ public class Pathfinder {
|
||||
private final Path a = new Path();
|
||||
private final Set<PathPoint> b = Sets.newHashSet();
|
||||
private final PathPoint[] c = new PathPoint[32];
|
||||
- private PathfinderAbstract d;
|
||||
+ private PathfinderAbstract d; public PathfinderAbstract getPathfinder() { return d; } // Paper - OBFHELPER
|
||||
|
||||
public Pathfinder(PathfinderAbstract pathfinderabstract) {
|
||||
this.d = pathfinderabstract;
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderAbstract.java b/src/main/java/net/minecraft/server/PathfinderAbstract.java
|
||||
index ba7fe359fe..6716280146 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderAbstract.java
|
||||
@@ -3,6 +3,7 @@ package net.minecraft.server;
|
||||
public abstract class PathfinderAbstract {
|
||||
protected IBlockAccess a;
|
||||
protected EntityInsentient b;
|
||||
+ public World world; // Paper
|
||||
protected final IntHashMap<PathPoint> c = new IntHashMap<PathPoint>();
|
||||
protected int d;
|
||||
protected int e;
|
||||
@@ -16,6 +17,7 @@ public abstract class PathfinderAbstract {
|
||||
|
||||
public void a(IBlockAccess iblockaccess, EntityInsentient entityinsentient) {
|
||||
this.a = iblockaccess;
|
||||
+ if (iblockaccess instanceof World) world = (World) iblockaccess; // Paper
|
||||
this.b = entityinsentient;
|
||||
this.c.c();
|
||||
this.d = MathHelper.d(entityinsentient.width + 1.0F);
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
index 64e0b08170..58aa6df0a1 100644
|
||||
index 64e0b08170..93f3d2e363 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
@@ -7,6 +7,7 @@ import javax.annotation.Nullable;
|
||||
|
||||
public class PathfinderNormal extends PathfinderAbstract {
|
||||
protected float j;
|
||||
+ private World world; // Paper
|
||||
|
||||
public PathfinderNormal() {
|
||||
}
|
||||
@@ -14,6 +15,7 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
public void a(IBlockAccess iblockaccess, EntityInsentient entityinsentient) {
|
||||
super.a(iblockaccess, entityinsentient);
|
||||
this.j = entityinsentient.a(PathType.WATER);
|
||||
+ this.world = entityinsentient.world; // Paper
|
||||
}
|
||||
|
||||
public void a() {
|
||||
@@ -47,7 +49,7 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
@@ -47,7 +47,7 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
BlockPosition blockposition2 = new BlockPosition(this.b);
|
||||
PathType pathtype1 = this.a(this.b, blockposition2.getX(), i, blockposition2.getZ());
|
||||
if (this.b.a(pathtype1) < 0.0F) {
|
||||
|
@ -33,7 +70,7 @@ index 64e0b08170..58aa6df0a1 100644
|
|||
hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().c));
|
||||
hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().f));
|
||||
hashset.add(new BlockPosition(this.b.getBoundingBox().d, (double)i, this.b.getBoundingBox().c));
|
||||
@@ -233,7 +235,7 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
@@ -233,7 +233,7 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
}
|
||||
|
||||
public PathType a(IBlockAccess iblockaccess, int i, int jx, int k, EntityInsentient entityinsentient, int l, int i1, int j1, boolean flag, boolean flag1) {
|
||||
|
@ -42,7 +79,7 @@ index 64e0b08170..58aa6df0a1 100644
|
|||
PathType pathtype = PathType.BLOCKED;
|
||||
double d0 = (double)entityinsentient.width / 2.0D;
|
||||
BlockPosition blockposition = new BlockPosition(entityinsentient);
|
||||
@@ -304,7 +306,8 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
@@ -304,7 +304,8 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
public PathType a(IBlockAccess iblockaccess, int i, int jx, int k) {
|
||||
PathType pathtype = this.b(iblockaccess, i, jx, k);
|
||||
if (pathtype == PathType.OPEN && jx >= 1) {
|
||||
|
@ -52,7 +89,7 @@ index 64e0b08170..58aa6df0a1 100644
|
|||
PathType pathtype1 = this.b(iblockaccess, i, jx - 1, k);
|
||||
pathtype = pathtype1 != PathType.WALKABLE && pathtype1 != PathType.OPEN && pathtype1 != PathType.WATER && pathtype1 != PathType.LAVA ? PathType.WALKABLE : PathType.OPEN;
|
||||
if (pathtype1 == PathType.DAMAGE_FIRE || block == Blocks.MAGMA_BLOCK) {
|
||||
@@ -326,8 +329,9 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
@@ -326,8 +327,9 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
for(int l = -1; l <= 1; ++l) {
|
||||
for(int i1 = -1; i1 <= 1; ++i1) {
|
||||
if (l != 0 || i1 != 0) {
|
||||
|
@ -64,7 +101,7 @@ index 64e0b08170..58aa6df0a1 100644
|
|||
pathtype = PathType.DANGER_CACTUS;
|
||||
} else if (block == Blocks.FIRE) {
|
||||
pathtype = PathType.DANGER_FIRE;
|
||||
@@ -343,7 +347,8 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
@@ -343,7 +345,8 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
|
||||
protected PathType b(IBlockAccess iblockaccess, int i, int jx, int k) {
|
||||
BlockPosition blockposition = new BlockPosition(i, jx, k);
|
||||
|
|
Loading…
Reference in a new issue