This will help guarantee that entities are always in the chunk that they are currently located at. Should hopefully also fix Citizens triggering the "Saved to wrong chunk" message
68 lines
3.5 KiB
Diff
68 lines
3.5 KiB
Diff
From e7b5ab4f8db7b8af7de3f0f2cd3bc23fa2a2c83a Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sun, 29 Jul 2018 11:58:05 -0400
|
|
Subject: [PATCH] Always process chunk registration after moving
|
|
|
|
This will help guarantee that entities are always in the
|
|
chunk that they are currently located at.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 45e149f4a..fce677f9f 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -341,6 +341,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
|
|
this.locX = d0;
|
|
this.locY = d1;
|
|
this.locZ = d2;
|
|
+ if (valid) world.entityJoinedWorld(this, false); // Paper - ensure Entity is moved to its proper chunk
|
|
float f = this.width / 2.0F;
|
|
float f1 = this.length;
|
|
|
|
@@ -986,6 +987,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
|
|
this.locX = (axisalignedbb.a + axisalignedbb.d) / 2.0D;
|
|
this.locY = axisalignedbb.b;
|
|
this.locZ = (axisalignedbb.c + axisalignedbb.f) / 2.0D;
|
|
+ if (valid) world.entityJoinedWorld(this, false); // Paper - ensure Entity is moved to its proper chunk
|
|
}
|
|
|
|
protected SoundEffect ae() {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
|
|
index 8a9e16ad6..0b1d7a086 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityArrow.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
|
|
@@ -360,6 +360,7 @@ public abstract class EntityArrow extends Entity implements IProjectile {
|
|
this.inGround = true;
|
|
this.shake = 7;
|
|
this.setCritical(false);
|
|
+ if (valid) world.entityJoinedWorld(this, false); // Paper - ensure Entity is moved to its proper chunk
|
|
if (iblockdata.getMaterial() != Material.AIR) {
|
|
this.av.a(this.world, blockposition, iblockdata, (Entity) this);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLeash.java b/src/main/java/net/minecraft/server/EntityLeash.java
|
|
index 7bd1c73bf..10a507595 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLeash.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLeash.java
|
|
@@ -31,6 +31,7 @@ public class EntityLeash extends EntityHanging {
|
|
this.locX = (double) this.blockPosition.getX() + 0.5D;
|
|
this.locY = (double) this.blockPosition.getY() + 0.5D;
|
|
this.locZ = (double) this.blockPosition.getZ() + 0.5D;
|
|
+ if (valid) world.entityJoinedWorld(this, false); // Paper - ensure Entity is moved to its proper chunk
|
|
}
|
|
|
|
public void setDirection(EnumDirection enumdirection) {}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java
|
|
index 3ce843199..ad7c95924 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityShulker.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
|
|
@@ -390,6 +390,7 @@ public class EntityShulker extends EntityGolem implements IMonster {
|
|
this.locX = (double) blockposition.getX() + 0.5D;
|
|
this.locY = (double) blockposition.getY();
|
|
this.locZ = (double) blockposition.getZ() + 0.5D;
|
|
+ if (valid) world.entityJoinedWorld(this, false); // Paper - ensure Entity is moved to its proper chunk
|
|
this.lastX = this.locX;
|
|
this.lastY = this.locY;
|
|
this.lastZ = this.locZ;
|
|
--
|
|
2.18.0
|
|
|