geforkt von Mirrors/Paper
Upstream blocked Player#remove so our patch needed to be refactored
Dieser Commit ist enthalten in:
Ursprung
ba9e6cf5d3
Commit
b7a964f387
@ -1,33 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
|
|
||||||
Date: Mon, 4 Feb 2019 23:33:24 -0500
|
|
||||||
Subject: [PATCH] Block Entity#remove from being called on Players
|
|
||||||
|
|
||||||
This doesn't result in the same behavior as other entities and causes
|
|
||||||
several problems. Anyone ever complain about the "Cannot send chat
|
|
||||||
message" thing? That's one of the issues this causes, among others.
|
|
||||||
|
|
||||||
If a plugin developer can come up with a valid reason to call this on a
|
|
||||||
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 {
|
|
||||||
public void resetCooldown() {
|
|
||||||
getHandle().resetAttackStrengthTicker();
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void remove() {
|
|
||||||
+ if (this.getHandle().getClass().equals(ServerPlayer.class)) { // special case for NMS plugins inheriting
|
|
||||||
+ throw new UnsupportedOperationException("Calling Entity#remove on players produces undefined (bad) behavior");
|
|
||||||
+ } else {
|
|
||||||
+ super.remove();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
// Paper end
|
|
||||||
// Spigot start
|
|
||||||
private final Player.Spigot spigot = new Player.Spigot()
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
|
||||||
|
Date: Mon, 4 Feb 2019 23:33:24 -0500
|
||||||
|
Subject: [PATCH] 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
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 {
|
||||||
|
|
||||||
|
@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
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren