mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
7c9097159c
It was calling back out to world for it, we already have them. Also use the nocache method for building the chunk cache too.
71 lines
4.2 KiB
Diff
71 lines
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Thu, 31 Mar 2016 19:17:58 -0400
|
|
Subject: [PATCH] Do not load chunks for Pathfinding
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 {
|
|
private BlockPosition q;
|
|
private int r;
|
|
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 = 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 = 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 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 && block != Blocks.LAVA) {
|
|
@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract {
|
|
|
|
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
|
|
+ if (iblockdata == null) return PathType.BLOCKED; // Paper
|
|
Block block = iblockdata.getBlock();
|
|
Material material = iblockdata.getMaterial();
|
|
|