Skip to content

Commit 7b31cc2

Browse files
Doc94Lulu13022002
andauthored
Make leaveMessage in PlayerKickEvent nullable (#13804)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
1 parent aa6f09b commit 7b31cc2

2 files changed

Lines changed: 23 additions & 26 deletions

File tree

paper-api/src/main/java/org/bukkit/event/player/PlayerKickEvent.java

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,26 @@
66
import org.bukkit.event.Cancellable;
77
import org.bukkit.event.HandlerList;
88
import org.jetbrains.annotations.ApiStatus;
9-
import org.jetbrains.annotations.NotNull;
9+
import org.jspecify.annotations.NullMarked;
10+
import org.jspecify.annotations.Nullable;
1011

1112
/**
1213
* Called when a player gets kicked from the server
1314
*/
15+
@NullMarked
1416
public class PlayerKickEvent extends PlayerEvent implements Cancellable {
1517

1618
private static final HandlerList HANDLER_LIST = new HandlerList();
1719

1820
private Component kickReason;
19-
private Component leaveMessage;
21+
private @Nullable Component leaveMessage;
2022
private final Cause cause;
2123

2224
private boolean cancelled;
2325

2426
@ApiStatus.Internal
2527
@Deprecated(forRemoval = true)
26-
public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final String kickReason, @NotNull final String leaveMessage) {
28+
public PlayerKickEvent(final Player playerKicked, final String kickReason, final String leaveMessage) {
2729
super(playerKicked);
2830
this.kickReason = LegacyComponentSerializer.legacySection().deserialize(kickReason);
2931
this.leaveMessage = LegacyComponentSerializer.legacySection().deserialize(leaveMessage);
@@ -32,15 +34,15 @@ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final String
3234

3335
@ApiStatus.Internal
3436
@Deprecated(forRemoval = true)
35-
public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final Component kickReason, @NotNull final Component leaveMessage) {
37+
public PlayerKickEvent(final Player playerKicked, final Component kickReason, final Component leaveMessage) {
3638
super(playerKicked);
3739
this.kickReason = kickReason;
3840
this.leaveMessage = leaveMessage;
3941
this.cause = Cause.UNKNOWN;
4042
}
4143

4244
@ApiStatus.Internal
43-
public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final Component kickReason, @NotNull final Component leaveMessage, @NotNull final Cause cause) {
45+
public PlayerKickEvent(final Player playerKicked, final Component kickReason, final Component leaveMessage, final Cause cause) {
4446
super(playerKicked);
4547
this.kickReason = kickReason;
4648
this.leaveMessage = leaveMessage;
@@ -52,7 +54,7 @@ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final Compon
5254
*
5355
* @return string kick reason
5456
*/
55-
public @NotNull Component reason() {
57+
public Component reason() {
5658
return this.kickReason;
5759
}
5860

@@ -61,7 +63,7 @@ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final Compon
6163
*
6264
* @param kickReason kick reason
6365
*/
64-
public void reason(@NotNull Component kickReason) {
66+
public void reason(Component kickReason) {
6567
this.kickReason = kickReason;
6668
}
6769

@@ -71,7 +73,6 @@ public void reason(@NotNull Component kickReason) {
7173
* @return string kick reason
7274
* @deprecated in favour of {@link #reason()}
7375
*/
74-
@NotNull
7576
@Deprecated
7677
public String getReason() {
7778
return LegacyComponentSerializer.legacySection().serialize(this.kickReason);
@@ -81,10 +82,10 @@ public String getReason() {
8182
* Sets the reason why the player is getting kicked
8283
*
8384
* @param kickReason kick reason
84-
* @deprecated in favour of {@link #reason(net.kyori.adventure.text.Component)}
85+
* @deprecated in favour of {@link #reason(Component)}
8586
*/
8687
@Deprecated
87-
public void setReason(@NotNull String kickReason) {
88+
public void setReason(String kickReason) {
8889
this.kickReason = LegacyComponentSerializer.legacySection().deserialize(kickReason);
8990
}
9091

@@ -93,16 +94,16 @@ public void setReason(@NotNull String kickReason) {
9394
*
9495
* @return string kick reason
9596
*/
96-
public @NotNull Component leaveMessage() {
97+
public @Nullable Component leaveMessage() {
9798
return this.leaveMessage;
9899
}
99100

100101
/**
101102
* Sets the leave message send to all online players
102103
*
103-
* @param leaveMessage leave message
104+
* @param leaveMessage leave message. If {@code null}, no message will be sent
104105
*/
105-
public void leaveMessage(@NotNull Component leaveMessage) {
106+
public void leaveMessage(@Nullable Component leaveMessage) {
106107
this.leaveMessage = leaveMessage;
107108
}
108109

@@ -112,28 +113,26 @@ public void leaveMessage(@NotNull Component leaveMessage) {
112113
* @return string kick reason
113114
* @deprecated in favour of {@link #leaveMessage()}
114115
*/
115-
@NotNull
116116
@Deprecated
117-
public String getLeaveMessage() {
118-
return LegacyComponentSerializer.legacySection().serialize(this.leaveMessage);
117+
public @Nullable String getLeaveMessage() {
118+
return LegacyComponentSerializer.legacySection().serializeOrNull(this.leaveMessage);
119119
}
120120

121121
/**
122122
* Sets the leave message send to all online players
123123
*
124-
* @param leaveMessage leave message
125-
* @deprecated in favour of {@link #leaveMessage(net.kyori.adventure.text.Component)}
124+
* @param leaveMessage leave message. If {@code null}, no message will be sent
125+
* @deprecated in favour of {@link #leaveMessage(Component)}
126126
*/
127127
@Deprecated
128-
public void setLeaveMessage(@NotNull String leaveMessage) {
129-
this.leaveMessage = LegacyComponentSerializer.legacySection().deserialize(leaveMessage);
128+
public void setLeaveMessage(@Nullable String leaveMessage) {
129+
this.leaveMessage = LegacyComponentSerializer.legacySection().deserializeOrNull(leaveMessage);
130130
}
131131

132132
/**
133133
* Gets the cause of this kick
134134
*/
135-
@NotNull
136-
public org.bukkit.event.player.PlayerKickEvent.Cause getCause() {
135+
public PlayerKickEvent.Cause getCause() {
137136
return this.cause;
138137
}
139138

@@ -147,13 +146,11 @@ public void setCancelled(boolean cancel) {
147146
this.cancelled = cancel;
148147
}
149148

150-
@NotNull
151149
@Override
152150
public HandlerList getHandlers() {
153151
return HANDLER_LIST;
154152
}
155153

156-
@NotNull
157154
public static HandlerList getHandlerList() {
158155
return HANDLER_LIST;
159156
}

paper-server/patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@
243243
+ if (!this.cserver.isPrimaryThread()) {
244244
+ org.bukkit.craftbukkit.util.Waitable waitable = new org.bukkit.craftbukkit.util.Waitable() {
245245
+ @Override
246-
+ protected Object evaluate() {
246+
+ protected @Nullable Object evaluate() {
247247
+ ServerCommonPacketListenerImpl.this.disconnect(details);
248248
+ return null;
249249
+ }
@@ -285,7 +285,7 @@
285285
+ }
286286
+
287287
+ reason = io.papermc.paper.adventure.PaperAdventure.asVanilla(event.reason());
288-
+ leaveMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(event.leaveMessage());
288+
+ leaveMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(event.leaveMessage());
289289
+ serverGamePacketListener.player.quitReason = org.bukkit.event.player.PlayerQuitEvent.QuitReason.KICKED; // Paper - Add API for quit reason
290290
+ // Log kick to console *after* event was processed.
291291
+ switch (cause) {

0 commit comments

Comments
 (0)