Events
All classes are in emaki.jiuwu.craft.attribute.api.event. They fire synchronously on the owner thread of the live target; damage uses the owner shared by the combatants. Wrong-thread facade calls fail before creating an event.
| Event | Timing | Cancellable | Mutable field | Cancellation/effect |
|---|---|---|---|---|
PlayerResourceConsumeEvent | After validation, before a custom resource is deducted | Yes | amount | Prevents consumption; a replacement amount is revalidated against the current balance. |
PlayerAttributePointAllocateEvent | After validation, before points are spent | Yes | amount | Prevents allocation; replacement amount is revalidated against available points. |
PlayerAttributePointResetEvent | After validation, before points are refunded or a reset point is spent | Yes | None | Prevents the reset, refund, and reset-point cost. |
EmakiAttributeDamageEvent | After damage calculation, before final damage is applied | Yes | finalDamage | Cancellation or a final damage <= 0 prevents EmakiAttribute damage application. |
The remaining fields are read-only snapshots. These are runtime-produced event contracts, not extension interfaces; contribution providers and gates live in emaki.jiuwu.craft.attribute.api.extension.