diff options
Diffstat (limited to 'patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch')
-rw-r--r-- | patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch b/patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch new file mode 100644 index 0000000000..21235871ad --- /dev/null +++ b/patches/server/0113-Prevent-Pathfinding-out-of-World-Border.patch @@ -0,0 +1,27 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +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 + +TODO: This doesn't prevent the pathfinder from using blocks outside the world border as nodes. We can fix this +by adding code to all overrides in: + NodeEvaluator: + public abstract BlockPathTypes getBlockPathType(BlockGetter world, int x, int y, int z); + +to return BLOCKED if it is outside the world border. + +diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +index 1d5ce4caf99a3fb376b350968a6bd1ac8471ffec..436812c3bfe53358b4d76bb72d777d6661bb6d60 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java ++++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +@@ -174,7 +174,7 @@ public abstract class PathNavigation { + // Paper start - EntityPathfindEvent + boolean copiedSet = false; + for (BlockPos possibleTarget : positions) { +- if (!new com.destroystokyo.paper.event.entity.EntityPathfindEvent(this.mob.getBukkitEntity(), ++ if (!this.mob.getCommandSenderWorld().getWorldBorder().isWithinBounds(possibleTarget) || !new com.destroystokyo.paper.event.entity.EntityPathfindEvent(this.mob.getBukkitEntity(), // Paper - don't path out of world border + io.papermc.paper.util.MCUtil.toLocation(this.mob.level(), possibleTarget), target == null ? null : target.getBukkitEntity()).callEvent()) { + if (!copiedSet) { + copiedSet = true; |