Skip to content

✨ feat(events): add new player-related events for gameplay interactions#355

Open
TheBjoRedCraft wants to merge 2 commits into
version/26.1from
feat/surf-events
Open

✨ feat(events): add new player-related events for gameplay interactions#355
TheBjoRedCraft wants to merge 2 commits into
version/26.1from
feat/surf-events

Conversation

@TheBjoRedCraft
Copy link
Copy Markdown
Member

  • introduce ArchaeologySpecialDropEvent for archaeology item drops
  • add ArmorStandBreakWithAxeEvent for breaking armor stands with axes
  • implement CaptchaFailEvent and CaptchaSuccessEvent for captcha interactions
  • create ChatAiModerateEvent for AI moderation of chat messages
  • add ChatDirectMessageEvent for direct messaging between players
  • implement ClanCreatedEvent and ClanDeleteEvent for clan management
  • introduce PayCheckPayEvent and PayCheckRefusePaymentEvent for payment handling
  • add various other player-related events for enhanced gameplay features

- introduce ArchaeologySpecialDropEvent for archaeology item drops
- add ArmorStandBreakWithAxeEvent for breaking armor stands with axes
- implement CaptchaFailEvent and CaptchaSuccessEvent for captcha interactions
- create ChatAiModerateEvent for AI moderation of chat messages
- add ChatDirectMessageEvent for direct messaging between players
- implement ClanCreatedEvent and ClanDeleteEvent for clan management
- introduce PayCheckPayEvent and PayCheckRefusePaymentEvent for payment handling
- add various other player-related events for enhanced gameplay features
@TheBjoRedCraft TheBjoRedCraft self-assigned this May 25, 2026
Copilot AI review requested due to automatic review settings May 25, 2026 11:57
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ API/ABI changes detected!

This PR contains changes that modified the public API. To update the reference ABI dumps:

./gradlew updateKotlinAbi
git add **/api/**
git commit -m "Update ABI reference"
git push

After updating, the CI will pass. Make sure the changes are backward compatible.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a set of new Paper-facing SurfEventBus event payload types (mostly SurfSyncEvent, plus one SurfAsyncEvent) to expose additional player/gameplay interactions as typed, cross-plugin events within the SURF-API ecosystem.

Changes:

  • Introduces many new data class ...Event types under dev.slne.surf.api.paper.event.* for gameplay, chat, clan, shop, captcha, and region interactions.
  • Adds a playtime-hour event as an async Surf event.
  • Bumps project version to 3.13.1.

Reviewed changes

Copilot reviewed 49 out of 49 changed files in this pull request and generated 55 comments.

Show a summary per file
File Description
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/transaction/PlayerPayEvent.kt New transaction event for player payments.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/stats/StatsOptoutSettingEvent.kt New stats opt-out setting event.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawntrader/SpawnTraderTradeEvent.kt New spawn-trader trade event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/spawnsystem/RespawnAtNearestSpawnEvent.kt New respawn-at-nearest-spawn event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopSellItemEvent.kt New shop sell event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopChestPlaceEvent.kt New shop chest placement event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/shop/ShopBuyItemEvent.kt New shop buy event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/settings/SettingsBatchChangeEvent.kt New settings batch-change event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/SellRegionEvent.kt New region sale event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ProtectRegionEvent.kt New region protection event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/protect/ExtendRegionEvent.kt New region extension event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAMinuteEvent.kt New per-minute playtime event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PlayerPlayAHourEvent.kt New per-hour playtime event payload (async).
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckRefusePaymentEvent.kt New paycheck refusal event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/playtime/PayCheckPayEvent.kt New paycheck pay event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ZombieVillagerCureFlyEvent.kt New freebuild zombie-villager cure fly event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/FishingSpecialDropEvent.kt New fishing special drop event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/specialdrops/ArchaeologySpecialDropEvent.kt New archaeology special drop event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ProtectItemEvent.kt New protected-item event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInMiningEventEvent.kt New freebuild participation event payload (mining).
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInFishingEventEvent.kt New freebuild participation event payload (fishing).
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/event/TakePartInBadFishingEventEvent.kt New freebuild participation event payload (bad fishing).
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/freebuild/ArmorStandBreakWithAxeEvent.kt New armor-stand-break-with-axe event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SpecialItemReceiveEvent.kt New special-item receive event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemReceiveEvent.kt New signed-item receive event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/SignItemEvent.kt New sign-item event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/essentials/CommandFailEvent.kt New command-failure event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/TelekinesisPickupEvent.kt New telekinesis pickup event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/ReplenishCropEvent.kt New replenish crop event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/EmptyEnchantedBookCollectEvent.kt New empty enchanted book collect event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineSoulboundEvent.kt New soulbound combine event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineRocketSaverEvent.kt New rocket-saver combine event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineNemoEvent.kt New nemo combine event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/enchantment/CombineMendingEvent.kt New mending combine event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanPromotedEvent.kt New clan promotion event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanMemberCountChangeEvent.kt New clan member-count change event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanInviteCountChangeEvent.kt New clan invite-count change event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDemotedEvent.kt New clan demotion event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanDeleteEvent.kt New clan delete event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/clan/ClanCreatedEvent.kt New clan creation event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/SlowChatBlockMessageEvent.kt New slow-chat blocked message event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/DisabledChatBlockMessageEvent.kt New disabled-chat blocked message event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatUnIgnoreEvent.kt New unignore event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatIgnoreEvent.kt New ignore event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatDirectMessageEvent.kt New direct-message event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/chat/ChatAiModerateEvent.kt New AI moderation event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaSuccessEvent.kt New captcha success event payload.
surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/event/captcha/CaptchaFailEvent.kt New captcha fail event payload.
gradle.properties Bumps version from 3.13.0 to 3.13.1.

Comment on lines +7 to +11
data class PlayerPayEvent(
val player: Player,
val targetUuid: UUID,
val amount: Int
) : SurfSyncEvent()
Comment on lines +7 to +11
data class PlayerPayEvent(
val player: Player,
val targetUuid: UUID,
val amount: Int
) : SurfSyncEvent()
Comment on lines +6 to +8
data class StatsOptoutSettingEvent(
val player: Player
) : SurfSyncEvent()
Comment on lines +8 to +12
val player: Player,
val tradeName: String,
val itemStack: ItemStack,
val price: Int
) : SurfSyncEvent()
Comment on lines +7 to +10
data class RespawnAtNearestSpawnEvent(
val player: Player,
val respawnLocation: Location
) : SurfSyncEvent()
Comment on lines +6 to +10
data class CaptchaSuccessEvent(
val player: Player,
val size: Int,
val timePerPage: Long
) : SurfSyncEvent()
Comment on lines +6 to +10
data class CaptchaFailEvent(
val player: Player,
val size: Int,
val timePerPage: Long
) : SurfSyncEvent()
import dev.slne.surf.api.core.event.SurfSyncEvent
import org.bukkit.entity.Player

data class StatsOptoutSettingEvent(
import org.bukkit.entity.Player
import java.util.*

data class ChatUnIgnoreEvent(
Comment on lines +6 to +11
data class PlayerPlayAHourEvent(
val player: Player,
val totalHour: Long,
val totalHourOnServer: Long,
val server: String
) : SurfAsyncEvent()
@mergify mergify Bot added the conflict label May 25, 2026
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented May 25, 2026

👋 TheBjoRedCraft your PR is conflicting and needs to be updated to be merged

- introduce AfkStateChangeEvent for tracking player's AFK status changes
- add ArchaeologySpecialDropEvent for special item drops during archaeology
- implement ArmorStandBreakWithAxeEvent for axe interactions with armor stands
- create CaptchaFailEvent and CaptchaSuccessEvent for CAPTCHA verification results
- add ChatAiModerateEvent for AI moderation of chat messages
- implement ChatDirectMessageEvent for private messaging between players
- create ChatIgnoreEvent and ChatUnIgnoreEvent for managing player ignore lists
- add Clan events for creation, deletion, promotion, demotion, and invite count changes
- introduce Player events for playtime milestones and payment transactions
- add various item-related events including ShopBuyItemEvent and ShopSellItemEvent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants