From df424d7a65e41228d6c159fb2e7ed00c5d36a6df Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Tue, 5 Feb 2019 07:44:36 -0500 Subject: [PATCH] Only enforce CraftPlayer#remove exception on instances of EntityPlayer Should be more friendly to plugins that dabble in inheriting NMS entities. --- ...Block-Entity-remove-from-being-called-on-Players.patch | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Spigot-Server-Patches/Block-Entity-remove-from-being-called-on-Players.patch b/Spigot-Server-Patches/Block-Entity-remove-from-being-called-on-Players.patch index f040afaf61..7ce5ae1b57 100644 --- a/Spigot-Server-Patches/Block-Entity-remove-from-being-called-on-Players.patch +++ b/Spigot-Server-Patches/Block-Entity-remove-from-being-called-on-Players.patch @@ -12,7 +12,7 @@ Player we will look at limiting the scope of this change. It appears to be unintentional in the few cases we've seen so far. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 36a38713..7b7dc7f2 100644 +index 36a38713..fbe34290 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -22,7 +22,11 @@ index 36a38713..7b7dc7f2 100644 + + @Override + public void remove() { -+ throw new UnsupportedOperationException("Calling Entity#remove on players produces undefined (bad) behavior"); ++ if (this.getHandle().getClass().equals(EntityPlayer.class)) { // special case for NMS plugins inheriting ++ throw new UnsupportedOperationException("Calling Entity#remove on players produces undefined (bad) behavior"); ++ } else { ++ super.remove(); ++ } + } //Paper end