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 c3db4783a05020cf91e2fd314dddf22d1ccfc02b..ba45de407168f34511af34bcd1a0e209ddfe2374 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -252,6 +252,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 efbf4b657c99ce3a5096d041d275af9ccaea7911..5c968a0867223925b7eb5d6e04dbc33c41b7be6b 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,77 @@ 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, + + 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 }