Skip to content

Events

All events are synchronous on the affected player's entity-owner thread. If an asynchronous completion ends after the player goes offline, the runtime skips the event rather than firing on the wrong thread.

EventTimingCancellableMutable fieldEffect
GemInlayEventAfter validation, before charging or rollingYessuccessChanceCancellation prevents the transaction.
GemExtractEventAfter validation, before extraction startsYesNoneCancellation prevents charges and item changes.
GemSocketOpenEventImmediately before the socket state changeYesNoneCancellation prevents socket opening.
GemInlayCompletedEventAfter success actions and terminal persistent-journal completionNoNoneReports operation id, rolled success, final equipment, input consumption, socket/gem data, and reason key.
GemExtractCompletedEventAfter terminal persistent-journal completionNoNoneReports operation id, final equipment, optional returned gem, socket/gem data, and return mode.

Each pre-event has an operationId; inlay/extract outcomes and their completed events use the same id. Completed events cover public API, GUI, held-item action, and direct extraction-service paths. They do not mean merely that a pending commit began.