Skip to content

Events ​

All events fire synchronously on the player's owner thread, and post events do not guarantee that asynchronous persistence has already been written to disk

EventTimingCancellableMutable fieldCancellation/effect
PlayerExpGainEventBefore experience is writtenYesamountCancellation or amount <= 0 prevents the gain; replacement amount is quota-checked again
PlayerPreLevelUpEventAfter non-mutating checks, immediately before level-up mutationYesNonePrevents the level-up mutation
PlayerLevelUpEventAfter a successful level gainNoNoneReports old/new level and cause
PlayerLevelChangeEventAfter a level-changing operation commitsNoNoneReports old/new level, operation type, and direction
PlayerMaxLevelReachedEventWhen the maximum level is reachedNoNoneReports type, max level, and cause

Post events are informational and cannot cancel persistence or revert the committed in-memory change. Asynchronous catalog loading itself does not publish these mutation events