English
Events
All event classes are in emaki.jiuwu.craft.attribute.api.event. They are synchronous, cancellable Bukkit events dispatched on the owner thread of the live target (damage uses the owner shared by the combatants), and published only while runtime holds the required live target. 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; values modified by a listener are revalidated after the listener returns. Non-owner or async paths must not fire a Bukkit event off-thread; schedule on the owner scheduler when you need reliable interception. These are runtime-produced event contracts, not extension interfaces; contribution providers and gates live in emaki.jiuwu.craft.attribute.api.extension