PaperMC/Spigot-Server-Patches/Chunk-registration-fixes.patch
Aikar 82500a59f0 Merge branch 'master' into pre/1.13
* master:
  Always process chunk registration after moving
  Always move Entity to its new Chunk even if unloaded
  If Entity is added to chunk, look up the chunk if current isnt set
  Ignore Dead Entities in entityList iteration
  Always process chunk removal in removeEntity
2018-07-29 13:12:39 -04:00

32 lines
No EOL
1.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 21 Sep 2016 22:54:28 -0400
Subject: [PATCH] Chunk registration fixes
World checks and the Chunk Add logic are inconsistent on how Y > 256, < 0, is treated
Keep them consistent
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e74b53c48..01041ede9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
}
i = MathHelper.floor(entity.locX / 16.0D);
- j = MathHelper.floor(entity.locY / 16.0D);
+ j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY / 16.0D))); // Paper - stay consistent with chunk add/remove behavior
int k = MathHelper.floor(entity.locZ / 16.0D);
if (!entity.inChunk || entity.ae != i || entity.af != j || entity.ag != k) {
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
this.getChunkAt(entity.ae, entity.ag).a(entity, entity.af);
}
- if (!entity.bN() && !this.isChunkLoaded(i, k, true)) {
+ if (false && !entity.bN() && !this.isChunkLoaded(i, k, true)) { // Paper - Always send entities into a new chunk, never lose them
entity.inChunk = false;
} else {
this.getChunkAt(i, k).a(entity);
--