From af43284640ce1eb9784841b8dda80bc51af2e4aa Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Thu, 2 Jul 2026 14:40:11 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20feat(events):=20add=20player=20?= =?UTF-8?q?join,=20quit,=20and=20death=20message=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implement PlayerJoinMessageEvent to handle player join messages - implement PlayerQuitMessageEvent to handle player quit messages - implement PlayerDeathMessageEvent to handle player death messages - allow modification of messages and cancellation of events --- .../connection/PlayerJoinMessageEvent.kt | 24 +++++++++++++++++ .../connection/PlayerQuitMessageEvent.kt | 24 +++++++++++++++++ .../common/death/PlayerDeathMessageEvent.kt | 27 +++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent.kt create mode 100644 surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent.kt create mode 100644 surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent.kt diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent.kt new file mode 100644 index 00000000..11fb43ef --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent.kt @@ -0,0 +1,24 @@ +package dev.slne.surf.api.paper.event.common.connection + +import dev.slne.surf.api.core.event.SurfCancellableEvent +import dev.slne.surf.api.core.event.SurfSyncEvent +import net.kyori.adventure.text.Component +import org.bukkit.entity.Player + +/** + * Called when a join message for a player has been created and is about to be sent. + * + * The [message] can be modified to change the final join message that will be sent to + * eligible receivers. Cancelling this event prevents the join message from being sent. + * + * This event is fired synchronously. + * + * @property player the player that joined the server + * @property message the join message that will be sent + */ +data class PlayerJoinMessageEvent( + val player: Player, + var message: Component, +) : SurfSyncEvent(), SurfCancellableEvent { + override var isCancelled = false +} \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent.kt new file mode 100644 index 00000000..748ec91d --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent.kt @@ -0,0 +1,24 @@ +package dev.slne.surf.api.paper.event.common.connection + +import dev.slne.surf.api.core.event.SurfCancellableEvent +import dev.slne.surf.api.core.event.SurfSyncEvent +import net.kyori.adventure.text.Component +import org.bukkit.entity.Player + +/** + * Called when a quit message for a player has been created and is about to be sent. + * + * The [message] can be modified to change the final quit message that will be sent to + * eligible receivers. Cancelling this event prevents the quit message from being sent. + * + * This event is fired synchronously. + * + * @property player the player that left the server + * @property message the quit message that will be sent + */ +data class PlayerQuitMessageEvent( + val player: Player, + var message: Component, +) : SurfSyncEvent(), SurfCancellableEvent { + override var isCancelled = false +} \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent.kt new file mode 100644 index 00000000..6d2f480b --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent.kt @@ -0,0 +1,27 @@ +package dev.slne.surf.api.paper.event.common.death + +import dev.slne.surf.api.core.event.SurfCancellableEvent +import dev.slne.surf.api.core.event.SurfSyncEvent +import net.kyori.adventure.text.Component +import org.bukkit.entity.Player +import org.bukkit.event.entity.EntityDamageEvent + +/** + * Called when a death message for a player has been created and is about to be sent. + * + * The [message] can be modified to change the final death message that will be sent to + * eligible receivers. Cancelling this event prevents the death message from being sent. + * + * This event is fired synchronously. + * + * @property player the player that died + * @property message the death message that will be sent + * @property lastDamageCause the last damage cause that resulted in the player's death + */ +data class PlayerDeathMessageEvent( + val player: Player, + var message: Component, + val lastDamageCause: EntityDamageEvent.DamageCause, +) : SurfSyncEvent(), SurfCancellableEvent { + override var isCancelled = false +} \ No newline at end of file From ce63d144414b078a79a2461376c1f8c1f922b1a7 Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Thu, 2 Jul 2026 14:41:16 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A7=20chore:=20update=20version=20?= =?UTF-8?q?to=203.33.0=20in=20gradle.properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f9e6e5a6..f351da1c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.2 group=dev.slne.surf.api -version=3.32.0 +version=3.33.0 relocationPrefix=dev.slne.surf.api.libs snapshot=false From 7fdc46a466faf7bbacbd3e7844a5cf50002e4bdb Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Thu, 2 Jul 2026 14:42:05 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9C=A8=20feat(events):=20add=20player=20?= =?UTF-8?q?join,=20quit,=20and=20death=20message=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - introduce PlayerJoinMessageEvent for player join notifications - introduce PlayerQuitMessageEvent for player quit notifications - introduce PlayerDeathMessageEvent for player death notifications --- .../surf-api-paper/api/surf-api-paper.api | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/surf-api-paper/surf-api-paper/api/surf-api-paper.api b/surf-api-paper/surf-api-paper/api/surf-api-paper.api index 55aa047b..c748205a 100644 --- a/surf-api-paper/surf-api-paper/api/surf-api-paper.api +++ b/surf-api-paper/surf-api-paper/api/surf-api-paper.api @@ -774,6 +774,59 @@ public final class dev/slne/surf/api/paper/event/common/PlayerAfkStateChangeEven public fun toString ()Ljava/lang/String; } +public final class dev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent : dev/slne/surf/api/core/event/SurfSyncEvent, dev/slne/surf/api/core/event/SurfCancellableEvent { + public fun (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;)V + public fun cancel ()V + public final fun component1 ()Lorg/bukkit/entity/Player; + public final fun component2 ()Lnet/kyori/adventure/text/Component; + public final fun copy (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;)Ldev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent; + public static synthetic fun copy$default (Ldev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent;Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;ILjava/lang/Object;)Ldev/slne/surf/api/paper/event/common/connection/PlayerJoinMessageEvent; + public fun equals (Ljava/lang/Object;)Z + public final fun getMessage ()Lnet/kyori/adventure/text/Component; + public final fun getPlayer ()Lorg/bukkit/entity/Player; + public fun hashCode ()I + public fun isCancelled ()Z + public fun setCancelled (Z)V + public final fun setMessage (Lnet/kyori/adventure/text/Component;)V + public fun toString ()Ljava/lang/String; +} + +public final class dev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent : dev/slne/surf/api/core/event/SurfSyncEvent, dev/slne/surf/api/core/event/SurfCancellableEvent { + public fun (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;)V + public fun cancel ()V + public final fun component1 ()Lorg/bukkit/entity/Player; + public final fun component2 ()Lnet/kyori/adventure/text/Component; + public final fun copy (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;)Ldev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent; + public static synthetic fun copy$default (Ldev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent;Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;ILjava/lang/Object;)Ldev/slne/surf/api/paper/event/common/connection/PlayerQuitMessageEvent; + public fun equals (Ljava/lang/Object;)Z + public final fun getMessage ()Lnet/kyori/adventure/text/Component; + public final fun getPlayer ()Lorg/bukkit/entity/Player; + public fun hashCode ()I + public fun isCancelled ()Z + public fun setCancelled (Z)V + public final fun setMessage (Lnet/kyori/adventure/text/Component;)V + public fun toString ()Ljava/lang/String; +} + +public final class dev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent : dev/slne/surf/api/core/event/SurfSyncEvent, dev/slne/surf/api/core/event/SurfCancellableEvent { + public fun (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;Lorg/bukkit/event/entity/EntityDamageEvent$DamageCause;)V + public fun cancel ()V + public final fun component1 ()Lorg/bukkit/entity/Player; + public final fun component2 ()Lnet/kyori/adventure/text/Component; + public final fun component3 ()Lorg/bukkit/event/entity/EntityDamageEvent$DamageCause; + public final fun copy (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;Lorg/bukkit/event/entity/EntityDamageEvent$DamageCause;)Ldev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent; + public static synthetic fun copy$default (Ldev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent;Lorg/bukkit/entity/Player;Lnet/kyori/adventure/text/Component;Lorg/bukkit/event/entity/EntityDamageEvent$DamageCause;ILjava/lang/Object;)Ldev/slne/surf/api/paper/event/common/death/PlayerDeathMessageEvent; + public fun equals (Ljava/lang/Object;)Z + public final fun getLastDamageCause ()Lorg/bukkit/event/entity/EntityDamageEvent$DamageCause; + public final fun getMessage ()Lnet/kyori/adventure/text/Component; + public final fun getPlayer ()Lorg/bukkit/entity/Player; + public fun hashCode ()I + public fun isCancelled ()Z + public fun setCancelled (Z)V + public final fun setMessage (Lnet/kyori/adventure/text/Component;)V + public fun toString ()Ljava/lang/String; +} + public final class dev/slne/surf/api/paper/extensions/Org_bukkit_ServerExtensionsKt { public static final fun getServer ()Lorg/bukkit/Server; }