From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic 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 8b37b895b7de99a0be6b54c2aedfc0faddb06435..826faf48f9e2f7441a0cb5434dd1b3372cf12b33 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -238,6 +238,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @param message kick message */ void kick(final @Nullable net.kyori.adventure.text.Component message); + + /** + * Kicks player with custom kick message and cause. + * + * @param message kick message + * @param cause kick cause + */ + void kick(final @Nullable Component message, @NotNull org.bukkit.event.player.PlayerKickEvent.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 2b3f57d1a1c79923a2173f52d9cf61da1f75b7fc..45235379b7b54f1ca36dff3bf02c496cef2f3254 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,25 @@ 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; + } + + 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 +144,65 @@ 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, + + SPAM, + + ILLEGAL_ACTION, + + ILLEGAL_CHARACTERS, + + SELF_INTERACTION, + + DUPLICATE_LOGIN, + + RESOURCE_PACK_REJECTION, + + /** + * Spigot's restart command + */ + RESTART_COMMAND, + /** + * Fallback cause + */ + UNKNOWN, + } + // Paper end }