From 93e2ecfd498e33d34df65a9c54de31af131ae472 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sat, 15 May 2021 20:30:34 -0700 Subject: [PATCH] Add PlayerKickEvent causes --- .../main/java/org/bukkit/entity/Player.java | 8 ++ .../bukkit/event/player/PlayerKickEvent.java | 88 +++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/entity/Player.java b/paper-api/src/main/java/org/bukkit/entity/Player.java index e827e8e6a3..68c470b950 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Player.java +++ b/paper-api/src/main/java/org/bukkit/entity/Player.java @@ -335,6 +335,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/paper-api/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerKickEvent.java index 997b06c19a..b8bf61bea7 100644 --- a/paper-api/src/main/java/org/bukkit/event/player/PlayerKickEvent.java +++ b/paper-api/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 }