English
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 records that condition and skips the event rather than firing on the wrong thread
| Event | Timing | Cancellable | Mutable field | Effect |
|---|---|---|---|---|
GemInlayEvent | After validation, before charging or rolling | Yes | successChance | Cancellation prevents the transaction |
GemExtractEvent | After validation, before extraction starts | Yes | None | Cancellation prevents charges and item changes |
GemSocketOpenEvent | Immediately before the socket state change | Yes | None | Cancellation prevents socket opening |
GemInlayCompletedEvent | After success actions and terminal persistent-journal completion | No | None | Reports operation id, rolled success, final equipment, input consumption, socket/gem data, and reason key |
GemExtractCompletedEvent | After terminal persistent-journal completion | No | None | Reports 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. Their timing is not "as soon as the method returns the updated equipment": the transaction returns or commits first, then waits for the action stage and the persistent journal to reach a terminal state. Neither completed event implements Cancellable