More progress
This commit is contained in:
@@ -5,83 +5,76 @@ Subject: [PATCH] Do not load chunks for Pathfinding
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkCache.java b/src/main/java/net/minecraft/server/ChunkCache.java
|
||||
index 869e8548c6..beb50d2068 100644
|
||||
index 818872944..1065c0dec 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkCache.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkCache.java
|
||||
@@ -0,0 +0,0 @@ public class ChunkCache implements IWorldReader {
|
||||
@@ -0,0 +0,0 @@ public class ChunkCache implements IBlockAccess, ICollisionAccess {
|
||||
|
||||
for (k = this.a; k <= i; ++k) {
|
||||
for (l = this.b; l <= j; ++l) {
|
||||
- this.c[k - this.a][l - this.b] = world.getChunkAt(k, l, ChunkStatus.FULL, false);
|
||||
- this.c[k - this.a][l - this.b] = ichunkprovider.a(k, l);
|
||||
+ this.c[k - this.a][l - this.b] = world.getChunkIfLoadedImmediately(k, l); // Paper
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +0,0 @@ public class ChunkCache implements IWorldReader {
|
||||
int k = i - this.a;
|
||||
int l = j - this.b;
|
||||
|
||||
- return k >= 0 && k < this.c.length && l >= 0 && l < this.c[k].length;
|
||||
+ return k >= 0 && k < this.c.length && l >= 0 && l < this.c[k].length && this.c[k][l] != null; // Paper - We don't always load chunks
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
index 4d04ba8fc6..126c05adc7 100644
|
||||
index 5e7158ba1..39a0c45bb 100644
|
||||
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
||||
@@ -0,0 +0,0 @@ public abstract class NavigationAbstract {
|
||||
protected PathfinderAbstract o;
|
||||
private BlockPosition q;
|
||||
private int r;
|
||||
- private Pathfinder s;
|
||||
+ private Pathfinder s; public Pathfinder getPathfinder() { return this.s; } // Paper - OBFHELPER
|
||||
private float s;
|
||||
- private final Pathfinder t;
|
||||
+ private final Pathfinder t; public Pathfinder getPathfinder() { return this.t; } // Paper - OBFHELPER
|
||||
|
||||
public NavigationAbstract(EntityInsentient entityinsentient, World world) {
|
||||
this.g = Vec3D.a;
|
||||
diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
index 30b4569a39..0cec80ec7d 100644
|
||||
index 619957061..67c63cfe3 100644
|
||||
--- a/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
+++ b/src/main/java/net/minecraft/server/Pathfinder.java
|
||||
@@ -0,0 +0,0 @@ public class Pathfinder {
|
||||
private final Set<PathPoint> b = Sets.newHashSet();
|
||||
private final PathPoint[] c = new PathPoint[32];
|
||||
private final int d;
|
||||
- private PathfinderAbstract e;
|
||||
+ private PathfinderAbstract e; public PathfinderAbstract getPathfinder() { return this.e; } // Paper - OBFHELPER
|
||||
- private final PathfinderAbstract e;
|
||||
+ private final PathfinderAbstract e; public PathfinderAbstract getPathfinder() { return this.e; } // Paper - OBFHELPER
|
||||
|
||||
public Pathfinder(PathfinderAbstract pathfinderabstract, int i) {
|
||||
this.e = pathfinderabstract;
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
index 617c29a58a..45fd135034 100644
|
||||
index ef248ebcc..4240ca81c 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
|
||||
@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
PathType pathtype = this.b(iblockaccess, i, j, k);
|
||||
PathType pathtype = c(iblockaccess, i, j, k);
|
||||
|
||||
if (pathtype == PathType.OPEN && j >= 1) {
|
||||
- Block block = iblockaccess.getType(new BlockPosition(i, j - 1, k)).getBlock();
|
||||
+ Block block = iblockaccess.getBlockIfLoaded(new BlockPosition(i, j - 1, k)); // Paper
|
||||
+ if (block == null) return PathType.BLOCKED; // Paper
|
||||
PathType pathtype1 = this.b(iblockaccess, i, j - 1, k);
|
||||
PathType pathtype1 = c(iblockaccess, i, j - 1, k);
|
||||
|
||||
pathtype = pathtype1 != PathType.WALKABLE && pathtype1 != PathType.OPEN && pathtype1 != PathType.WATER && pathtype1 != PathType.LAVA ? PathType.WALKABLE : PathType.OPEN;
|
||||
@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
for (int l = -1; l <= 1; ++l) {
|
||||
for (int i1 = -1; i1 <= 1; ++i1) {
|
||||
if (l != 0 || i1 != 0) {
|
||||
- Block block = iblockaccess.getType(blockposition_pooledblockposition.d(l + i, j, i1 + k)).getBlock();
|
||||
+ Block block = iblockaccess.getBlockIfLoaded(blockposition_pooledblockposition.d(l + i, j, i1 + k)); // Paper
|
||||
|
||||
- if (block == Blocks.CACTUS) {
|
||||
+ if (block == null) pathtype = PathType.BLOCKED; // Paper
|
||||
+ else if (block == Blocks.CACTUS) { // Paper
|
||||
for (int i1 = -1; i1 <= 1; ++i1) {
|
||||
for (int j1 = -1; j1 <= 1; ++j1) {
|
||||
if (l != 0 || j1 != 0) {
|
||||
- Block block = iblockaccess.getType(blockposition_pooledblockposition.d(l + i, i1 + j, j1 + k)).getBlock();
|
||||
-
|
||||
+ // Paper start
|
||||
+ Block block = iblockaccess.getBlockIfLoaded(blockposition_pooledblockposition.d(l + i, i1 + j, j1 + k));
|
||||
+ if (block == null) {
|
||||
+ pathtype = PathType.BLOCKED;
|
||||
+ } else
|
||||
+ // Paper end
|
||||
if (block == Blocks.CACTUS) {
|
||||
pathtype = PathType.DANGER_CACTUS;
|
||||
} else if (block == Blocks.FIRE) {
|
||||
pathtype = PathType.DANGER_FIRE;
|
||||
} else if (block != Blocks.FIRE && block != Blocks.LAVA) {
|
||||
@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract {
|
||||
|
||||
protected PathType b(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||
protected static PathType c(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||
BlockPosition blockposition = new BlockPosition(i, j, k);
|
||||
- IBlockData iblockdata = iblockaccess.getType(blockposition);
|
||||
+ IBlockData iblockdata = iblockaccess.getTypeIfLoaded(blockposition); // Paper
|
||||
|
||||
Reference in New Issue
Block a user