aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0287-Add-PlayerKickEvent-causes.patch
diff options
context:
space:
mode:
authorShane Freeder <[email protected]>2024-05-09 14:51:33 +0100
committerShane Freeder <[email protected]>2024-05-09 14:51:33 +0100
commit3693bbdc6b65e68db10375d3eeab70f06708b729 (patch)
tree4a71a5e6e5f50b3e2937053a5d4b4196ef67665b /patches/api/0287-Add-PlayerKickEvent-causes.patch
parentf2512b12385961f8ca1f69efebe5ed0e00c0caa8 (diff)
downloadPaper-3693bbdc6b65e68db10375d3eeab70f06708b729.tar.gz
Paper-3693bbdc6b65e68db10375d3eeab70f06708b729.zip
Use internals for getting block/entity countstimings/use-internals
For a long time I've been meaning to move some of this logic internally as this would allow us to avoid hitting systems like block state snapshots which can create issues as many of the spigot implementations of this stuff are increasingly broken, leading to unexpected crashes during ticking, even if the API cannot properly interact with these such states/items, it's generally more preferable to not crash the server in the course, and just let those interactions fail more gracefully.
Diffstat (limited to 'patches/api/0287-Add-PlayerKickEvent-causes.patch')
-rw-r--r--patches/api/0287-Add-PlayerKickEvent-causes.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/patches/api/0287-Add-PlayerKickEvent-causes.patch b/patches/api/0287-Add-PlayerKickEvent-causes.patch
new file mode 100644
index 0000000000..5bded2058c
--- /dev/null
+++ b/patches/api/0287-Add-PlayerKickEvent-causes.patch
@@ -0,0 +1,144 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Sat, 15 May 2021 20:30:34 -0700
+Subject: [PATCH] Add PlayerKickEvent causes
+
+
+diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
+index 752b2bac47588c0f75a13a7e6ec2be3c2f5a149e..b177daa7a974125dc4ccf1bc6d119ad42dba3514 100644
+--- a/src/main/java/org/bukkit/entity/Player.java
++++ b/src/main/java/org/bukkit/entity/Player.java
+@@ -321,6 +321,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * @param message kick message
+ */
+ void kick(final net.kyori.adventure.text.@Nullable Component message);
++
++ /**
++ * Kicks player with custom kick message and cause.
++ *
++ * @param message kick message
++ * @param cause kick cause
++ */
++ void kick(final net.kyori.adventure.text.@Nullable Component message, org.bukkit.event.player.PlayerKickEvent.@NotNull Cause cause);
+ // Paper end
+
+ /**
+diff --git a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
+index 997b06c19a5277656521e0e298f2958c209f1da1..b8bf61bea73086c61dce6230686e627dc324ebe0 100644
+--- a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
++++ b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
+@@ -12,6 +12,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
+ private static final HandlerList handlers = new HandlerList();
+ private net.kyori.adventure.text.Component leaveMessage; // Paper
+ private net.kyori.adventure.text.Component kickReason; // Paper
++ private final Cause cause; // Paper
+ private boolean cancel;
+
+ @Deprecated // Paper
+@@ -19,14 +20,26 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
+ super(playerKicked);
+ this.kickReason = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(kickReason); // Paper
+ this.leaveMessage = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(leaveMessage); // Paper
++ this.cause = Cause.UNKNOWN; // Paper
+ this.cancel = false;
+ }
+ // Paper start
++ @Deprecated
+ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final net.kyori.adventure.text.Component kickReason, @NotNull final net.kyori.adventure.text.Component leaveMessage) {
+ super(playerKicked);
+ this.kickReason = kickReason;
+ this.leaveMessage = leaveMessage;
+ this.cancel = false;
++ this.cause = Cause.UNKNOWN;
++ }
++
++ @org.jetbrains.annotations.ApiStatus.Internal
++ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final net.kyori.adventure.text.Component kickReason, @NotNull final net.kyori.adventure.text.Component leaveMessage, @NotNull final Cause cause) {
++ super(playerKicked);
++ this.kickReason = kickReason;
++ this.leaveMessage = leaveMessage;
++ this.cancel = false;
++ this.cause = cause;
+ }
+
+ /**
+@@ -132,4 +145,79 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
++ // Paper start
++ /**
++ * Gets the cause of this kick
++ *
++ * @return
++ */
++ @NotNull
++ public org.bukkit.event.player.PlayerKickEvent.Cause getCause() {
++ return cause;
++ }
++
++ public enum Cause {
++
++ PLUGIN,
++
++ WHITELIST,
++
++ BANNED,
++
++ IP_BANNED,
++
++ KICK_COMMAND,
++
++ FLYING_PLAYER,
++
++ FLYING_VEHICLE,
++
++ TIMEOUT,
++
++ IDLING,
++
++ INVALID_VEHICLE_MOVEMENT,
++
++ INVALID_PLAYER_MOVEMENT,
++
++ INVALID_ENTITY_ATTACKED,
++
++ INVALID_PAYLOAD,
++
++ INVALID_COOKIE,
++
++ SPAM,
++
++ ILLEGAL_ACTION,
++
++ ILLEGAL_CHARACTERS,
++
++ OUT_OF_ORDER_CHAT,
++
++ UNSIGNED_CHAT,
++
++ CHAT_VALIDATION_FAILED,
++
++ EXPIRED_PROFILE_PUBLIC_KEY,
++
++ INVALID_PUBLIC_KEY_SIGNATURE,
++
++ TOO_MANY_PENDING_CHATS,
++
++ SELF_INTERACTION,
++
++ DUPLICATE_LOGIN,
++
++ RESOURCE_PACK_REJECTION,
++
++ /**
++ * Spigot's restart command
++ */
++ RESTART_COMMAND,
++ /**
++ * Fallback cause
++ */
++ UNKNOWN,
++ }
++ // Paper end
+ }