Dont block Player#remove if the handle is a custom player

Upstream throws UOE if you try to call remove on a Player.
We just add a check to ensure that the CraftPlayer's handle
is a ServerPlayer
This commit is contained in:
Zach Brown 2019-02-04 23:33:24 -05:00
parent 2c43d196e4
commit 4c350ecbb5

View File

@ -229,8 +229,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void remove() {
if (this.getHandle().getClass().equals(ServerPlayer.class)) { // special case for NMS plugins inheriting
// Will lead to an inconsistent player state if we remove the player as any other entity.
throw new UnsupportedOperationException(String.format("Cannot remove player %s, use Player#kickPlayer(String) instead.", this.getName()));
} else {
super.remove();
}
}
@Override