Skip to content

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

EventTimingCancellableMutable fieldCancellation/effect
PlayerResourceConsumeEventAfter validation, before a custom resource is deductedYesamountPrevents consumption; a replacement amount is revalidated against the current balance
PlayerAttributePointAllocateEventAfter validation, before points are spentYesamountPrevents allocation; replacement amount is revalidated against available points
PlayerAttributePointResetEventAfter validation, before points are refunded or a reset point is spentYesNonePrevents the reset, refund, and reset-point cost
EmakiAttributeDamageEventAfter damage calculation, before final damage is appliedYesfinalDamageCancellation 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