From 8df7046122793b61664284e21421368587543d4e Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Tue, 21 Dec 2021 16:40:24 -0800
Subject: [PATCH] Forward CraftEntity in teleport command (#7025)

---
 ...ward-CraftEntity-in-teleport-command.patch | 39 +++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 patches/server/Forward-CraftEntity-in-teleport-command.patch

diff --git a/patches/server/Forward-CraftEntity-in-teleport-command.patch b/patches/server/Forward-CraftEntity-in-teleport-command.patch
new file mode 100644
index 0000000000..196cbca64a
--- /dev/null
+++ b/patches/server/Forward-CraftEntity-in-teleport-command.patch
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <jake.m.potrebic@gmail.com>
+Date: Sat, 4 Dec 2021 17:04:47 -0800
+Subject: [PATCH] Forward CraftEntity in teleport command
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/world/entity/Entity.java
++++ b/src/main/java/net/minecraft/world/entity/Entity.java
+@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
+     }
+ 
+     public void restoreFrom(Entity original) {
++        // Paper start
++        CraftEntity bukkitEntity = original.bukkitEntity;
++        if (bukkitEntity != null) {
++            bukkitEntity.setHandle(this);
++            this.bukkitEntity = bukkitEntity;
++        }
++        // Paper end
+         CompoundTag nbttagcompound = original.saveWithoutId(new CompoundTag());
+ 
+         nbttagcompound.remove("Dimension");
+@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
+                     if (worldserver.getTypeKey() == LevelStem.END) { // CraftBukkit
+                         ServerLevel.makeObsidianPlatform(worldserver, this); // CraftBukkit
+                     }
+-                    // CraftBukkit start - Forward the CraftEntity to the new entity
+-                    this.getBukkitEntity().setHandle(entity);
+-                    entity.bukkitEntity = this.getBukkitEntity();
+-                    // CraftBukkit end
++                    // // CraftBukkit start - Forward the CraftEntity to the new entity // Paper - moved to Entity#restoreFrom
++                    // this.getBukkitEntity().setHandle(entity);
++                    // entity.bukkitEntity = this.getBukkitEntity();
++                    // // CraftBukkit end
+                 }
+ 
+                 this.removeAfterChangingDimensions();