aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0306-Add-PlayerKickEvent-causes.patch
blob: 3f40de6956f9046fdf3b70ccdd816a85b540cb47 (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
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 015252e0fbb705c48b2c1e497d4ffd263739b125..40e365e6dad1dfead4d0253d0b4c011bc71b1e71 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -243,6 +243,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
 }