Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 11:30:06 +01:00
18c3716c49
This enables us a fast reference to the entities current chunk instead of having to look it up by hashmap lookups. We also store counts by type to further enable other performance optimizations in later patches.
44 Zeilen
2.1 KiB
Diff
44 Zeilen
2.1 KiB
Diff
From 6aa8b24934a87152a920c31909f7e63199336589 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 3ac6f84d3..935b2e81e 100644
|
|
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
@@ -69,6 +69,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;
|
|
diff --git a/src/main/java/net/minecraft/server/WorldBorder.java b/src/main/java/net/minecraft/server/WorldBorder.java
|
|
index 9038d52eb..632eb1c9d 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldBorder.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldBorder.java
|
|
@@ -29,7 +29,7 @@ public class WorldBorder {
|
|
this.l = 5;
|
|
}
|
|
|
|
- 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.18.0
|
|
|