diff --git a/Spigot-Server-Patches/Ignore-Dimension-NBT-field-in-Entity-data.patch b/Spigot-Server-Patches/Ignore-Dimension-NBT-field-in-Entity-data.patch new file mode 100644 index 0000000000..05642043a0 --- /dev/null +++ b/Spigot-Server-Patches/Ignore-Dimension-NBT-field-in-Entity-data.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Thu, 27 Sep 2018 00:08:31 -0400 +Subject: [PATCH] Ignore Dimension NBT field in Entity data + +Minecraft is trying to set Dimension Objects based on a Dimension ID + +Dimension ID's for custom worlds are dynamically allocate dand not guaranteed +consistent. + +This removes checking the NBT data, as the Entity will always have its +DimensionManager set to the world it is being placed into. + +This fixes corrupt entities breaking chunk saving in custom worlds. + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index cd601f29a3..0c18405a8d 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + nbttagcompound.setShort("Fire", (short) this.fireTicks); + nbttagcompound.setShort("Air", (short) this.getAirTicks()); + nbttagcompound.setBoolean("OnGround", this.onGround); +- nbttagcompound.setInt("Dimension", this.dimension.getDimensionID()); ++ //nbttagcompound.setInt("Dimension", this.dimension.getDimensionID()); // Paper - always controlled by world + nbttagcompound.setBoolean("Invulnerable", this.invulnerable); + nbttagcompound.setInt("PortalCooldown", this.portalCooldown); + nbttagcompound.a("UUID", this.getUniqueID()); +@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + this.setAirTicks(nbttagcompound.getShort("Air")); + this.onGround = nbttagcompound.getBoolean("OnGround"); + if (nbttagcompound.hasKey("Dimension")) { +- this.dimension = DimensionManager.a(nbttagcompound.getInt("Dimension")); ++ //this.dimension = DimensionManager.a(nbttagcompound.getInt("Dimension")); // Paper - always controlled by world + } + + this.invulnerable = nbttagcompound.getBoolean("Invulnerable"); +-- \ No newline at end of file