geforkt von Mirrors/Paper
fc1e70df07
* 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
56 Zeilen
2.8 KiB
Diff
56 Zeilen
2.8 KiB
Diff
From 82f4d6d15006e4980cee1d2645bf24c35c0c23d2 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 3a4c9a02e..c8f32a49a 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -338,6 +338,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
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;
|
|
|
|
@@ -956,6 +957,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
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 ad() {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLeash.java b/src/main/java/net/minecraft/server/EntityLeash.java
|
|
index f2d3d0b4c..f20060614 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 95c6cd897..bc11e7da2 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityShulker.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
|
|
@@ -385,6 +385,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
|
|
|