diff --git a/gradle.properties b/gradle.properties index f96891f3..3f0c58f6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.1.2 group=dev.slne.surf.api -version=3.13.0 +version=3.13.1 relocationPrefix=dev.slne.surf.api.libs snapshot=false diff --git a/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/SurfSyncEventHandlerTest.kt b/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/SurfSyncEventHandlerTest.kt index 8a36cea1..1e565dff 100644 --- a/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/SurfSyncEventHandlerTest.kt +++ b/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/SurfSyncEventHandlerTest.kt @@ -5,7 +5,7 @@ import dev.jorel.commandapi.kotlindsl.anyExecutor import dev.jorel.commandapi.kotlindsl.playerExecutor import dev.jorel.commandapi.kotlindsl.subcommand import dev.slne.surf.api.core.messages.adventure.sendText -import dev.slne.surf.api.paper.event.common.PlayerAfkStateChangeEvent +import dev.slne.surf.api.paper.event.playtime.AfkStateChangeEvent import dev.slne.surf.surfapi.bukkit.test.command.subcommands.eventhandler.listener.PlayerAfkStateChangeEventListener class SurfSyncEventHandlerTest(name: String) : CommandAPICommand(name) { @@ -34,7 +34,7 @@ class SurfSyncEventHandlerTest(name: String) : CommandAPICommand(name) { subcommand("dispatch") { playerExecutor { sender, _ -> val playerUuid = sender.uniqueId - val event = PlayerAfkStateChangeEvent(playerUuid, fromState = false, toState = true) + val event = AfkStateChangeEvent(playerUuid, fromState = false, toState = true) event.call() sender.sendText { appendInfoPrefix() diff --git a/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/listener/PlayerAfkStateChangeEventListener.kt b/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/listener/PlayerAfkStateChangeEventListener.kt index b52ce1e7..b8e277ec 100644 --- a/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/listener/PlayerAfkStateChangeEventListener.kt +++ b/surf-api-paper/surf-api-paper-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/eventhandler/listener/PlayerAfkStateChangeEventListener.kt @@ -2,10 +2,10 @@ package dev.slne.surf.surfapi.bukkit.test.command.subcommands.eventhandler.liste import dev.slne.surf.api.core.event.SurfEventBus import dev.slne.surf.api.core.event.SurfEventHandler -import dev.slne.surf.api.paper.event.common.PlayerAfkStateChangeEvent +import dev.slne.surf.api.paper.event.playtime.AfkStateChangeEvent object PlayerAfkStateChangeEventListener { - private var lastEvent: PlayerAfkStateChangeEvent? = null + private var lastEvent: AfkStateChangeEvent? = null fun register() { SurfEventBus.registerListeners(this) @@ -15,14 +15,14 @@ object PlayerAfkStateChangeEventListener { SurfEventBus.unregisterListeners(this) } - fun getLastEvent(): PlayerAfkStateChangeEvent? = lastEvent + fun getLastEvent(): AfkStateChangeEvent? = lastEvent fun clearLastEvent() { lastEvent = null } @SurfEventHandler - private fun onPlayerAfkStateChange(event: PlayerAfkStateChangeEvent) { + private fun onPlayerAfkStateChange(event: AfkStateChangeEvent) { lastEvent = event } } diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaFailEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaFailEvent.kt new file mode 100644 index 00000000..24648eea --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaFailEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.captcha + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player fails a CAPTCHA verification. + * + * This synchronous event is triggered when a player fails to complete or verify a CAPTCHA challenge. + * + * @property player The player who failed the CAPTCHA + * @property size The size/difficulty rating of the CAPTCHA + * @property timePerPage The time allowed per CAPTCHA page in milliseconds + */ +data class CaptchaFailEvent( + val player: Player, + val size: Int, + val timePerPage: Long +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaSuccessEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaSuccessEvent.kt new file mode 100644 index 00000000..2d669ce4 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaSuccessEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.captcha + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player successfully completes a CAPTCHA verification. + * + * This synchronous event is triggered when a player successfully completes and verifies a CAPTCHA challenge. + * + * @property player The player who passed the CAPTCHA + * @property size The size/difficulty rating of the CAPTCHA + * @property timePerPage The time allowed per CAPTCHA page in milliseconds + */ +data class CaptchaSuccessEvent( + val player: Player, + val size: Int, + val timePerPage: Long +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatAiModerateEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatAiModerateEvent.kt new file mode 100644 index 00000000..e6e7abb1 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatAiModerateEvent.kt @@ -0,0 +1,17 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a chat message is moderated by AI. + * + * This synchronous event is triggered when an AI moderation system processes and filters a player's chat message. + * + * @property player The player who wrote the chat message + * @property message The chat message that was moderated + */ +data class ChatAiModerateEvent( + val player: Player, + val message: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatDirectMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatDirectMessageEvent.kt new file mode 100644 index 00000000..2d528985 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatDirectMessageEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import java.util.* + +/** + * Fired when a player sends a direct message to another player. + * + * This synchronous event is triggered when a player sends a private message to another player. + * + * @property player The player who sent the direct message + * @property targetUuid The UUID of the player receiving the direct message + * @property message The direct message content + */ +data class ChatDirectMessageEvent( + val player: Player, + val targetUuid: UUID, + val message: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatIgnoreEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatIgnoreEvent.kt new file mode 100644 index 00000000..c5006f53 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatIgnoreEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import java.util.* + +/** + * Fired when a player ignores another player. + * + * This synchronous event is triggered when a player adds another player to their ignore list, + * preventing them from receiving messages from that player. + * + * @property player The player who is ignoring someone + * @property ignoredPlayerUuid The UUID of the player being ignored + */ +data class ChatIgnoreEvent( + val player: Player, + val ignoredPlayerUuid: UUID +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatUnIgnoreEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatUnIgnoreEvent.kt new file mode 100644 index 00000000..9bb0d34a --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatUnIgnoreEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import java.util.* + +/** + * Fired when a player stops ignoring another player. + * + * This synchronous event is triggered when a player removes another player from their ignore list, + * allowing them to receive messages from that player again. + * + * @property player The player who is removing someone from their ignore list + * @property ignoredPlayerUuid The UUID of the player being un-ignored + */ +data class ChatUnIgnoreEvent( + val player: Player, + val ignoredPlayerUuid: UUID +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/DisabledChatBlockMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/DisabledChatBlockMessageEvent.kt new file mode 100644 index 00000000..f313ace3 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/DisabledChatBlockMessageEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player's chat message is blocked due to chat being disabled. + * + * This synchronous event is triggered when a player attempts to send a chat message, + * but the message is blocked because chat is currently disabled on the server. + * + * @property player The player whose message was blocked + * @property message The message that was blocked + */ +data class DisabledChatBlockMessageEvent( + val player: Player, + val message: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/SlowChatBlockMessageEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/SlowChatBlockMessageEvent.kt new file mode 100644 index 00000000..8f16b393 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/SlowChatBlockMessageEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.chat + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player's chat message is blocked due to slow chat rate limiting. + * + * This synchronous event is triggered when a player attempts to send a chat message, + * but the message is blocked because the player is sending messages too quickly (slow chat cooldown). + * + * @property player The player whose message was blocked + * @property message The message that was blocked + */ +data class SlowChatBlockMessageEvent( + val player: Player, + val message: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanCreatedEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanCreatedEvent.kt new file mode 100644 index 00000000..88ea482b --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanCreatedEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a clan is created. + * + * This synchronous event is triggered when a player successfully creates a new clan. + * + * @property player The player who created the clan + * @property clanName The name of the newly created clan + * @property clanTag The tag of the newly created clan + */ +data class ClanCreatedEvent( + val player: Player, + val clanName: String, + val clanTag: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDeleteEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDeleteEvent.kt new file mode 100644 index 00000000..c620f707 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDeleteEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a clan is deleted. + * + * This synchronous event is triggered when a clan is dissolved or deleted from the server. + * + * @property player The player who deleted the clan + * @property clanName The name of the deleted clan + * @property clanTag The tag of the deleted clan + */ +data class ClanDeleteEvent( + val player: Player, + val clanName: String, + val clanTag: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDemotedEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDemotedEvent.kt new file mode 100644 index 00000000..ab5480ad --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDemotedEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.OfflinePlayer + +/** + * Fired when a player is demoted within their clan. + * + * This synchronous event is triggered when a player receives a demotion to a lower rank + * or role within their clan. + * + * @property player The player who was demoted + * @property clanName The name of the clan + * @property newRole The new role the player was demoted to + */ +data class ClanDemotedEvent( + val player: OfflinePlayer, + val clanName: String, + val newRole: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanInviteCountChangeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanInviteCountChangeEvent.kt new file mode 100644 index 00000000..acb442b4 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanInviteCountChangeEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.OfflinePlayer + +/** + * Fired when the invite count of a clan changes. + * + * This synchronous event is triggered when the number of pending invitations in a clan changes, + * typically when a player sends or receives a clan invitation. + * + * @property player The player associated with the invite count change + * @property clanName The name of the clan + * @property newInviteCount The new total invite count of the clan + */ +data class ClanInviteCountChangeEvent( + val player: OfflinePlayer, + val clanName: String, + val newInviteCount: Int +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanMemberCountChangeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanMemberCountChangeEvent.kt new file mode 100644 index 00000000..a7733eb4 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanMemberCountChangeEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.OfflinePlayer + +/** + * Fired when the member count of a clan changes. + * + * This synchronous event is triggered when the number of members in a clan changes, + * typically when a player joins or leaves the clan. + * + * @property player The player associated with the member count change + * @property clanName The name of the clan + * @property newMemberCount The new total member count of the clan + */ +data class ClanMemberCountChangeEvent( + val player: OfflinePlayer, + val clanName: String, + val newMemberCount: Int +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanPromotedEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanPromotedEvent.kt new file mode 100644 index 00000000..dde4063c --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanPromotedEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.clan + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.OfflinePlayer + +/** + * Fired when a player is promoted within their clan. + * + * This synchronous event is triggered when a player receives a promotion to a higher rank + * or role within their clan. + * + * @property player The player who was promoted + * @property clanName The name of the clan + * @property newRole The new role the player was promoted to + */ +data class ClanPromotedEvent( + val player: OfflinePlayer, + val clanName: String, + val newRole: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/PlayerAfkStateChangeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/PlayerAfkStateChangeEvent.kt deleted file mode 100644 index bfc49f4c..00000000 --- a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/common/PlayerAfkStateChangeEvent.kt +++ /dev/null @@ -1,22 +0,0 @@ -package dev.slne.surf.api.paper.event.common - -import dev.slne.surf.api.core.event.SurfSyncEvent -import java.util.* - -/** - * Represents an event triggered when a player's AFK state changes. - * - * This event provides details about the player whose AFK state is changing, - * including their unique identifier and the previous and new AFK states. - * It is dispatched synchronously via the SurfEventBus to registered handlers, - * allowing listeners to react to the state change. - * - * @param playerUuid The unique identifier of the player whose AFK state is changing. - * @param fromState The player's previous AFK state (true if they were AFK, false otherwise). - * @param toState The player's new AFK state (true if now AFK, false otherwise). - */ -data class PlayerAfkStateChangeEvent( - val playerUuid: UUID, - val fromState: Boolean, - val toState: Boolean, -) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineMendingEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineMendingEvent.kt new file mode 100644 index 00000000..5839746d --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineMendingEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player combines items with the Mending enchantment. + * + * This synchronous event is triggered when a player combines items in an anvil or crafting + * interface, resulting in an item with the Mending enchantment applied. + * + * @property player The player who combined the items + */ +data class CombineMendingEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineNemoEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineNemoEvent.kt new file mode 100644 index 00000000..dcbea0d8 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineNemoEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player combines items with the Nemo enchantment. + * + * This synchronous event is triggered when a player combines items in an anvil or crafting + * interface, resulting in an item with the Nemo enchantment applied. + * + * @property player The player who combined the items + */ +data class CombineNemoEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineRocketSaverEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineRocketSaverEvent.kt new file mode 100644 index 00000000..587e8fd0 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineRocketSaverEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player combines items with the Rocket Saver enchantment. + * + * This synchronous event is triggered when a player combines items in an anvil or crafting + * interface, resulting in an item with the Rocket Saver enchantment applied. + * + * @property player The player who combined the items + */ +data class CombineRocketSaverEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineSoulboundEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineSoulboundEvent.kt new file mode 100644 index 00000000..e2d1dc45 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineSoulboundEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player combines items with the Soulbound enchantment. + * + * This synchronous event is triggered when a player combines items in an anvil or crafting + * interface, resulting in an item with the Soulbound enchantment applied. + * + * @property player The player who combined the items + */ +data class CombineSoulboundEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/EmptyEnchantedBookCollectEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/EmptyEnchantedBookCollectEvent.kt new file mode 100644 index 00000000..45fcc0e1 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/EmptyEnchantedBookCollectEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player collects an empty enchanted book. + * + * This synchronous event is triggered when a player picks up or collects an enchanted book + * that is empty or has no enchantments applied to it. + * + * @property player The player who collected the empty enchanted book + */ +data class EmptyEnchantedBookCollectEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/ReplenishCropEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/ReplenishCropEvent.kt new file mode 100644 index 00000000..01e1b53d --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/ReplenishCropEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player replenishes a crop using the Replenish enchantment. + * + * This synchronous event is triggered when a crop is automatically regrown or replanted + * due to the Replenish enchantment on a player's tool. + * + * @property player The player who triggered the crop replenishment + */ +data class ReplenishCropEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/TelekinesisPickupEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/TelekinesisPickupEvent.kt new file mode 100644 index 00000000..52a35dcb --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/TelekinesisPickupEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.enchantment + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player picks up an item using the Telekinesis enchantment. + * + * This synchronous event is triggered when an item is automatically collected by a player + * due to the Telekinesis enchantment on their tool or weapon. + * + * @property player The player who picked up the item with Telekinesis + */ +data class TelekinesisPickupEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/CommandFailEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/CommandFailEvent.kt new file mode 100644 index 00000000..b1f12e0d --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/CommandFailEvent.kt @@ -0,0 +1,17 @@ +package dev.slne.surf.api.paper.event.essentials + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a command execution fails for a player. + * + * This synchronous event is triggered when a command issued by a player fails to execute. + * + * @property player The player who executed the failed command + * @property command The command that failed to execute + */ +data class CommandFailEvent( + val player: Player, + val command: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemEvent.kt new file mode 100644 index 00000000..cf464cea --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemEvent.kt @@ -0,0 +1,20 @@ +package dev.slne.surf.api.paper.event.essentials + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player signs an item. + * + * This synchronous event is triggered when a player signs an item that they have in their inventory. + * + * @property player The player who is signing the item + * @property item The item being signed + * @property description The description being written on the item + */ +data class SignItemEvent( + val player: Player, + val item: ItemStack, + val description: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemReceiveEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemReceiveEvent.kt new file mode 100644 index 00000000..2bdd5edc --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemReceiveEvent.kt @@ -0,0 +1,23 @@ +package dev.slne.surf.api.paper.event.essentials + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player receives a signed item. + * + * This synchronous event is triggered when a player receives an item that has been signed + * by another player with a description and the signer's name. + * + * @property player The player who received the signed item + * @property item The signed item + * @property description The description written on the item + * @property signedByName The name of the player who signed the item + */ +data class SignItemReceiveEvent( + val player: Player, + val item: ItemStack, + val description: String, + val signedByName: String +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SpecialItemReceiveEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SpecialItemReceiveEvent.kt new file mode 100644 index 00000000..a3c45c50 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SpecialItemReceiveEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.essentials + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player receives a special item. + * + * This synchronous event is triggered whenever a special item is given to a player. + * + * @property player The player who received the special item + * @property item The special item that was received + */ +data class SpecialItemReceiveEvent( + val player: Player, + val item: ItemStack +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ArmorStandBreakWithAxeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ArmorStandBreakWithAxeEvent.kt new file mode 100644 index 00000000..85179e19 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ArmorStandBreakWithAxeEvent.kt @@ -0,0 +1,15 @@ +package dev.slne.surf.api.paper.event.freebuild + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player breaks an armor stand with an axe. + * + * This synchronous event is triggered when a player uses an axe to break or destroy an armor stand. + * + * @property player The player who broke the armor stand + */ +data class ArmorStandBreakWithAxeEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ProtectItemEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ProtectItemEvent.kt new file mode 100644 index 00000000..486454b1 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ProtectItemEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.freebuild + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player protects an item. + * + * This synchronous event is triggered when a player protects an item, preventing it from being + * dropped, traded, or destroyed. + * + * @property player The player who is protecting the item + * @property itemStack The item being protected + */ +data class ProtectItemEvent( + val player: Player, + val itemStack: ItemStack +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ZombieVillagerCureFlyEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ZombieVillagerCureFlyEvent.kt new file mode 100644 index 00000000..8ba87d2f --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ZombieVillagerCureFlyEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.freebuild + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player cures a zombie villager and is able to fly as a reward. + * + * This synchronous event is triggered when a player successfully cures a zombie villager, + * granting them flight capabilities as a reward. + * + * @property player The player who cured the zombie villager + */ +data class ZombieVillagerCureFlyEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInBadFishingEventEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInBadFishingEventEvent.kt new file mode 100644 index 00000000..b202ac6f --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInBadFishingEventEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.freebuild.event + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player participates in a bad fishing event. + * + * This synchronous event is triggered when a player takes part in a fishing event + * that results in failure or a negative outcome. + * + * @property player The player who participated in the bad fishing event + */ +data class TakePartInBadFishingEventEvent( + val player: Player +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInFishingEventEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInFishingEventEvent.kt new file mode 100644 index 00000000..e48f5549 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInFishingEventEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.freebuild.event + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player participates in a fishing event. + * + * This synchronous event is triggered when a player takes part in a fishing event, + * typically a limited-time event with special rewards or challenges. + * + * @property player The player who participated in the fishing event + */ +data class TakePartInFishingEventEvent( + val player: Player +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInMiningEventEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInMiningEventEvent.kt new file mode 100644 index 00000000..eb26196b --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInMiningEventEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.freebuild.event + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player participates in a mining event. + * + * This synchronous event is triggered when a player takes part in a mining event, + * typically a limited-time event with special rewards or challenges. + * + * @property player The player who participated in the mining event + */ +data class TakePartInMiningEventEvent( + val player: Player +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/ArchaeologySpecialDropEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/ArchaeologySpecialDropEvent.kt new file mode 100644 index 00000000..6df4acd7 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/ArchaeologySpecialDropEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.freebuild.specialdrops + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player receives a special drop from archaeology. + * + * This synchronous event is triggered when a player obtains a special/rare item drop + * from archaeology activities. + * + * @property player The player who received the special archaeology drop + * @property itemStack The special item that was dropped + */ +data class ArchaeologySpecialDropEvent( + val player: Player, + val itemStack: ItemStack +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/FishingSpecialDropEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/FishingSpecialDropEvent.kt new file mode 100644 index 00000000..9dcb1d6e --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/FishingSpecialDropEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.freebuild.specialdrops + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack + +/** + * Fired when a player receives a special drop from fishing. + * + * This synchronous event is triggered when a player catches a special/rare item drop + * from fishing activities. + * + * @property player The player who received the special fishing drop + * @property itemStack The special item that was caught + */ +data class FishingSpecialDropEvent( + val player: Player, + val itemStack: ItemStack +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/AfkStateChangeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/AfkStateChangeEvent.kt new file mode 100644 index 00000000..63542a67 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/AfkStateChangeEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.playtime + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player's AFK (Away From Keyboard) state changes. + * + * This synchronous event is triggered when a player transitions between AFK and active states. + * + * @property player The player whose AFK state changed + * @property fromState The previous AFK state (true = AFK, false = active) + * @property toState The new AFK state (true = AFK, false = active) + */ +data class AfkStateChangeEvent( + val player: Player, + val fromState: Boolean, + val toState: Boolean, +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckPayEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckPayEvent.kt new file mode 100644 index 00000000..ac6e4e13 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckPayEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.playtime + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player receives their paycheck payment. + * + * This synchronous event is triggered when a player receives their regular paycheck/salary + * based on their playtime. + * + * @property player The player who received the paycheck + */ +data class PayCheckPayEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckRefusePaymentEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckRefusePaymentEvent.kt new file mode 100644 index 00000000..4eac916f --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckRefusePaymentEvent.kt @@ -0,0 +1,16 @@ +package dev.slne.surf.api.paper.event.playtime + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player refuses their paycheck payment. + * + * This synchronous event is triggered when a player declines or refuses to accept + * their regular paycheck/salary. + * + * @property player The player who refused the paycheck + */ +data class PayCheckRefusePaymentEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAHourEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAHourEvent.kt new file mode 100644 index 00000000..372bdaae --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAHourEvent.kt @@ -0,0 +1,21 @@ +package dev.slne.surf.api.paper.event.playtime + +import dev.slne.surf.api.core.event.SurfAsyncEvent +import org.bukkit.entity.Player + +/** + * Fired (asynchronously) when a player has played for an hour. + * + * This asynchronous event is triggered when a player reaches a one-hour playtime milestone. + * + * @property player The player who reached the one-hour milestone + * @property totalHour The total number of hours the player has played + * @property totalHourOnServer The total number of hours the player has played on this specific server + * @property server The server identifier where this milestone was reached + */ +data class PlayerPlayAHourEvent( + val player: Player, + val totalHour: Long, + val totalHourOnServer: Long, + val server: String +) : SurfAsyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAMinuteEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAMinuteEvent.kt new file mode 100644 index 00000000..b0e19c39 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAMinuteEvent.kt @@ -0,0 +1,15 @@ +package dev.slne.surf.api.paper.event.playtime + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player has played for a minute. + * + * This synchronous event is triggered when a player reaches a one-minute playtime milestone. + * + * @property player The player who reached the one-minute milestone + */ +data class PlayerPlayAMinuteEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ExtendRegionEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ExtendRegionEvent.kt new file mode 100644 index 00000000..1a578765 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ExtendRegionEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.protect + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player extends a protected region. + * + * This synchronous event is triggered when a player increases the size of an existing + * protected region. + * + * @property player The player who extended the region + * @property size The new size of the extended region + */ +data class ExtendRegionEvent( + val player: Player, + val size: Int +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ProtectRegionEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ProtectRegionEvent.kt new file mode 100644 index 00000000..56ce4ea0 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ProtectRegionEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.protect + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player creates or claims a protected region. + * + * This synchronous event is triggered when a player creates a new protected region + * to protect their buildings and property. + * + * @property player The player who created the protected region + * @property size The size of the newly protected region + */ +data class ProtectRegionEvent( + val player: Player, + val size: Int +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/SellRegionEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/SellRegionEvent.kt new file mode 100644 index 00000000..0fca5733 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/SellRegionEvent.kt @@ -0,0 +1,21 @@ +package dev.slne.surf.api.paper.event.protect + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import java.math.BigDecimal + +/** + * Fired when a player sells a protected region. + * + * This synchronous event is triggered when a player sells off a protected region, + * receiving monetary compensation for it. + * + * @property player The player who sold the region + * @property size The size of the sold region + * @property receivedMoney The amount of money received from the sale + */ +data class SellRegionEvent( + val player: Player, + val size: Int, + val receivedMoney: BigDecimal +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/settings/SettingsBatchChangeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/settings/SettingsBatchChangeEvent.kt new file mode 100644 index 00000000..41c14b80 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/settings/SettingsBatchChangeEvent.kt @@ -0,0 +1,18 @@ +package dev.slne.surf.api.paper.event.settings + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player changes multiple settings in a batch. + * + * This synchronous event is triggered when a player makes changes to multiple settings + * at once, such as through a settings GUI or batch configuration. + * + * @property player The player who changed their settings + * @property amount The number of settings that were changed in this batch + */ +data class SettingsBatchChangeEvent( + val player: Player, + val amount: Int +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopBuyItemEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopBuyItemEvent.kt new file mode 100644 index 00000000..de70f1a7 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopBuyItemEvent.kt @@ -0,0 +1,22 @@ +package dev.slne.surf.api.paper.event.shop + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack +import java.math.BigDecimal + +/** + * Fired when a player buys an item from a shop. + * + * This synchronous event is triggered when a player purchases an item from a shop, + * spending currency in exchange for goods. + * + * @property player The player who bought the item + * @property itemStack The item that was purchased + * @property price The price paid for the item + */ +data class ShopBuyItemEvent( + val player: Player, + val itemStack: ItemStack, + val price: BigDecimal +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopChestPlaceEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopChestPlaceEvent.kt new file mode 100644 index 00000000..a9f6bee5 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopChestPlaceEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.shop + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.Location +import org.bukkit.entity.Player + +/** + * Fired when a player places a shop chest. + * + * This synchronous event is triggered when a player places a chest that functions as a shop, + * allowing it to sell items to other players. + * + * @property player The player who placed the shop chest + * @property location The location where the shop chest was placed + */ +data class ShopChestPlaceEvent( + val player: Player, + val location: Location +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopSellItemEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopSellItemEvent.kt new file mode 100644 index 00000000..91e31b85 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopSellItemEvent.kt @@ -0,0 +1,22 @@ +package dev.slne.surf.api.paper.event.shop + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.OfflinePlayer +import org.bukkit.inventory.ItemStack +import java.math.BigDecimal + +/** + * Fired when a player sells an item to a shop. + * + * This synchronous event is triggered when a player sells an item to a shop, + * receiving currency in exchange for goods. + * + * @property player The player who sold the item + * @property itemStack The item that was sold + * @property revenue The amount of money received from the sale + */ +data class ShopSellItemEvent( + val player: OfflinePlayer, + val itemStack: ItemStack, + val revenue: BigDecimal +) : SurfSyncEvent() \ No newline at end of file diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawnsystem/RespawnAtNearestSpawnEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawnsystem/RespawnAtNearestSpawnEvent.kt new file mode 100644 index 00000000..8315483e --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawnsystem/RespawnAtNearestSpawnEvent.kt @@ -0,0 +1,19 @@ +package dev.slne.surf.api.paper.event.spawnsystem + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.Location +import org.bukkit.entity.Player + +/** + * Fired when a player respawns at the nearest spawn point. + * + * This synchronous event is triggered when a player respawns at the nearest available + * spawn location after dying. + * + * @property player The player who respawned + * @property respawnLocation The location where the player respawned + */ +data class RespawnAtNearestSpawnEvent( + val player: Player, + val respawnLocation: Location +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawntrader/SpawnTraderTradeEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawntrader/SpawnTraderTradeEvent.kt new file mode 100644 index 00000000..a95526fd --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawntrader/SpawnTraderTradeEvent.kt @@ -0,0 +1,24 @@ +package dev.slne.surf.api.paper.event.spawntrader + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack +import java.math.BigDecimal + +/** + * Fired when a player completes a trade with a spawn trader. + * + * This synchronous event is triggered when a player successfully trades with a spawn trader NPC, + * exchanging items or currency for goods. + * + * @property player The player who completed the trade + * @property tradeName The name or identifier of the trade/NPC + * @property itemStack The item involved in the trade + * @property price The price or value of the trade + */ +data class SpawnTraderTradeEvent( + val player: Player, + val tradeName: String, + val itemStack: ItemStack, + val price: BigDecimal +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/stats/StatsOptOutSettingEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/stats/StatsOptOutSettingEvent.kt new file mode 100644 index 00000000..796fa009 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/stats/StatsOptOutSettingEvent.kt @@ -0,0 +1,15 @@ +package dev.slne.surf.api.paper.event.stats + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player + +/** + * Fired when a player changes their statistics opt-out setting. + * + * This synchronous event is triggered when a player enables or disables the statistics tracking option. + * + * @property player The player who changed their stats opt-out setting + */ +data class StatsOptOutSettingEvent( + val player: Player +) : SurfSyncEvent() diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/transaction/PlayerPayEvent.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/transaction/PlayerPayEvent.kt new file mode 100644 index 00000000..cf364de4 --- /dev/null +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/transaction/PlayerPayEvent.kt @@ -0,0 +1,21 @@ +package dev.slne.surf.api.paper.event.transaction + +import dev.slne.surf.api.core.event.SurfSyncEvent +import org.bukkit.entity.Player +import java.math.BigDecimal +import java.util.* + +/** + * Fired when a player pays another player. + * + * This synchronous event is triggered when a payment transaction occurs between two players. + * + * @property player The player making the payment + * @property targetUuid The UUID of the player receiving the payment + * @property amount The amount of currency being transferred + */ +data class PlayerPayEvent( + val player: Player, + val targetUuid: UUID, + val amount: BigDecimal +) : SurfSyncEvent()