PaperMC/Spigot-Server-Patches/0153-Prevent-Pathfinding-out-of-World-Border.patch
Aikar 459987d69f
More improvements to activation range, improve turtles
improved the water code so that immunity wont trigger if the entity
has the water pathfinder system active, so this improves support
for all entities that know how to behave in water.

Merged 2 EAR patches together, and removed an MCUtil method that
doesnt have a purpose anymore
2018-10-04 23:18:46 -04:00

43 lines
2.2 KiB
Diff

From 6cbf0d8ca037c71d47ed2b79ed80531d56268a38 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 19 Dec 2016 23:07:42 -0500
Subject: [PATCH] Prevent Pathfinding out of World Border
This prevents Entities from trying to run outside of the World Border
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
index 7a4bc0fcc3..efdfa7195c 100644
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -71,6 +71,7 @@ public abstract class NavigationAbstract {
@Nullable
public PathEntity b(BlockPosition blockposition) {
+ if (!getEntity().getWorld().getWorldBorder().isInBounds(blockposition)) return null; // Paper - don't path out of world border
if (!this.b()) {
return null;
} else if (this.c != null && !this.c.b() && blockposition.equals(this.q)) {
@@ -95,6 +96,7 @@ public abstract class NavigationAbstract {
return null;
} else {
BlockPosition blockposition = new BlockPosition(entity);
+ if (!getEntity().getWorld().getWorldBorder().isInBounds(blockposition)) return null; // Paper - don't path out of world border
if (this.c != null && !this.c.b() && blockposition.equals(this.q)) {
return this.c;
} else {
diff --git a/src/main/java/net/minecraft/server/WorldBorder.java b/src/main/java/net/minecraft/server/WorldBorder.java
index acd76e13bb..1a87480f09 100644
--- a/src/main/java/net/minecraft/server/WorldBorder.java
+++ b/src/main/java/net/minecraft/server/WorldBorder.java
@@ -19,7 +19,7 @@ public class WorldBorder {
public WorldBorder() {}
- public boolean a(BlockPosition blockposition) {
+ public boolean isInBounds(BlockPosition blockposition) { return a(blockposition); }public boolean a(BlockPosition blockposition) { // Paper - OBFHELPER
return (double) (blockposition.getX() + 1) > this.b() && (double) blockposition.getX() < this.d() && (double) (blockposition.getZ() + 1) > this.c() && (double) blockposition.getZ() < this.e();
}
--
2.19.0