aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0280-Add-PlayerKickEvent-causes.patch
blob: 5520442f075386172b906d1f4f61c5b35623172b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
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 a03ac5f230521cde2278222de8157f78a152f6a6..ff5a0d2b6a070c85545b00cf41c51b8d9cce8d0d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/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/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
 }