Skip to main content

Effects

An effect is one action an enchant (or armor set, or crystal) performs when it fires. You list effects under the effects: key of a level, and each one is a block map shaped like { HEAD: { param: value } }:

levels:
1:
chance: 25 # 25% chance to fire on the trigger
effects:
- { DAMAGE: { amount: 6 } } # deal 6 extra damage
- { IGNITE: { duration: 60 } } # set the victim on fire for 60 ticks (3s)
- { MESSAGE: { text: "&cBurn!" } } # tell the player
  • HEAD is the effect name (always uppercase), e.g. DAMAGE, POTION, BREAK_BLOCK.
  • The body is a map of named parameters. Required params must be set; optional ones have sensible defaults you can omit. Each effect card below lists its parameters.
  • Many effects also accept a target selector via the who: key to change who they act on — e.g. who: "@Aoe{r=6}" — see Selectors. When you don't set one, the effect uses its default target (shown in each card below).
  • An optional wait: <ticks> key delays a single effect; the rest of the list keeps running.

:::tip Ticks are the unit of time Anywhere you see a duration, it's measured in ticks, and 20 ticks = 1 second. So { IGNITE: { duration: 60 } } burns for 3 seconds, and { FLY: { ticks: 200 } } grants 10 seconds of flight. :::

:::note Reading the "How it runs" line Each effect card shows where the effect runs:

  • Runs inline — happens immediately as part of the triggering event (e.g. adjusting the combat hit). The fastest path.
  • Acts on an entity — does something to a living target (heal, ignite, potion).
  • Acts on the world — touches blocks or spawns things at a location.
  • Runs globally — server-wide work, like console commands.

You don't have to manage any of this — it's just to help you picture what each effect touches. :::

Combat & damage

Shape the hit itself — extra damage, the additive damage fold, lightning, explosions, and on-hit kills.

DAMAGE

Runs inline

Deal extra damage to the target: a flat amount and/or percent-of-max of the target's own maximum health (they sum when both are given).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)optional00 or more
percent-of-maxa number (decimals allowed)optional00 to 100
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DAMAGE: { amount: 6, percent-of-max: 10 } }

DAMAGE_MOD

Runs inline

Contribute to the damage fold: side attack/defense, mode add (percent) or flat (raw amount). A NEGATIVE amount is a self-nerf — attack:add:-50 halves your own outgoing damage. Replaces ADD_DAMAGE/REDUCE_DAMAGE/FLAT_DAMAGE/FLAT_REDUCE.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
sideone of: attack, defenserequiredattack | defense
modeone of: add, flatoptionaladdadd | flat
amounta number (decimals allowed)required
Example{ DAMAGE_MOD: { side: attack, mode: add, amount: 25 } }

IGNORE_ARMOR

Runs inline

Make the triggering hit ignore the victim's armor and enchant-protection reduction.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ IGNORE_ARMOR: {} }

KILL

Acts on an entity

Instantly kill the target.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ KILL: {} }

LIGHTNING

Acts on an entity

Strike the target(s) with lightning, optionally dealing extra damage (0 = cosmetic).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
damagea number (decimals allowed)optional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ LIGHTNING: { damage: 6 } }

EXPLODE

Acts on the world

Create an explosion at the target.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
powera number (decimals allowed)required0 or more
breakBlockstrue or falseoptionalfalse
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ EXPLODE: { power: 4, breakBlocks: false } }

PROJECTILE

Acts on an entity

Launch count projectiles of a type from the activator's eye (covers SPAWN_ARROWS via the ARROW type). For an explosive projectile, yield sets the blast (-1 = vanilla default) and incendiary lights fires.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at.

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM)required
counta whole numberoptional11 or more
speeda number (decimals allowed)optional1.50 or more
yielda number (decimals allowed)optional-1
incendiarytrue or falseoptionalfalse
Example{ PROJECTILE: { type: FIREBALL, count: 1, speed: 1.5, yield: 2, incendiary: true } }

SEEK

Runs inline

Make the projectile fired by this BOW_FIRE activation home onto the nearest target in sight.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ SEEK: {} }

IMMUNE

Runs inline

Make the target player(s) immune to a damage cause (sword/axe/projectile/potion/all) for duration ticks; fishhook additionally kills the rod-bobber reel pull (ADR-0053).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typeone of: sword, axe, projectile, potion, all, fishhookrequiredsword | axe | projectile | potion | all | fishhook
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ IMMUNE: { type: potion, duration: 100 } }

INVINCIBLE

Acts on an entity

Make the target invulnerable for a span of ticks, then restore.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
ticksa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ INVINCIBLE: { ticks: 100 } }

Debuffs & control on a target

Apply or strip status on whoever you hit — potions, fire, disarm, armour stripping, teleport-block, and suppressing their enchants.

POTION

Acts on an entity

Apply a potion effect to the target(s) at the given LEVEL (1-based: level 1 = the I tier), for a duration in ticks. The effect name is resolved to a handle at compile time. On a HELD/PASSIVE source it is removed again when the item is unequipped (§B lifecycle).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
effecta potion-effect name (e.g. STRENGTH, POISON)required
levela whole numberrequired1 or more
durationa duration in ticks (20 ticks = 1 second)required0 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ POTION: { effect: STRENGTH, level: 1, duration: 100 } }

REMOVE_POTION

Acts on an entity

Remove a potion effect from the target(s).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
effecta potion-effect name (e.g. STRENGTH, POISON)required
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ REMOVE_POTION: { effect: POISON } }

CURE

Acts on an entity

Clear active potion effects of one category from the target(s): ALL (default), HARMFUL, BENEFICIAL, or NEUTRAL. category HARMFUL strips only debuffs (positive effects untouched). count bounds how many matching effects are removed (0 = all of them) in the server's own enumeration order — a count: 1 HARMFUL cure strips exactly one debuff, whichever the server lists first.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
categoryone of: ALL, HARMFUL, BENEFICIAL, NEUTRALoptionalALLALL | HARMFUL | BENEFICIAL | NEUTRAL
counta whole number remove at most this many effects; 0 = every matchoptional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ CURE: { category: HARMFUL } }

IGNITE

Acts on an entity

Set the target(s) on fire for a duration in ticks.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)required0 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ IGNITE: { duration: 60 } }

EXTINGUISH

Acts on an entity

Put out the target's fire.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ EXTINGUISH: {} }

DISARM

Acts on an entity

Make the target(s) drop their held (main-hand) item.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DISARM: {} }

REMOVE_ARMOR

Acts on an entity

Strip one random worn armour piece from the target(s) and drop it.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ REMOVE_ARMOR: {} }

TELEBLOCK

Runs inline

Block the target player(s) from teleporting (ender pearl / chorus fruit) for duration ticks.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional4000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TELEBLOCK: { duration: 400 } }

SUPPRESS

Runs inline

Disable a target's enchant/group/type (the key) for a duration in ticks (DISABLE_ENCHANT/GROUP/TYPE), or with scope KIND every ability carrying the keyed effect head (e.g. MODIFY_FOOD). scope TYPE keys the ability's combat direction (DEFENSE / ATTACK) unless it authored a suppress-type of its own, so key: DEFENSE silences everything a victim's gear does back. mode: timed (the duration window) or next-hit (a one-shot that clears after the target's next `charges` incoming hits, Neutralize). The consumed-* params are emitted at the moment the suppression blocks something, not when it is armed, and fill {ATTACKER} with whoever armed it and {VICTIM} with the player it silenced. Default target the combat victim.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
scopeone of: ENCHANT, GROUP, TYPE, KINDrequiredENCHANT | GROUP | TYPE | KIND
keytextrequired
durationa duration in ticks (20 ticks = 1 second)optional2000 or more
modeone of: timed, next-hitoptionaltimedtimed | next-hit
chargesa whole numberoptional11 or more
consumed-message-actortext line to whoever armed this, when it blocksoptional(empty)
consumed-message-victimtext line to the suppressed player, when it blocksoptional(empty)
consumed-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) cue played at the block; omit for silenceoptional
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SUPPRESS: { scope: GROUP, key: lifesteal, duration: 200, who: "@Victim" } }

KNOCKBACK_CONTROL

Runs inline

Scale the target's incoming knockback for duration ticks: 0 cancels it, 0.5 halves it, 2 doubles it (default: cancel for 2 ticks). Use on DEFENSE for your own knockback, or on ATTACK with who: victim for the knockback you deal.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
multipliera number (decimals allowed)optional00 or more
durationa duration in ticks (20 ticks = 1 second)optional20 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ KNOCKBACK_CONTROL: { multiplier: 0 } }

Movement

Move bodies around — flight, walk speed, knockback/velocity, and teleporting.

FLY

Acts on an entity

Grant the player temporary flight. speed overrides their fly speed for the window and is restored with it (0, the default, leaves the server's own fly speed alone).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
ticksa duration in ticks (20 ticks = 1 second)optional2000 or more
speeda number (decimals allowed) fly speed while the window holds; 0 keeps the server'soptional00 to 1
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FLY: { ticks: 200 } }

MOVEMENT_SPEED

Acts on an entity

Set the player target's walk speed for a span of ticks, then restore the default (0.2). hold keeps it instead of scheduling that restore, for a debuff whose life is a STACK COUNT rather than a clock — the caller then owns handing it back, and the only thing the engine still guarantees is that a logout restores 0.2 rather than persisting an altered speed to disk. ticks is ignored when hold is set.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
speeda number (decimals allowed)required-1 to 1
ticksa duration in ticks (20 ticks = 1 second)optional2000 or more
holdtrue or false keep the speed with NO timed revert; something else must hand it backoptionalfalse
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MOVEMENT_SPEED: { speed: 0.4, ticks: 200 } }

VELOCITY

Acts on an entity

Apply velocity to the target(s): mode=add uses x/y/z; mode=away shoves them back from the anchor with strength and mode=toward drags them to it. anchor picks the point — the activator (default), the attacker that hit them, or the combat victim — so a defensive proc can launch the wearer away from whoever struck. Replaces THROW/LAUNCH/KNOCKBACK.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
modeone of: add, away, towardoptionaladdadd | away | toward
xa number (decimals allowed)optional0
ya number (decimals allowed)optional0
za number (decimals allowed)optional0
strengtha number (decimals allowed)optional00 or more
anchorone of: activator, attacker, victim the point away/toward is measured fromoptionalactivatoractivator | attacker | victim
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ VELOCITY: { mode: add, x: 0, y: 1.2, z: 0 } }

TELEPORT

Acts on an entity

Teleport the target to the actor's or the victim's location.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
toone of: VICTIM, ACTOR destination party: the victim or the actoroptionalVICTIMVICTIM | ACTOR
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TELEPORT: { to: VICTIM } }

Blocks & world

Touch the world — break/place blocks, walkers, spawn entities and guardians, fireworks.

BREAK_BLOCK

Acts on the world

Break the target block(s) (default @Here; drops=false clears). @Vein/@Tunnel/@Trench/@Bore for shapes. void-materials is the per-block exception to `drops`: the listed types are destroyed dropless while everything else in the same volume still yields, which is how a bulk excavator keeps the ore and voids the stone. `smelt` is the volume's drop TRANSFORM — the excavation twin of the MINE-scoped SMELT read-back, which only ever addresses the one block a MINE event names: a smeltable block yields that many of its smelted product instead of its raw drop. Being a number rather than a flag, it takes a fact expression, so a co-enchant rule ('only alongside Fuse') is one authored product and needs no second ability.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: at -> @Here (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
dropstrue or falseoptionaltrue
void-materialsa block or item name (e.g. DIAMOND, OBSIDIAN) these block types break WITHOUT drops even when drops is true (empty = none)optional(empty)
smelta whole number smelted products per smeltable block in the volume; 0 = no transformoptional00 to 64
smelt-materialsa block or item name (e.g. DIAMOND, OBSIDIAN) restrict the smelt transform to these block types (empty = every type that smelts)optional(empty)
Example{ BREAK_BLOCK: { drops: true } }

SET_BLOCK

Acts on the world

Set the target block(s) to a material (default @Here = the activation block).

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: at -> @Here (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
Example{ SET_BLOCK: { material: OBSIDIAN } }

WALKER

Acts on the world

Lay a temporary platform of a material under the target for a duration (then revert), out to a radius. replace = AIR_ONLY | REPLACEABLE (air/liquid) | ANY.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
ticksa duration in ticks (20 ticks = 1 second)optional600 or more
radiusa whole numberoptional10 to 4
replaceone of: AIR_ONLY, REPLACEABLE, ANYoptionalREPLACEABLEAIR_ONLY | REPLACEABLE | ANY
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ WALKER: { material: ICE, ticks: 80, radius: 1 } }

SPAWN_ENTITY

Acts on the world

Spawn count entities of type at the target's (or activation) location; ttl ticks until removal (0 = permanent), optional starting health, and owner=activator to tame an owned summon to the activator. ADR-0052 summon flags: powered charges a creeper; ai=false disables mob AI; targeting=false stops the summon acquiring targets; saddled + mount=activator make a horse-type rideable and seat the activator; detonate=PLAYER_HIT makes a creeper explode ONLY when a player hits it (it never self-detonates); invincible=true zeroes all damage to the summon (it cannot die but still takes hits and knockback); speed is a multiplier on the spawned entity's vanilla movement-speed base (0 = untouched); name is shown above each summon and effects is a comma-separated potion loadout held for its whole life, each entry optionally levelled with NAME*LEVEL (SPEED*3) — the same styling GUARD takes, so the choice between the two is only about targeting. payload-phase attaches the owner's SUMMON_PAYLOAD abilities to a point in the summon's life: detonate REPLACES the vanilla explosion (no terrain damage, no vanilla entity damage), death fires as it dies, and periodic pulses every payload-period ticks. The payload runs once per entity in a payload-radius x payload-height box around the summon (height 0 reuses the radius), filtered by payload-filter and capped nearest-first by payload-max-targets; a payload needs owner=activator, since the owner is who runs it. payload-phase=strike is the odd rung out: it fires when the summon lands a MELEE hit on a player (its projectiles never count) and runs the owner's IMPACT abilities on the player struck, NOT their SUMMON_PAYLOAD ones — so the box params above do not apply and the target is always the one player hit. payload-cancel drops the summon's own melee damage so only the authored IMPACT lands, and payload-consume despawns the summon on that hit, which makes it a one-shot courier: exactly one strike per summon, never a second. Visuals for the strike belong on those IMPACT abilities, where they are fully authored. scatter spreads the summons over a random offset, air-scanned so none spawns inside terrain. fuse shortens (or lengthens) a primed TNT's countdown; it is a separate knob from ttl because ttl DESPAWNS, so any ttl at or under the fuse would remove the charge before it could ever explode. Replaces SPAWN/TNT.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM)required
counta whole numberoptional11 or more
ttla duration in ticks (20 ticks = 1 second)optional00 or more
healtha number (decimals allowed)optional00 or more
ownerone of: none, activatoroptionalnonenone | activator
poweredtrue or falseoptionalfalse
aitrue or falseoptionaltrue
targetingtrue or falseoptionaltrue
saddledtrue or falseoptionalfalse
mountone of: none, activatoroptionalnonenone | activator
detonateone of: NONE, PLAYER_HIToptionalNONENONE | PLAYER_HIT
invincibletrue or falseoptionalfalse
speeda number (decimals allowed)optional00 or more
nametext custom name shown above each summon; {OWNER} fills in the summoneroptional(empty)
effectsa potion-effect name (e.g. STRENGTH, POISON) potion effects held for the summon's whole lifeoptional(empty)
payload-phaseone of: none, detonate, death, periodic, strike when the summon runs its owner's abilities (strike runs IMPACT, the rest SUMMON_PAYLOAD)optionalnonenone | detonate | death | periodic | strike
payload-perioda duration in ticks (20 ticks = 1 second) ticks between payload pulses (periodic phase only)optional400 or more
payload-radiusa number (decimals allowed) XZ half-extent of the payload's target boxoptional40 or more
payload-heighta number (decimals allowed) Y half-extent; 0 reuses payload-radiusoptional00 or more
payload-filterone of: ALL, PLAYERS, MONSTERS, MOBS, ENEMIES, ALLIES which entities the payload targets; A+B keeps only what both admitoptionalALLALL | PLAYERS | MONSTERS | MOBS | ENEMIES | ALLIES
payload-max-targetsa whole number nearest-first cap on payload targets (0 = all)optional00 or more
payload-consumetrue or false strike phase only: the hit also despawns the summonoptionaltrue
payload-canceltrue or false strike phase only: the summon's own melee damage is droppedoptionaltrue
scattera whole number spread each summon over a random ±N XZ offset, air-scanned (0 = the exact point)optional00 to 8
fusea duration in ticks (20 ticks = 1 second) primed TNT only: ticks until it detonates (0 = vanilla's 80). NOT ttl, which despawnsoptional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SPAWN_ENTITY: { type: WOLF, count: 1, ttl: 0, health: 0, owner: activator } }

GUARD

Acts on the world

Summon count guardian mobs of type at the activation location, each targeting the attacker, auto-removed after ttl ticks (default 200; 0 = permanent); optional custom name. health sets each guard's starting and maximum health, speed multiplies its vanilla movement speed, and effects is a comma-separated potion loadout held for the guard's whole life, each entry optionally levelled with NAME*LEVEL (SPEED*3). A targeted SPAWN_ENTITY for retaliation — author on DEFENSE.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Attacker (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM)required
counta whole numberoptional11 or more
ttla duration in ticks (20 ticks = 1 second)optional2000 or more
nametext custom name shown above each guard; {OWNER} fills in the summoneroptional(empty)
healtha number (decimals allowed) starting (and maximum) health; 0 keeps the vanilla oneoptional00 or more
speeda number (decimals allowed) movement-speed multiplier; 0 keeps the vanilla oneoptional00 or more
effectsa potion-effect name (e.g. STRENGTH, POISON) potion effects held for the guard's whole lifeoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ GUARD: { type: IRON_GOLEM, count: 1, ttl: 200, name: "&bGuardian" } }

SMELT

Runs inline

Auto-smelt the block broken by this MINE activation (ore→ingot, sand→glass, …).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ SMELT: {} }

TELEPORT_DROPS

Runs inline

Send the block's drops straight to the breaker's inventory (this MINE activation).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ TELEPORT_DROPS: {} }

Economy & items

Give, take, and move resources — items, money, experience, food, durability, and souls.

GIVE_ITEM

Acts on an entity

Give a material to the player target(s); overflow drops at their feet.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
counta whole numberoptional11 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ GIVE_ITEM: { material: DIAMOND, count: 1, who: "@Self" } }

REMOVE_ITEM

Acts on an entity

Remove up to count of a material from the player target(s)' inventory.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
counta whole numberoptional11 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ REMOVE_ITEM: { material: DIAMOND, count: 1, who: "@Self" } }

DROP_ITEM

Acts on the world

Drop a material as an item at the activation location. No-op if there is no location.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot.

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
counta whole numberoptional11 or more
Example{ DROP_ITEM: { material: DIAMOND, count: 1 } }

MODIFY_MONEY

Acts on an entity

Modify a player target's balance: give to them, take from them, transfer (move at most the target's balance to the activator — never more than they hold), steal_percent (give the activator that PERCENT of the target's balance — amount is a 0..100 percentage), or interest_percent (deposit the TARGET that percent of their OWN balance — minted income, ADR-0052 Fish; one deposit is ceilinged by the live pets.max-percent-money-cap). Replaces GIVE_MONEY/TAKE_MONEY/STEAL_MONEY[_PERCENT].

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)required0 or more
modeone of: give, take, transfer, steal_percent, interest_percentoptionalgivegive | take | transfer | steal_percent | interest_percent
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MODIFY_MONEY: { amount: 100, mode: give, who: "@Self" } }

MODIFY_EXP

Acts on an entity

Modify a player target's experience: give to them, take from them, or transfer (move at most the target's experience to the activator — never more than they hold). Replaces GIVE_EXP.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta whole numberrequired0 or more
modeone of: give, take, transferoptionalgivegive | take | transfer
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MODIFY_EXP: { amount: 50, mode: give, who: "@Self" } }

MODIFY_FOOD

Acts on an entity

Modify a player target's hunger. give/take move the bar now (clamped to 20 / to 0). scale-gain multiplies the next food GAIN by factor for duration ticks; absolute instead multiplies the RESULTING food level (a bigger claim, so it wins if both are armed); cancel-drain cancels hunger LOSS for duration ticks. Author the window modes on REPEATING with duration at least the period for an always-on effect while worn — the engine has no unequip teardown, so the window lapses shortly after re-arming stops. Replaces FEED.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta whole numberoptional00 or more
modeone of: give, take, scale-gain, cancel-drain, absoluteoptionalgivegive | take | scale-gain | cancel-drain | absolute
factora number (decimals allowed) scale-gain: what a food-level gain is multiplied by; absolute: what the RESULTING level isoptional10 or more
durationa duration in ticks (20 ticks = 1 second) scale-gain/cancel-drain/absolute: ticks the armed window lastsoptional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MODIFY_FOOD: { amount: 6, mode: give, who: "@Self" } }

DURABILITY

Acts on an entity

Modify durability of the player's held item and/or worn armor: restore (amount<0 = full) or damage, flat by amount or proportionally by percent of each item's max durability (percent-restore/percent-damage). select addresses ONE worn piece — a named slot, the most/least damaged, or a random one — instead of the whole set; skip-undamaged leaves pieces at full durability alone and out of that pick. Replaces ADD_DURABILITY/ADD_DURABILITY_ITEM/REPAIR/DAMAGE_ARMOR.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta whole number durability points; negative fully restores (restore mode)optional-1
targetone of: item, armor, alloptionalitemitem | armor | all
modeone of: restore, damage, percent-restore, percent-damageoptionalrestorerestore | damage | percent-restore | percent-damage
percenta number (decimals allowed) percent-* modes only: how much of each item's MAX durability to moveoptional00 or more
selectone of: whole-set, slot:helmet, slot:chestplate, slot:leggings, slot:boots, most-damaged, least-damaged, random-piece which worn piece target: armor addressesoptionalwhole-setwhole-set | slot:helmet | slot:chestplate | slot:leggings | slot:boots | most-damaged | least-damaged | random-piece
skip-undamagedtrue or false leave pieces already at full durability untouchedoptionalfalse
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DURABILITY: { amount: -1, target: item } }

REMOVE_SOULS

Runs inline

Debit souls from a soul gem: @Self (default) charges the activator's active gem, @Victim drains the target's own gem. A no-op when that player is not in soul mode.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta whole numberrequired1 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ REMOVE_SOULS: { amount: 5 } }

Health & survival

Keep the wearer alive — heal/lifesteal, max-health buffs, oxygen, and death-keep.

MODIFY_HEALTH

Acts on an entity

Modify a target's health: give heals them, take deals direct health damage, transfer (lifesteal) damages the target and heals the activator by the same amount, set forces their health to the amount. Replaces HEAL.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)required0 or more
modeone of: give, take, transfer, setoptionalgivegive | take | transfer | set
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MODIFY_HEALTH: { amount: 4, mode: give, who: "@Self" } }

HEALTH

Acts on an entity

Bonus maximum health. On PASSIVE/HELD @Self it is a maintained worn bonus (reconciled, additive across sources, removed on unequip); on event triggers it is a permanent base shift.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)required0 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ HEALTH: { amount: 4 } }

FILL_OXYGEN

Acts on an entity

Refill the target's air supply. amount adds that many air ticks instead, clamped to the target's maximum air (0, the default, refills the bar outright).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta duration in ticks (20 ticks = 1 second) air ticks to add; 0 refills the bar outrightoptional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FILL_OXYGEN: {} }

KEEP_ON_DEATH

Runs inline

Keep the target's items + levels (no drops) if they die within duration ticks (default 200). Author on trigger REPEATING for an always-on death-keep while worn, or fire on a trigger for a timed grace window. A kept death never spends a holy scroll.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional2000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ KEEP_ON_DEATH: { duration: 200 } }

Cosmetic & feedback

Tell the player what happened — messages/titles, sounds, and particles.

MESSAGE

Runs inline

Send feedback on a channel: chat (default), actionbar, or title (with subtitle + fade/stay/fade timings). Default recipient self; `who` can name any party (e.g. @Victim). The `{ATTACKER}`/`{VICTIM}` tokens expand to the activating player and the other combat party, `{SELF}` to the name of whoever receives that copy, and `{RELATION_COLOR}` to `ally-color` or `enemy-color` depending on how that recipient stands to the actor — so one broadcast reads correctly to friend and foe. Replaces ACTIONBAR/TITLE.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
texttextrequired
channelone of: chat, actionbar, titleoptionalchatchat | actionbar | title
subtitletext title channel onlyoptional(empty)
fadeIna duration in ticks (20 ticks = 1 second) title channel onlyoptional100 or more
staya duration in ticks (20 ticks = 1 second) title channel onlyoptional700 or more
fadeOuta duration in ticks (20 ticks = 1 second) title channel onlyoptional200 or more
tokensexpr map name=expression bindings; each {name} in the text becomes the evaluated numberoptional(empty)
ally-colortext the {RELATION_COLOR} value for a recipient allied to the actoroptional&a
enemy-colortext the {RELATION_COLOR} value for every other recipientoptional&c
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MESSAGE: { text: "&aCritical hit!" } }

SOUND

Acts on the world

Play a sound at the activation location, or at each entity in `who` when given — world-audible there at the same volume and pitch. `dy` raises that anchor (an overhead cue is `dy: 4`). No-op if `who` resolves nothing and the activation has no location.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Here (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
sounda sound name (e.g. ENTITY_GENERIC_EXPLODE)required
volumea number (decimals allowed)optional10 or more
pitcha number (decimals allowed)optional10 or more
dya number (decimals allowed) blocks to raise the anchor before the cue playsoptional0-16 to 16
Example{ SOUND: { sound: ENTITY_GENERIC_EXPLODE, volume: 1, pitch: 1 } }

PARTICLE

Acts on the world

Spawn particles at the activation location, or at each entity in `who` when given (centered on the body, not the feet). `block` carries a block material as crack/dust data. `spread` is the horizontal Gaussian offset (set 0 for a point burst); `spread-y` the vertical offset, where the -1 default means "use `spread`". `dy` moves the whole burst up, which is not what widening `spread-y` does. No-op if there is no location.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Here (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
particlea particle name (e.g. FLAME, HEART)required
counta whole numberoptional10 or more
blocka block or item name (e.g. DIAMOND, OBSIDIAN)optional
spreada number (decimals allowed)optional0.40 to 4
spread-ya number (decimals allowed)optional-1-1 to 4
dya number (decimals allowed) blocks to raise the anchor before the burst spawnsoptional0-16 to 16
Example{ PARTICLE: { particle: BLOCK_CRACK, count: 20, block: REDSTONE_BLOCK, who: "@Victim" } }

FIREWORK

Acts on the world

Spawn a cosmetic firework at the activation location. No-op if there is no location.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot.

ArgumentWhat to putRequired?DefaultAllowed
powera whole numberoptional10 to 3
Example{ FIREWORK: { power: 1 } }

Utility & flow

Wiring and control — set/flip variables for later conditions, cancel the event, run console commands.

SET_VAR

Runs inline

Set (or with op=increment, add to) a variable on the target, readable in later conditions as %name% on the activator or %victim.var.name% on the victim. ttl ticks, 0 = forever; cap 0 = uncapped. Any living entity can carry one, so a mob holds its own stacks. clear-on-death ends the var when its CARRIER dies: a mob's vars always go, but a player's deliberately survive their death (a mark meant to outlast one, a window somebody else armed), so a counter that should not — a bleed ladder — has to say so.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
nametextrequired
valuetextoptional(empty)
ttla duration in ticks (20 ticks = 1 second)optional00 or more
opone of: set, incrementoptionalsetset | increment
stepa whole numberoptional1
capa whole numberoptional00 or more
clear-on-deathtrue or false the carrier's own death ends this var, not just its ttloptionalfalse
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SET_VAR: { name: bleedstacks, op: increment, step: 1, cap: 20, ttl: 200, who: "@Victim" } }

INVERT_VAR

Runs inline

Numerically invert a per-player variable (0↔1), preserving its remaining TTL.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
nametextrequired
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ INVERT_VAR: { name: rage, who: "@Self" } }

CANCEL

Runs inline

Cancel the Bukkit event that triggered this activation.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ CANCEL: {} }

RUN_COMMAND

Runs globally

Run a command as the console (default) or as the activating player. The `{PLAYER}`/`{UUID}`/`{WORLD}` tokens expand to the actor's name, uuid, and world, and `{VICTIM}` to the other combat party's name (empty on a victimless activation). Affinity GLOBAL — the console path runs on the global thread; the player path runs on the actor's own thread. `{PLAYER}` and `{VICTIM}` both refuse to run the command when the name they would embed falls outside the standard `[A-Za-z0-9_]` (1-16) username charset.

How it runs: Runs on the server-wide thread — used for console commands and other global work.

ArgumentWhat to putRequired?DefaultAllowed
commandtextrequired
asone of: console, player who runs it: console (default) or the playeroptionalconsoleconsole | player
Example{ RUN_COMMAND: { command: "f focus {VICTIM}", as: player } }

Everything else

Newer effects that aren't sorted into a family yet.

BATTERY

Runs inline

Arm a damage battery on the wearer: the next `hits` landed hits they take each bank `bank-percent`% of the final damage; their next landed hit on an enemy unloads the entire bank as bonus damage on that hit, then the core resets — a hit with nothing banked still spends the core. No time limit; the ability cooldown paces re-arms. Cleared on death.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
bank-percenta number (decimals allowed)optional200 to 100
hitsa whole numberoptional31 to 10
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ BATTERY: { bank-percent: 20, hits: 3 } }
Acts on an entity

Blink (reforges): instantly teleport up to distance blocks along your facing if the path is clear — stops at the last open block, never phases into or through terrain. Walls stop it; the use is spent either way.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at.

ArgumentWhat to putRequired?DefaultAllowed
distancea number (decimals allowed) max blink distance in blocksoptional41 to 16
particlea particle name (e.g. FLAME, HEART)optionalREDSTONE
ra whole numberoptional1700 to 255
ga whole numberoptional600 to 255
ba whole numberoptional2200 to 255
sizea number (decimals allowed)optional10 or more
counta whole number departure/arrival puff motesoptional100 or more
arrival-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) played ON the player after the hop lands — a sound at the origin is never heard by someone who just teleported away from itoptionalENTITY_ENDERMAN_TELEPORT
arrival-volumea number (decimals allowed)optional0.60 or more
arrival-pitcha number (decimals allowed)optional1.80 or more
arrival-accenta sound name (e.g. ENTITY_GENERIC_EXPLODE) the shimmer layer over the arrival bodyoptionalBLOCK_AMETHYST_BLOCK_CHIME
accent-volumea number (decimals allowed)optional0.40 or more
accent-pitcha number (decimals allowed)optional1.60 or more
Example{ BLINK: { distance: 4 } }

BOOK_RATE_MODIFIER

Runs inline

Arm a one-shot `percent`-point bonus on each target's next enchant-book roll at `site`: `generate` raises the success rate of the book a black scroll mints, `apply` raises the chance a book applies to gear. The charge is consumed by the next roll at that site whatever it returns — a failed apply spends it — and it survives a relog, since the roll it is waiting for may be days away. Both sites cap at the server's global books.max-success ceiling. Guard a second arm with %bookrate.generate% / %bookrate.apply%.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
siteone of: generate, apply which roll the charge waits for: generate (a scroll minting a book) or applyrequiredgenerate | apply
percenta whole number percentage points added to that roll's success chancerequired1 to 100
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ BOOK_RATE_MODIFIER: { site: generate, percent: 5, who: "@Self" } }

CAGE

Acts on the world

Trap the target AND the activator in a temporary cage: floor/roof plates, a walls ring, an air width × height × depth interior, base-centred rise blocks above the midpoint between the two, reverting after ticks. The full volume is safety-checked (every cell must be air) before anything is placed; both parties teleport to opposite interior cells facing each other. Gate the ability on a target existing (e.g. %nearbyenemies% >= 1) so a no-target use fails BEFORE the cooldown arms.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
floora block or item name (e.g. DIAMOND, OBSIDIAN)required
wallsa block or item name (e.g. DIAMOND, OBSIDIAN)required
roofa block or item name (e.g. DIAMOND, OBSIDIAN)required
widtha whole numberoptional31 to 8
heighta whole numberoptional42 to 8
deptha whole numberoptional31 to 8
risea whole numberoptional20 to 8
ticksa duration in ticks (20 ticks = 1 second)optional1500 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ CAGE: { floor: STONE_BRICKS, walls: IRON_BARS, roof: STONE_BRICKS, ticks: 150, who: "@NearestPlayer{r=10}" } }

CONVERT_SUMMON

Runs inline

Convert EVERY mob within `radius` blocks of the wearer to the wearer's side, permanently: each rebinds its ownership (a hit on it now fires the wearer's GUARDIAN_HURT) and tamed mobs re-tame; an enemy summon turns on its former owner, a wild mob on the wearer's nearest enemy player, and bat swarm clouds permanently swarm their former owner. Only players, armour stands and the wearer are exempt.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
radiusa number (decimals allowed)optional121 to 32
whiff-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) played (low-pitched) when the ring converts nothing — the ring sound alone reads as successoptionalBLOCK_ANVIL_LAND
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ CONVERT_SUMMON: { radius: 12 } }

DAMAGE_CAP

Runs inline

Cap the wearer's next incoming hit at factor times the last damage they took, for a duration in ticks; with reflect, the overflow above the cap is dealt back to the attacker (Diminish). Self-only; no cap is armed until at least one hit has been taken. feedback is an optional line sent when the cap arms, with {damage} filled in with the cap value.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
factora number (decimals allowed)optional0.50 or more
reflecttrue or falseoptionalfalse
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
feedbacktext line sent on arming; {damage} = the cap value just committedoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DAMAGE_CAP: { factor: 0.5, reflect: true, duration: 100 } }

DAMAGE_SCALE

Runs inline

Contribute per resolved target in 'who' to the damage fold: total = per * count, clamped to cap (0 = uncapped). side attack/defense, mode add (percent, e.g. 10 = +10% each) or flat (raw). The count is the selector's resolved set, e.g. who: @AllPlayers{r=7}.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Aoe (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
sideone of: attack, defenseoptionalattackattack | defense
modeone of: add, flatoptionaladdadd | flat
pera number (decimals allowed)required
capa number (decimals allowed)optional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DAMAGE_SCALE: { side: attack, mode: add, per: 10, cap: 100, who: "@AllPlayers{r=7}" } }

DELAYED_STRIKE_FIELD

Acts on the world

Mark `points` ground spots around each target, at an independent per-axis offset of offset-min..offset-max blocks (a spot over lower ground snaps down onto it, but never rises above the origin), play the `cue-` telegraph at each one and shout `warning` ({caster}) at everyone the `filter` admits within target-range. `delay` ticks later every spot detonates together: a damage-free lightning visual (unless lightning: false), the `strike-` cue, and `damage` raw half-hearts subtracted from every body within hit-radius of it — floored at health-floor, so the field cannot kill, and the filter is RE-CHECKED then, so walking into a spot during the delay gets you hit. Spots are independent: overlapping ones each land their own hit.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
pointsa whole number how many ground spots are markedoptional161 to 64
offset-mina whole number closest a spot lands, per axisoptional20 to 64
offset-maxa whole number furthest a spot lands, per axisoptional90 to 64
delaya duration in ticks (20 ticks = 1 second) ticks between the telegraph and the strikeoptional201 or more
hit-radiusa number (decimals allowed) how far from a spot the strike reachesoptional1.41421356237309510 or more
target-rangea number (decimals allowed) how far the warning carries from the originoptional320 or more
filterone of: ALL, PLAYERS, MONSTERS, MOBS, ENEMIES, ALLIES who the warning and the strike admit; re-checked at the strike, not carried from the warningoptionalENEMIESALL | PLAYERS | MONSTERS | MOBS | ENEMIES | ALLIES
damagea number (decimals allowed) raw half-hearts subtracted from a struck body's healthoptional160 or more
health-floora number (decimals allowed) health a strike can never take a body below — the reason the field cannot killoptional10 or more
warningtext line shouted at everyone in range ({caster}); empty = no warningoptional(empty)
cue-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) telegraph cue at each spot; omit for silenceoptional
cue-volumea number (decimals allowed)optional10 or more
cue-pitcha number (decimals allowed)optional10 or more
cue-particlea particle name (e.g. FLAME, HEART) telegraph burst at each spot; omit for noneoptional
cue-particle-counta whole numberoptional10 or more
strike-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) detonation cue at each spot; omit for silenceoptional
strike-volumea number (decimals allowed)optional10 or more
strike-pitcha number (decimals allowed)optional10 or more
strike-particlea particle name (e.g. FLAME, HEART) detonation burst at each spot; omit for noneoptional
strike-particle-counta whole numberoptional10 or more
lightningtrue or false strike each spot with a damage-free lightning visualoptionaltrue
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DELAYED_STRIKE_FIELD: { points: 16, offset-min: 2, offset-max: 9, delay: 20, damage: 16, health-floor: 1, filter: ENEMIES, target-range: 32, cue-sound: ENTITY_WITHER_SPAWN, cue-pitch: 0.4, cue-particle: SPELL_WITCH, cue-particle-count: 32, strike-sound: ENTITY_WITHER_DEATH, strike-pitch: 0.4, strike-particle: EXPLOSION_LARGE, strike-particle-count: 4, who: "@Self" } }

DESPAWN

Acts on an entity

Silently remove the target mob(s) — no drops, no experience, no death event, so nothing downstream (kill counters, other plugins' death hooks) sees a kill. Players are never removed. Pair with @Aoe{filter=MOBS} for an area mob-clear; use KILL when the drops and the death are the point.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DESPAWN: { who: "@Aoe{r=8, filter=MOBS}" } }

DIG_HOME

Runs inline

Mark the activator's location as a temporary home for `window` ticks: the next right-click of the same pet within `range` blocks teleports the activator back and consumes the window. Pets only — the pets service owns the recall; this effect emits no intent of its own.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
windowa duration in ticks (20 ticks = 1 second)optional6000 or more
rangea number (decimals allowed)optional500 or more
Example{ DIG_HOME: { window: 600, range: 50 } }

DISARM_SHUFFLE

Runs inline

Arm an unhanding window on the wearer for `duration` ticks: their next landed melee hit on a player knocks the victim's held item into a random other hotbar slot (the victim can re-select it — shuffled, not locked; weapon-gated combos like Rage break naturally) and that hit deals `damage-malus`% less damage. One shot; a dodged/negated hit keeps the window armed.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional800 or more
damage-malusa number (decimals allowed)optional200 to 100
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DISARM_SHUFFLE: { duration: 80, damage-malus: 20 } }

DOT_AMPLIFY_MARK

Runs inline

Mark the target so their incoming wither and/or poison damage is multiplied by factor for duration ticks. Amplifies EVERY source of those causes, not just the marker's own. Re-marking refreshes the window outright, weaker factor included — a re-infection is a fresh infection. Player targets only.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
causesone of: wither, poison, dot which damage-over-time causes are amplified; dot = bothoptionaldotwither | poison | dot
factora number (decimals allowed)optional21 or more
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ DOT_AMPLIFY_MARK: { causes: dot, factor: 3, duration: 60, who: "@Victim" } }

ECHO_STRIKE

Runs inline

Re-run the attack activation once over the same hit (enchants can re-proc); all damage folds into the one event. No effect off the attack side.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ ECHO_STRIKE: {} }

EQUIP_SWAP

Acts on an entity

Temporarily replace the target's `slot` armour piece with `material`, restoring it after `duration` ticks (death-safe: the real piece drops / is kept). Default target the victim.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
slotone of: helmet, chestplate, leggings, bootsoptionalhelmethelmet | chestplate | leggings | boots
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
durationa duration in ticks (20 ticks = 1 second)optional600 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ EQUIP_SWAP: { slot: helmet, material: CARVED_PUMPKIN, duration: 60, who: "@Victim" } }

EXP_MULTIPLY

Runs inline

Multiply the XP gained by a factor, on EXP_GAIN and on MINE. EXP_GAIN scales the amount already granted and ROUNDS to the nearest whole XP; MINE scales the broken block's own yield and TRUNCATES, because a block yields whole orbs.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
factora number (decimals allowed)optional2.00 or more
Example{ EXP_MULTIPLY: { factor: 2 } }

FACING_SET

Acts on an entity

Turn each target to face toward (or away from) the anchor, without moving them. Pitch is set too, so an anchor above or below is genuinely looked at. A target sharing the anchor's exact column keeps its current look — there is no direction to turn to — and an activation whose anchor does not resolve turns nobody.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
modeone of: toward, away whether the target ends up looking at the anchor or directly away from itoptionaltowardtoward | away
anchorone of: activator, attacker, victim which combat party the direction is measured fromoptionalactivatoractivator | attacker | victim
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FACING_SET: { mode: away, anchor: activator, who: "@AOE{radius: 8, filter: ENEMIES}" } }

FALLING_BLOCK

Acts on the world

Spawn a (2*radius+1)² grid of falling blocks `height` blocks above each target (removed after `ttl` if they never land). A landing block fires the actor's IMPACT abilities on what it hit; `carry` is forwarded to that impact as %damage% (set carry: "%damage%"). The block-field profile turns the grid into a storm and is entirely opt-in: layers-min/max stack that many grids, each layer index rising by its own draw from layer-step-min..max (so layer 0 is always `height`, and a layer above the world simply does not rain); density below 100 rains only that percent of positions, drawn fresh per position per layer, so a re-cast field never falls in the same holes; material2/3/4 give the storm a palette, drawn per block. damage-percent adds that percent of the target's max health — capped at health-cap — to `carry`, so one field hurts a 20-heart player and a boss proportionally. rehit-max/rehit-window cap how many impacts ONE victim can take in a fixed window shared across every wearer raining on them (the field's lethality ceiling), and kill-material names a block that kills a falling block mid-flight, so standing in it is real counterplay.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
material2a block or item name (e.g. DIAMOND, OBSIDIAN)optional
material3a block or item name (e.g. DIAMOND, OBSIDIAN)optional
material4a block or item name (e.g. DIAMOND, OBSIDIAN)optional
radiusa whole numberoptional10 to 4
heighta whole numberoptional40 to 64
ttla duration in ticks (20 ticks = 1 second)optional400 or more
carrya number (decimals allowed)optional0
layers-mina whole number fewest grids stacked above the targetoptional11 to 8
layers-maxa whole number most grids stacked above the targetoptional11 to 8
layer-step-mina whole number fewest blocks one layer rises per layer indexoptional00 to 24
layer-step-maxa whole number most blocks one layer rises per layer indexoptional00 to 24
densitya number (decimals allowed) percent of grid positions that actually rain, drawn per position per layeroptional1000 to 100
damage-percenta number (decimals allowed) percent of the target's (capped) max health added to carry — a victim-scaled impactoptional00 or more
health-capa number (decimals allowed) ceiling on the max health damage-percent reads; 0 = uncappedoptional00 or more
rehit-maxa whole number most impacts one victim can take per rehit-window, shared across every wearer; 0 = uncappedoptional00 or more
rehit-windowa duration in ticks (20 ticks = 1 second) length of that fixed bucket, anchored at the first impactoptional2000 or more
kill-materiala block or item name (e.g. DIAMOND, OBSIDIAN) a block falling through this material dies without ever landing — the field's counterplayoptional
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FALLING_BLOCK: { material: END_STONE, material2: NETHERRACK, radius: 4, height: 10, layers-min: 3, layers-max: 4, layer-step-min: 12, layer-step-max: 19, density: 50, damage-percent: 15, health-cap: 44, rehit-max: 4, rehit-window: 200, kill-material: COBWEB, ttl: 100, who: "@Aoe{r=25, filter=ENEMIES}" } }

FALL_SHIELD

Runs inline

Arm a ONE-SHOT cancel of each target's next fall damage within `window` ticks. The target need not carry any enchant — this is how a proc that displaces someone pays for their landing. Re-arming refreshes the window; it never banks a second shield.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
windowa duration in ticks (20 ticks = 1 second) how long the unspent shield waits for a falloptional2001 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FALL_SHIELD: { window: 200, who: "@AOE{radius: 8, filter: ENEMIES}" } }

FLY_MODE

Acts on an entity

Grant flight to the target(s) while NOT in combat, revoke it while in combat (survival/adventure only). Author on trigger [REPEATING, PASSIVE] with a repeat period so it re-checks and tears down on unequip.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FLY_MODE: { who: "@Self" } }

FREEZE

Acts on an entity

Fully freeze the target for a span of ticks (vanilla powder-snow visual: blue hearts + full vignette, held even while the victim burns), dealing dot damage every dot-period ticks (attributed to the activator; raw pre-armor half-hearts) and slowing them by slow percent. Re-procs refresh the window instead of stacking. neutralize-frost-slow cancels vanilla's own ~50% fully-frozen slow so the authored percent is the real one. breakout-chance rolls once per DoT pulse: on a hit the root shatters there and then, so a long freeze becomes a struggle the victim can win early instead of a fixed sentence. no-jump additionally pins the victim to the ground: a frozen player cannot jump out of the root. It is off by default because it re-tunes the feel of every freeze it is added to, and it is MODERN-ONLY — the 1.8.9 lane has no cancellable jump event, so a freeze there keeps its DoT and slow and the victim can still hop (the recorded era degrade, as with the powder-snow visual).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional600 or more
dota number (decimals allowed)optional20 or more
dot-perioda duration in ticks (20 ticks = 1 second)optional200 or more
slowa number (decimals allowed)optional50 to 100
neutralize-frost-slowtrue or falseoptionaltrue
breakout-chancea number (decimals allowed) percent chance per DoT pulse that the victim shatters the root earlyoptional00 to 100
no-jumptrue or false also stop the victim jumping for the window (modern lane only; inert on 1.8.9)optionalfalse
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ FREEZE: { duration: 100, dot: 2, dot-period: 20, slow: 5 } }

GRAPPLE

Runs inline

Leviathan's Reach (reforges): throw a grappling line along your facing (range blocks). An enemy in sight closer than the first block is reeled to reel-distance blocks in front of you with a brief slow and no damage; otherwise you zip to the terrain point. Open air wastes the throw. Reforge-service-owned: this effect emits no intent of its own.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
rangea number (decimals allowed) hook range in blocks (both rays)optional141 or more
hook-speeda number (decimals allowed) hook flight speed, blocks per tick (cosmetic delay)optional2.00.5 or more
reel-distancea number (decimals allowed) where a hooked enemy lands, blocks in front of youoptional2.00.5 or more
slow-effecta potion-effect name (e.g. STRENGTH, POISON) the brief debuff a reeled enemy getsoptionalSLOW
slow-levela whole number its amplifier + 1 (authoring convention)optional21 to 10
slow-durationa duration in ticks (20 ticks = 1 second) its lengthoptional600 or more
zip-strengtha number (decimals allowed) terrain mode: velocity per block of distance (capped)optional0.340 or more
zip-capa number (decimals allowed) terrain mode: velocity magnitude capoptional3.20 or more
zip-risea number (decimals allowed) terrain mode: extra upward boostoptional0.250 or more
particlea particle name (e.g. FLAME, HEART)optionalREDSTONE
ra whole numberoptional2000 to 255
ga whole numberoptional2200 to 255
ba whole numberoptional2550 to 255
sizea number (decimals allowed)optional10 or more
densitya number (decimals allowed) line motes per blockoptional30 or more
Example{ GRAPPLE: { range: 14, hook-speed: 2.0, reel-distance: 2.0 } }

GRAVITY_WELL

Runs inline

Singularity (reforges): throw a particle beam onto the block in your sights (max range); a collapsing star forms rise blocks above it, drags every living thing within radius toward the core for duration ticks, then implodes for damage (linear falloff to falloff-floor at the edge). Pulls — and hurts — the caster too unless self-pull/self-damage are off. Reforge-service-owned: this effect emits no intent of its own.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
rangea number (decimals allowed) max block-selection distance (blocks)optional121 or more
radiusa number (decimals allowed) pull + implosion radius around the coreoptional60.5 or more
risea number (decimals allowed) core height above the selected blockoptional2.50 or more
durationa duration in ticks (20 ticks = 1 second) pull phase length before the implosionoptional600 or more
perioda whole number pull cadence in ticksoptional21 to 20
pulla number (decimals allowed) per-pulse velocity magnitude toward the coreoptional0.280 or more
damagea number (decimals allowed) implosion damage at the core, RAW health-space (8.0 = 4 hearts)optional8.00 or more
falloff-floora number (decimals allowed) damage fraction kept at the radius edgeoptional0.250 to 1
self-pulltrue or false the caster is dragged too (the authored downside)optionaltrue
self-damagetrue or false the implosion hits the caster too if insideoptionaltrue
ra whole numberoptional1900 to 255
ga whole numberoptional1200 to 255
ba whole numberoptional2550 to 255
Example{ GRAVITY_WELL: { range: 12, radius: 6, duration: 60, damage: 8.0 } }

HEAD_TROPHY

Runs inline

Arm a head trophy on the target: on their next death from ANY cause a player head owned by them joins the drops, named and lored from these templates, and the mark clears. Tokens resolve at the death: {VICTIM}, {KILLER}, {MONTH}, {DAY}, {YEAR}, {X}, {Y}, {Z}, {ITEM} (the killer's held item, else Fists). Lore lines are separated by '|'. A killer-less death drops the bare head with no lore, since every lore token would be empty. Player targets only.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
nametext display-name template for the dropped skulloptional(empty)
loretext lore template; '|' separates linesoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ HEAD_TROPHY: { name: "&fSkull of {VICTIM}", lore: "&7Defeated by &f{KILLER}|&f{MONTH} {DAY}, {YEAR}" } }

HIT_TEMPO

Runs inline

Arm a hit-tempo window on the wearer for `duration` ticks: their melee victims' damage-immunity window is halved for the wearer's hits only (model MENTAL = the 1.8-combat half-window gate; VANILLA = the 1.9+ full-window cadence), each such hit deals `damage-percent`% of its normal damage, and on 1.9+ the wearer gains `attack-speed` (+1.0 = doubled) swing speed for the window. Third-party attackers are unaffected — their hits keep natural immunity.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
modelone of: VANILLA, MENTALoptionalVANILLAVANILLA | MENTAL
damage-percenta number (decimals allowed)optional33.30 to 100
attack-speeda number (decimals allowed)optional1.00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ HIT_TEMPO: { duration: 100, model: MENTAL, damage-percent: 33.3, attack-speed: 1.0 } }

IGNORE_HEROIC

Runs inline

Make the triggering hit ignore the victim's heroic-upgrade damage reduction (percent and flat).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

Takes no arguments.

Example{ IGNORE_HEROIC: {} }

INVENTORY_CONVERT

Runs inline

Replace up to `limit` of the activator's `from` items with `to`, walking the whole inventory. With `plain` only meta-less stacks are touched. A stack straddling the remaining limit converts up to the limit and returns the overflow as `from`; anything that no longer fits is dropped at their feet, pickable only by them for `protect-seconds`. The number converted lands in `count-var`, so the zero-converted failure branch and any count-scaled follow-up read it as %converted%.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
froma block or item name (e.g. DIAMOND, OBSIDIAN) the material consumedrequired
toa block or item name (e.g. DIAMOND, OBSIDIAN) the material handed back in its placerequired
limita whole number the most items one activation may convertrequired1 or more
plaintrue or false true = skip any stack carrying meta (a named/enchanted/plugin item is never raw material)optionaltrue
protect-secondsa whole number how long items that no longer fit stay owner-locked on the ground (0 = unprotected)optional00 or more
count-vartext per-player variable the converted count is written to, read back as %name%optionalconverted
Example{ INVENTORY_CONVERT: { from: BUCKET, to: LAVA_BUCKET, limit: 1152, plain: true, protect-seconds: 60, count-var: converted } }

ITEM_XP_TRACK

Runs inline

Credit `amount` experience to the item the activator is holding — the item whose ability fired. At most ONE level per grant: the remainder is banked toward the next, and at the item's cap the bank simply keeps growing. `window` gates the grant to once per that many minutes using a stamp carried BY the item, so the gate follows it through a trade and a freshly minted item earns straight away; a grant inside the window is skipped whole, never scaled. Per-level thresholds and the level cap come from the item's own definition (a pet's `exp-curve` / `max-level`), falling back to the universal `pets.exp-per-level` and `pets.max-level`.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
amounta whole number experience credited to the held itemrequired1 or more
windowa whole number MINUTES between grants for this item (0 = ungated); 1440 = once a dayoptional00 or more
messagetext line sent on a grant ({xp}, {exp}, {needed}); empty = silentoptional(empty)
level-up-messagetext line sent when the grant levels the item ({item} = its name BEFORE the level-up, {level})optional(empty)
Example{ ITEM_XP_TRACK: { amount: 500, window: 1440, message: "&a&l+ &a{xp} Pet EXP &a&l[&7{exp}/{needed}&a&l]" } }

JAVELIN

Runs inline

Javelin (reforges): a straight particle javelin at speed blocks/tick along the FULL facing (pitch included), max-travel blocks. On the first living hit: one weapon-swing's damage (or FLAT damage), knockback × along the flight angle, a lock-tick control lock (view snapped back + walk/jump locked; driven down a tracked arc), then nausea. Speed is authored (sidestep to dodge); a miss is wasted. Reforge-service-owned: this effect emits no intent of its own.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
speeda number (decimals allowed) flight speed, blocks per tick (0.15 = 3 blocks/s)optional0.150.05 or more
max-travela number (decimals allowed) max flight distance in blocksoptional121 or more
hit-radiusa number (decimals allowed) hit detection radius around the tipoptional0.90.1 or more
damage-modeone of: WEAPON, FLAT WEAPON = one swing of the held weapon (era-read); FLAT = the damage paramoptionalWEAPONWEAPON | FLAT
damagea number (decimals allowed) FLAT mode damage, RAW health-spaceoptional7.00 or more
knockbacka number (decimals allowed) knockback multiplier along the flight angleoptional1.30 or more
knockback-basea number (decimals allowed) base knockback velocity one multiplier buysoptional0.450 or more
locka duration in ticks (20 ticks = 1 second) control-lock length: view snapped, walk+jump locked, driven down a tracked arcoptional200 or more
lock-delaya duration in ticks (20 ticks = 1 second) ticks after impact before the lock arms (lets the knock land first)optional50 or more
nausea-effecta potion-effect name (e.g. STRENGTH, POISON) the post-lock debuffoptionalCONFUSION
nausea-durationa duration in ticks (20 ticks = 1 second) its length (100 = 5 s)optional1000 or more
particlea particle name (e.g. FLAME, HEART)optionalREDSTONE
ra whole numberoptional1200 to 255
ga whole numberoptional2000 to 255
ba whole numberoptional2550 to 255
sizea number (decimals allowed)optional1.20 or more
Example{ JAVELIN: { speed: 0.15, max-travel: 12, knockback: 1.3, lock: 20 } }

LIGHTNING_MOD

Runs inline

While worn (PASSIVE): the wearer's LIGHTNING effects deal amount% more authored damage (summed across worn sources, suppression-aware, read when the bolt fires). Negative values reduce, floored at a cosmetic bolt; the vanilla splash is untouched.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)required-100 or more
Example{ LIGHTNING_MOD: { amount: 10 } }

MARK

Runs inline

Mark the target(s) so the actor deals an extra `amount`% damage to them for `duration` ticks. Applied by the damage fold on the actor's later hits; default target the combat victim.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed)required
durationa duration in ticks (20 ticks = 1 second)optional600 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MARK: { amount: 25, duration: 60, who: "@Victim" } }

MARK_ZONE

Runs inline

Lay an actor-owned cylinder of `radius` blocks under each target for `duration` ticks. Read by the %victim.inzone% fact, so a condition-gated bonus can deal more to an enemy inside it.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
radiusa number (decimals allowed)optional40 or more
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MARK_ZONE: { radius: 4, duration: 100, who: "@Victim" } }

MAX_HEALTH_DRAIN

Acts on an entity

Temporarily remove `fraction` of the target's overhealth (max health above `baseline`) plus a flat `amount`, restoring it after `duration` ticks. Default target the combat victim.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
fractiona number (decimals allowed)optional0.50 to 1
baselinea number (decimals allowed)optional200 or more
amounta number (decimals allowed)optional00 or more
durationa duration in ticks (20 ticks = 1 second)optional600 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ MAX_HEALTH_DRAIN: { fraction: 0.5, baseline: 20, duration: 60, who: "@Victim" } }

OUTGOING_DEBUFF

Runs inline

Debuff the target's outgoing damage by a percent for a duration in ticks, priced only on their melee hits, their projectile hits, or both (cause). feedback is sent to them on every hit the window actually prices. Non-stacking with itself and with WEAKEN: a re-debuff keeps the stronger window and the later expiry, never the sum. Player targets only.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
percenta number (decimals allowed)required0 or more
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
causeone of: all, melee, projectile which of the target's own hits the nerf pricesoptionalallall | melee | projectile
feedbacktext line sent to the debuffed player on every hit it pricesoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ OUTGOING_DEBUFF: { percent: 50, duration: 80, cause: projectile, feedback: "&2** UNFOCUSED **" } }

PARTICLE_LINE

Acts on the world

Draw a coloured-dust line from each 'who' target's hip to the actor's hip, `density` motes per block, tinted r/g/b (0-255). Pair with who: @AllPlayers{r=N} for a fan of tethers.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Aoe (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
particlea particle name (e.g. FLAME, HEART)required
ra whole numberoptional2550 to 255
ga whole numberoptional2550 to 255
ba whole numberoptional2550 to 255
sizea number (decimals allowed)optional10 or more
densitya number (decimals allowed)optional20 or more
heighta number (decimals allowed)optional1
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PARTICLE_LINE: { particle: REDSTONE, r: 255, g: 255, b: 255, density: 2, who: "@AllPlayers{r=7}" } }

PARTICLE_RING

Acts on the world

Draw a horizontal ring of `count` coloured-dust motes of radius `radius` at `height` above the target's feet (default @Self), tinted r/g/b (0-255). A radius / aura indicator.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
particlea particle name (e.g. FLAME, HEART)required
ra whole numberoptional2550 to 255
ga whole numberoptional2550 to 255
ba whole numberoptional2550 to 255
sizea number (decimals allowed)optional10 or more
radiusa number (decimals allowed)optional30 or more
counta whole numberoptional361 or more
heighta number (decimals allowed)optional1
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PARTICLE_RING: { particle: REDSTONE, r: 255, g: 255, b: 255, radius: 7, count: 60 } }

PERIODIC_DAMAGE

Acts on an entity

Burn the target for amount raw half-hearts every period ticks over duration ticks, attributed to the activator (kill credit, era-combat delivery). replace is a comma-separated set of potion effects the burn converts — each named DoT's DAMAGE is cancelled for the whole window while the effect itself is left on the target, icon and particles intact; only WITHER and POISON tick damage, so any other name converts nothing. feedback is sent to a player target on every pulse, and tick-sound / tick-particle play there too (once per pulse, never deduped against the hit's other cues). Two burns on one victim both run: unlike FREEZE, this is not a refreshed window.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
amounta number (decimals allowed) raw pre-armor half-hearts per pulse (never attack-scaled)required0 or more
perioda duration in ticks (20 ticks = 1 second)optional200 or more
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
replacea potion-effect name (e.g. STRENGTH, POISON) vanilla DoTs this burn converts: their damage ticks are cancelled, the effect stays visibleoptional(empty)
feedbacktext line sent to a player target on every pulseoptional(empty)
tick-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) cue played at the target on every pulse; omit for silenceoptional
tick-volumea number (decimals allowed)optional10 or more
tick-pitcha number (decimals allowed)optional10 or more
tick-particlea particle name (e.g. FLAME, HEART) burst spawned on the target every pulse; omit for noneoptional
tick-particle-counta whole numberoptional10 or more
tick-particle-2a particle name (e.g. FLAME, HEART) a SECOND burst on the same pulse, for a cue built from two particle typesoptional
tick-particle-2-counta whole numberoptional10 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PERIODIC_DAMAGE: { amount: 6, period: 20, duration: 120, replace: WITHER, tick-particle: FLAME, tick-particle-count: 20 } }

PHANTOM_BLOCKS

Acts on the world

Show every nearby player a client-only overlay across the qualifying surface of the (2*radius+1)^2 patch under each target for `duration` ticks: material-ally to the actor and anyone allied to them, material-enemy to everyone else. A column qualifies when its first solid block down from the target's own level is a full opaque cube with a passable cell above it — see-through floors, roofed columns and anything more than a few steps below are skipped. NOTHING is written to the world: the patch blocks no movement, breaks nothing and survives no reload, and the window's close re-sends the ground as it really is then (so a block mined meanwhile is not stranded). A viewer who relogs is served the true chunk by the server. The patch IS the actor's owned ground for the window, so %actor.ownedground% and a STACKING_DOT laid over it both see who is standing in it.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
radiusa whole number blocks each way from the target the overlay coversoptional30 to 8
material-allya block or item name (e.g. DIAMOND, OBSIDIAN) what the actor and their allies are shownoptionalGLOWSTONE
material-enemya block or item name (e.g. DIAMOND, OBSIDIAN) what everyone else is shownoptionalEND_STONE
durationa duration in ticks (20 ticks = 1 second) ticks before the real ground is sent backoptional2001 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PHANTOM_BLOCKS: { radius: 4, material-ally: GLOWSTONE, material-enemy: END_STONE, duration: 100, who: "@Self" } }

POTION_AMP_REDUCE

Acts on an entity

Reduce the LEVEL of a potion effect the target already has by `amount` for `duration` ticks, then restore it. Re-applications during the window are held to the same reduced ceiling, and a reduction that leaves nothing denies the effect for the window. A target without the effect is untouched. Unlike POTION_LOCK this takes only part of the buff, so a Health Boost VI sapped by 2 keeps four of its six tiers.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
effecta potion-effect name (e.g. STRENGTH, POISON)required
amounta whole number levels to sap; at or above the source the effect is deniedoptional11 or more
durationa duration in ticks (20 ticks = 1 second)optional600 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ POTION_AMP_REDUCE: { effect: HEALTH_BOOST, amount: 2, duration: 48, who: "@Victim" } }

POTION_LOCK

Acts on an entity

Strip a potion effect from the target(s) and continuously deny it for `ticks` — any re-application during the window is refused, so it cannot be maintained by a passive buff. Default target self.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
effecta potion-effect name (e.g. STRENGTH, POISON)required
ticksa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ POTION_LOCK: { effect: SPEED, ticks: 100, who: "@Victim" } }

PROC_REBOUND

Runs inline

While worn, give incoming enchant activations a chance to be taken off you and re-run with the roles swapped — the attacker eats their own proc, and it is NOT applied to you for that hit. Gated by the attacking enchant's tier WEIGHT — the number its rung carries in tiers.yml, not a rung index — which must fall in tier-min..tier-max, and by level: this enchant's level must be at least the incoming one's (a levelless source — set, crystal, mask, pet — has no level to compare and answers its whole band). Several worn grades compose — the one whose band reaches the incoming weight with the highest tier-min wins. A maintained PASSIVE marker, armed on equip and lifted on unequip. Player-only.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
chancea number (decimals allowed)required0 to 100
tier-maxa whole numberrequired0 or more
tier-mina whole numberoptional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PROC_REBOUND: { chance: 4, tier-min: 10, tier-max: 70, who: "@Self" } }

PROJECTILE_DRESSING

Runs inline

Ride an entity of type on the projectile this BOW_FIRE activation is loosing — the rider is removed the moment the arrow lands, dies or unloads, and unconditionally after ttl ticks. invulnerable spares it from damage for that many ticks so its own flight cannot kill it; no-pickup stops it hoovering up items in mid-air. One rider per shot: a second PROJECTILE_DRESSING on the same shot replaces the first. fire-ticks lights the ARROW itself, which nothing else can reach — IGNITE takes its targets from a selector and no selector names a shot in flight — and needs no rider, so a flaming arrow is this effect with type omitted. Inert outside a bow shot.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM) rider to seat on the shot; omit to dress the arrow onlyoptional
ttla duration in ticks (20 ticks = 1 second) hard cap on the rider's life; the backstop when nothing reports a landingoptional2000 or more
invulnerablea duration in ticks (20 ticks = 1 second) how long the rider ignores damage (0 = never)optional2000 or more
no-pickuptrue or falseoptionaltrue
fire-ticksa duration in ticks (20 ticks = 1 second) set the ARROW alight for this long (0 = as loosed); no rider neededoptional00 or more
Example{ PROJECTILE_DRESSING: { type: COW, ttl: 200, invulnerable: 200 } }

PROXIMITY_ANNOUNCE

Acts on the world

Fire PROXIMITY_EVENT on every player within radius of each target — never the target themselves — with tag readable as %proximityevent%. The observer's activation carries the target as its victim, so %distance%, %victim.relation% and every %victim.*% read (including %victim.var.<name>%) describes the subject rather than the observer. The tag exists because one trigger carries several unrelated observations: without it an ally-death watcher and an ally-bleeding watcher would each proc on the other's event.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
tagtext what happened, read by an observer as %proximityevent%required
radiusa number (decimals allowed) how far the news carriesoptional71 to 64
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ PROXIMITY_ANNOUNCE: { tag: "bleed", radius: 7, who: "@Victim" } }

REFLECT

Runs inline

Mark the target so a percent of their own outgoing damage is reflected back onto them for a duration in ticks (Hex). Player targets only; default target the combat victim. cap is a flat per-hit ceiling on the health returned (0 = uncapped); feedback is an optional chat line sent to the afflicted on each reflected hit, with {damage} filled in.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
percenta number (decimals allowed)required0 or more
durationa duration in ticks (20 ticks = 1 second)optional800 or more
capa number (decimals allowed) flat per-hit ceiling on the health returned; 0 = uncappedoptional00 or more
feedbacktext per-hit line to the afflicted; {damage} = health returnedoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ REFLECT: { percent: 20, duration: 80, who: "@Victim" } }

REFUND_COOLDOWN

Runs inline

Hand back the cooldown this ability's own gate-6 reservation armed, unless `unless` evaluates non-zero. Author it AFTER the payload whose outcome decides the refusal — a condition cannot, because the fact it would read does not exist until the payload has run. It can only ever release THIS ability's window, and only in the tick the gate reserved it, so a WAIT tier between the payload and the refund silently forfeits it.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
unlessa number (decimals allowed) skip the refund when this evaluates non-zero; the default (0) always refundsoptional0
Example{ REFUND_COOLDOWN: { unless: "%lavapet.filled%" } }

SOUL_COST_EXEMPT

Runs inline

Waive every soul cost charged to each target for `duration`. Both debit paths are covered: a soul-cost ability's gate charge and a REMOVE_SOULS aimed at the holder's own gem. While exempt a soul-cost ability fires even with no gem active, and its escalating price stops advancing — a free activation cannot raise the next one. Each waiver above `feedback-threshold` sends `message` with {souls} filled in, so the small change stays quiet. Re-arming replaces the window rather than extending it.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second) how long the holder's soul costs are waivedrequired1 or more
feedback-thresholda whole number a waiver must EXCEED this many souls to send `message`optional100 or more
messagetext line sent on each waiver above the threshold ({souls} = the amount waived); empty = silentoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SOUL_COST_EXEMPT: { duration: 300, feedback-threshold: 10, message: "&a&lPET (&aTesla&a&l): &a+{souls} souls!", who: "@Self" } }

SOUL_MODE_DISABLE

Acts on an entity

Force the target out of soul mode: pending spends settle to their gems, the pool is dropped and they are told, with the same lines and cues a manual toggle-off sends. A no-op on a target who is not in soul mode. Pair with REMOVE_SOULS to drain the wallet AND flip the switch — draining alone leaves the mode running.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SOUL_MODE_DISABLE: { who: "@Victim" } }

SOUL_TRANSFER

Acts on an entity

Move min(target's souls, cap) souls out of the target's gems and credit the actor floor(ratio x stolen) — the remainder is destroyed, not banked. Unlike REMOVE_SOULS this does not require either party to be in soul mode: it reads the gems themselves. overflow=mint gives the actor a fresh gem carrying the credit when they carry none; overflow=discard loses it. A target with no souls is a silent no-op, so the authored condition decides what a dry victim costs.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
capa whole number the most souls one activation may takerequired1 or more
ratioa number (decimals allowed) fraction of the take the actor keeps; the rest is destroyedoptional1.00 to 1
overflowone of: mint, discard what happens when the actor carries no gem to creditoptionalmintmint | discard
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SOUL_TRANSFER: { cap: 50, ratio: 0.5, who: "@Victim" } }

SPAWNER_YIELD

Runs inline

While worn (PASSIVE): every spawner spawn near the wearer rolls `chance`% to add `extra` copies of the same mob at the same spot. `scope: chunk` counts a wearer standing in the spawn's own chunk; `scope: radius` counts one within `radius` blocks of it. The wearer test is asked PER SPAWN against live worn state, so walking away stops it immediately. Grants do NOT stack — two wearers at one spawner get the stronger one's yield, not both. The added copies spawn as CUSTOM, so they never re-trigger this, but they DO count toward the spawner's nearby-entity cap: a wearer fills that cap sooner and the spawner then idles until the area clears.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
chancea number (decimals allowed) percent of spawns that come out multipliedoptional650 to 100
extraa whole number copies added on a winning rolloptional11 to 8
scopeone of: chunk, radius where the wearer counts as presentoptionalchunkchunk | radius
radiusa number (decimals allowed) blocks, for scope: radius; ignored for scope: chunkoptional160 or more
Example{ SPAWNER_YIELD: { chance: 65, extra: 1, scope: chunk } }

SPAWN_SWARM

Acts on the world

Summon count entities of type evenly spaced on a radius-block ring around the activator, raised rise blocks (chest height), each facing directly outward, with VANILLA AI, auto-removed after ttl ticks. speed < 1 slows each to that fraction of its vanilla AI speed via a per-tick velocity damp (Bat-style AI ignores the speed attribute). cloud: true makes the summons orbit the 1x2x1 pillar directly in front of whoever attacked the activator most recently within cloud-range blocks (vision cloud); with no such attacker they keep vanilla AI. While clouding, the orbit's own pacing overrides speed. name is shown above each summon and effects is a comma-separated potion loadout held for its whole life, each entry optionally levelled with NAME*LEVEL (SPEED*3) — the same styling GUARD and SPAWN_ENTITY take. owner: activator binds every summon to the summoner, so vanilla AI never turns the ring on the player standing inside it, and {OWNER} in name fills with their name.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot.

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM)required
counta whole numberoptional11 or more
radiusa number (decimals allowed)optional0.50 or more
risea number (decimals allowed)optional1.20 or more
ttla duration in ticks (20 ticks = 1 second)optional3000 or more
speeda number (decimals allowed)optional10 to 1
cloudtrue or falseoptionalfalse
cloud-rangea number (decimals allowed)optional161 or more
ownerone of: none, activator activator binds each summon to the summoner: vanilla AI can no longer target them, and {OWNER} fillsoptionalnonenone | activator
nametext custom name shown above each summon; {OWNER} fills in the summoneroptional(empty)
effectsa potion-effect name (e.g. STRENGTH, POISON) potion effects held for each summon's whole lifeoptional(empty)
Example{ SPAWN_SWARM: { type: BAT, count: 10, radius: 0.5, ttl: 300, speed: 0.5 } }

STACKING_DOT

Acts on an entity

Watch each target for `duration` and, every `period` ticks they spend standing on ground the ACTIVATOR placed with `TEMP_BLOCK`, deal `step` x their live stack count as real (pre-armour) damage credited to the activator. Stacks climb one per damaging pulse to `cap` and lapse `stack-ttl` after the last one, so leaving the field pauses the ramp rather than resetting it. The ladder is PER VICTIM and shared across every attacker — two overlapping fields ramp one ladder, not two. The first pulse waits `lead-in`, which is what lets one activation lay its field and its watcher together.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
stepa number (decimals allowed) damage added per live stack, in raw half-heartsoptional20 or more
perioda duration in ticks (20 ticks = 1 second) ticks between pulsesoptional101 or more
capa whole number the most stacks one victim's ladder can reachoptional61 or more
stack-ttla duration in ticks (20 ticks = 1 second) how long a ladder survives after its last pulse — the grace for stepping off the groundoptional601 or more
lead-ina duration in ticks (20 ticks = 1 second) delay before the first pulse reads the groundoptional201 or more
durationa duration in ticks (20 ticks = 1 second) how long each target is watchedoptional2001 or more
messagetext line sent to the victim on each damaging pulse ({damage}, {stacks}); empty = silentoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ STACKING_DOT: { step: 2, period: 10, cap: 6, stack-ttl: 60, lead-in: 20, duration: 200, message: "&c&l* DECAYING [&7-{damage}HP ({stacks} stacks)&c&l] *", who: "@Aoe" } }

STATUS_CLEAR

Runs inline

Remove an active engine status window from each target: TELEBLOCK (the teleport denial), POTION_LOCK (every potion denial held on them), DISARM (the armed disarm window), or FREEZE (a live freeze, with its damage-over-time and both movement modifiers). Unlike CURE this touches no potion EFFECT — it lifts the plugin state that was denying one. Clearing a window nobody holds is a silent no-op, so the authored condition decides what a wasted use costs.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
statusone of: TELEBLOCK, POTION_LOCK, DISARM, FREEZE which engine window to liftrequiredTELEBLOCK | POTION_LOCK | DISARM | FREEZE
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ STATUS_CLEAR: { status: TELEBLOCK, who: "@Self" } }

STRIP_SCROLL

Acts on an entity

Remove one protection scroll marker from a random protected piece of the target's worn armour (+ held item unless hand: false): scroll HOLY strips a Holy White Scroll, WHITE a White Scroll (its guard flag included). A target with no protected piece is a no-op. Rate-limit with the ability's chance gate (the Anubis per-hit percent).

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
scrollone of: HOLY, WHITEoptionalHOLYHOLY | WHITE
handtrue or falseoptionaltrue
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ STRIP_SCROLL: { scroll: HOLY, who: "@Victim" } }

SUMMON_PURGE

Runs inline

Despawn every summon within `radius` blocks of the wearer whose owner the `filter` does not spare, leaving the particle / extra-particle burst where each one stood. The filter is a ladder of exemptions: not-own spares only the wearer's summons, not-own-or-ally also spares an ONLINE ally's, and not-own-or-ally-or-offline additionally spares one whose owner has logged off (an abandoned summon is left to its own TTL). Only summons the engine can attribute to a player are touched — a wild mob, and a summon spawned with owner=none, are not summons anyone owns and are left alone. The removal is a DESPAWN: no drops, no experience and no death event, so nothing the owner hung on a death fires. An invincible summon survives, exactly as it survives DESPAWN and KILL. CONVERT_SUMMON is the inverse — it keeps the summons and flips them onto your side.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
radiusa number (decimals allowed) how far the sweep reaches from the weareroptional151 to 32
filterone of: not-own, not-own-or-ally, not-own-or-ally-or-offline which owners are SPARED, weakest sweep lastoptionalnot-own-or-ally-or-offlinenot-own | not-own-or-ally | not-own-or-ally-or-offline
particlea particle name (e.g. FLAME, HEART) burst left where each purged summon stood; omit for noneoptional
particle-counta whole numberoptional10 or more
particle-spreada number (decimals allowed) per-axis spread of the burst (0 = a point)optional00 or more
extra-particlea particle name (e.g. FLAME, HEART) second burst layered on the first; omit for noneoptional
extra-particle-counta whole numberoptional10 or more
extra-particle-spreada number (decimals allowed)optional00 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SUMMON_PURGE: { radius: 15, filter: not-own-or-ally-or-offline, particle: LARGE_SMOKE, particle-count: 10, particle-spread: 0.3, extra-particle: SPELL_WITCH, extra-particle-count: 12, extra-particle-spread: 0.7 } }

SUMMON_REBIND

Acts on an entity

Replace each target summon the activator OWNS with a fresh one of type, rise blocks above it: the old body is removed silently (no death, no drops, no kill credit) and the replacement spawns at full health with a restarted ttl. health, speed, name and effects are GUARD's loadout params. A summon the activator does not own is skipped unless steal is set, which widens the precondition from 'mine' to 'somebody's' — the target must still be a tracked summon, so a farmed wild mob can never be turned into a free top-tier guardian. steal-message is the only place both names exist at once, which is why the broadcast rides the effect instead of a MESSAGE line. CONVERT_SUMMON rebinds ownership in place; this replaces the body.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM)required
ttla duration in ticks (20 ticks = 1 second)optional6000 or more
nametext custom name shown above the replacement; {OWNER} fills in the summoneroptional(empty)
healtha number (decimals allowed) starting (and maximum) health; 0 keeps the vanilla oneoptional00 or more
speeda number (decimals allowed) movement-speed multiplier; 0 keeps the vanilla oneoptional00 or more
effectsa potion-effect name (e.g. STRENGTH, POISON) potion effects held for the replacement's whole lifeoptional(empty)
risea number (decimals allowed) blocks above the old body to place the replacementoptional20 to 8
stealtrue or false also take summons owned by SOMEONE ELSE (a summon it must still be — never a wild mob)optionalfalse
steal-messagetext steal only: broadcast near the replacement; {FROM} is the robbed owner, {OWNER} the thiefoptional(empty)
steal-radiusa number (decimals allowed) how far the steal-message carriesoptional240 to 64
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SUMMON_REBIND: { type: IRON_GOLEM, ttl: 600, health: 90, name: "&b&l{OWNER}'s Guardian" } }

SUPPRESS_IMMUNE

Runs inline

Make the target(s) immune to suppression (DISABLE_ENCHANT/GROUP/TYPE) while worn — a maintained PASSIVE flag, armed on equip and lifted on unequip. An optional chance (default 100) makes it a per-suppression roll instead of absolute. Player-only.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
chancea whole numberoptional1000 to 100
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SUPPRESS_IMMUNE: { chance: 4, who: "@Self" } }

SUPPRESS_INCOMING

Runs inline

Make each target IMMUNE to abilities aimed at them: for `duration` ticks, an ability whose enchant/group/type (or, with scope KIND, whose effect head) matches `key` is blocked whenever it lands on the holder. Aimed at them directly it is stopped outright; when they are merely one of several bodies a chain or area effect resolved onto, they alone are skipped and the rest still take it. `chance` rolls per incoming target application. The mirror of SUPPRESS, which silences what its target DOES; this silences what is done TO them, including the opening proc a defensive SUPPRESS can never reach. Re-arming extends the window, so a PASSIVE may hold it open. The consumed-* lines fill {ATTACKER} with whoever armed the window — here, the protected holder — and {VICTIM} with the activator it blocked.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
scopeone of: ENCHANT, GROUP, TYPE, KINDrequiredENCHANT | GROUP | TYPE | KIND
keytextrequired
durationa duration in ticks (20 ticks = 1 second)optional2000 or more
chancea whole number percent rolled per incoming target application; 100 is absoluteoptional1001 to 100
consumed-message-actortext line to the protected holder, when it blocksoptional(empty)
consumed-message-victimtext line to the blocked activator, when it blocksoptional(empty)
consumed-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) cue played at the block; omit for silenceoptional
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ SUPPRESS_INCOMING: { scope: GROUP, key: lifesteal, duration: 100, who: "@Self" } }

SWAP_POSITION

Runs inline

Castling (reforges): lock the enemy in your crosshair (range, line of sight), channel for channel ticks with audible countdown cues and a warning to the victim, then both of you swap positions — velocities zeroed, each keeps their own facing. Line of sight broken, range + slack exceeded, a world change or a death aborts it; the use stays spent. Reforge-service-owned: this effect emits no intent of its own.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
rangea number (decimals allowed) crosshair target acquisition + max channel distanceoptional121 or more
channela duration in ticks (20 ticks = 1 second) channel length (the 2-second countdown)optional400 or more
check-perioda whole number LOS/validity re-check cadence, ticksoptional21 to 10
cue-perioda duration in ticks (20 ticks = 1 second) countdown tick-cue cadenceoptional100 or more
range-slacka number (decimals allowed) extra blocks past range before a drift abortsoptional20 or more
Example{ SWAP_POSITION: { range: 12, channel: 40 } }

TELEPORT_BEHIND

Acts on an entity

Teleport the mover(s) `distance` blocks behind the reference (of: VICTIM — the attacker on a DEFENSE trigger — or ACTOR), facing as it faces. Unsafe (blocked / wall between) → onFail ONTOP lands on the reference, NONE cancels.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
ofone of: VICTIM, ACTORoptionalVICTIMVICTIM | ACTOR
distancea number (decimals allowed)optional10 or more
onFailone of: ONTOP, NONEoptionalONTOPONTOP | NONE
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TELEPORT_BEHIND: { of: VICTIM, distance: 1, onFail: ONTOP, who: "@Self" } }

TEMP_BLOCK

Acts on the world

Place a temporary block shape that reverts after `ticks`: shape POINT / FOOTPRINT (radius) / COLUMN (height, ahead in the target's facing) / BOX (width × height × depth filled volume horizontally centred on the target — the ADR-0052 Spider webs), at feet level + dy. airOnly only replaces air (safe placement); a non-airOnly FOOTPRINT replaces only the solid ground under the feet (never air, so a trail can't scaffold); other shapes replace anything and restore on revert. A radius-0 FOOTPRINT trails as a snake — consecutive stamps join into a gapless, 4-connected footprint path even at sprint speed and on diagonals. Give material2/3/4 to place a mixed palette: each block independently picks a material from a deterministic per-block hash of its coordinates — a noisy, random-looking scatter (re-placing the same block always picks the same material). A BOX is always single-material (palette[0]). fill-chance below 100 places only that percent of the shape's columns, for a ragged, partial field instead of a solid one; the choice is per column and stable for a given coordinate, so re-stamping the same ground extends the same field rather than filling in its holes. A radius-0 FOOTPRINT trail ignores it — a snake with gaps is not a path.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
shapeone of: POINT, FOOTPRINT, COLUMN, BOXoptionalPOINTPOINT | FOOTPRINT | COLUMN | BOX
materiala block or item name (e.g. DIAMOND, OBSIDIAN)required
material2a block or item name (e.g. DIAMOND, OBSIDIAN)optional
material3a block or item name (e.g. DIAMOND, OBSIDIAN)optional
material4a block or item name (e.g. DIAMOND, OBSIDIAN)optional
ticksa duration in ticks (20 ticks = 1 second)optional600 or more
radiusa whole numberoptional00 to 5
widtha whole numberoptional31 to 8
heighta whole numberoptional11 to 8
deptha whole numberoptional31 to 8
aheada whole numberoptional00 to 8
dya whole numberoptional0-4 to 4
airOnlytrue or falseoptionaltrue
fill-chancea number (decimals allowed) percent of columns actually placed — a partial, scattered fieldoptional1000 to 100
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TEMP_BLOCK: { shape: COLUMN, material: ICE, height: 2, ahead: 1, ticks: 60, who: "@Attacker" } }

TRAP_BREAK

Runs inline

Break every confining trap currently on the wearer — encasing webs, web boxes, cage cells — restoring the trapped blocks to their true originals immediately. Area floors and trails are unaffected. Works through ability silence (it is a block restore, not an ability negation).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
whiff-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) played (low-pitched) when nothing confining was found — a silent no-op is indistinguishable from a broken featureoptionalBLOCK_ANVIL_LAND
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TRAP_BREAK: { } }

TURRET_RING

Acts on the world

Stand `count` invulnerable `type` emplacements on open ground, evenly spaced on a ring-radius ring around each target, for `ttl` ticks. A site with no open ground, or one the protection gate denies the actor, is SKIPPED (logged) — the ring is gated spot by spot, not once for the cast. After `initial-delay` ticks each emplacement fires a `projectile` at `projectile-speed` toward the nearest body the `filter` admits within acquire-range that has line of sight to it, then re-fires every period-min..period-max ticks (a fresh draw per volley, so a ring never fires as one salvo). A shot that strikes a body runs the ACTOR's IMPACT abilities on it ONCE — that payload is the whole damage; emplacements take no damage and neither they nor their shots ever break blocks. The `spawn-` cue plays where each one lands (plus a damage-free lightning flash unless spawn-lightning: false) and the `despawn-` cue where it expires. Era note: a fireball-family projectile is propelled with setDirection, whose scaling changed in the 1.21 line — the shot flies everywhere, but reads faster there than the authored speed.

How it runs: Touches blocks/world at a location (breaks, particles, spawns). Runs safely on the region that owns that spot. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typea mob/entity type (e.g. WOLF, IRON_GOLEM) what each emplacement isoptionalENDER_CRYSTAL
counta whole number how many emplacements the ring tries to placeoptional31 to 16
ring-radiusa number (decimals allowed) blocks from the actor to each emplacementoptional70 or more
ttla duration in ticks (20 ticks = 1 second) how long the ring stands before it despawnsoptional2001 or more
acquire-rangea number (decimals allowed) how far an emplacement looks for a targetoptional80 or more
initial-delaya duration in ticks (20 ticks = 1 second) ticks before the FIRST volley — the arming windowoptional300 or more
period-mina duration in ticks (20 ticks = 1 second) shortest gap between volleysoptional81 or more
period-maxa duration in ticks (20 ticks = 1 second) longest gap between volleysoptional131 or more
filterone of: ALL, PLAYERS, MONSTERS, MOBS, ENEMIES, ALLIES who an emplacement will shoot atoptionalENEMIESALL | PLAYERS | MONSTERS | MOBS | ENEMIES | ALLIES
projectilea mob/entity type (e.g. WOLF, IRON_GOLEM) what an emplacement firesoptionalWITHER_SKULL
projectile-speeda number (decimals allowed) how hard each shot is launchedoptional0.060 or more
spawn-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) cue as the ring lands; omit for silenceoptional
spawn-volumea number (decimals allowed)optional10 or more
spawn-pitcha number (decimals allowed)optional10 or more
spawn-particlea particle name (e.g. FLAME, HEART) burst at each emplacement; omit for noneoptional
spawn-particle-counta whole numberoptional10 or more
spawn-particle-spreada number (decimals allowed)optional00 or more
spawn-lightningtrue or false flash a damage-free lightning visual at each emplacementoptionaltrue
despawn-sounda sound name (e.g. ENTITY_GENERIC_EXPLODE) cue as an emplacement expires; omit for silenceoptional
despawn-volumea number (decimals allowed)optional10 or more
despawn-pitcha number (decimals allowed)optional10 or more
despawn-particlea particle name (e.g. FLAME, HEART) burst as an emplacement expires; omit for noneoptional
despawn-particle-counta whole numberoptional160 or more
despawn-particle-spreada number (decimals allowed)optional0.750 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ TURRET_RING: { type: ENDER_CRYSTAL, count: 5, ring-radius: 8, ttl: 300, acquire-range: 11, initial-delay: 30, period-min: 8, period-max: 13, filter: ENEMIES, projectile: WITHER_SKULL, projectile-speed: 0.065, spawn-sound: ENTITY_GHAST_SHOOT, spawn-volume: 3.0, spawn-pitch: 0.9, spawn-particle: FLAME, spawn-particle-count: 24, spawn-lightning: true, despawn-particle: SPELL_WITCH, despawn-particle-count: 16, despawn-particle-spread: 0.75, who: "@Self" } }

VANISH

Acts on an entity

Hide the target from EVERY online player for `duration` ticks — a packet-level hide, so worn armour vanishes with the body. The window breaks early once `break-hits` of the target's own hits LAND (0 = never); damage they take never spends one, so hiding survives being hit but not hitting back. A player who joins mid-window is re-synced, so a vanish cannot be beaten by relogging. While it is live `var` reads 1, and it drops to 0 the moment it ends by any route (timer, hit, quit). A re-proc REPLACES the window: fresh duration, fresh hit allowance. `end-message` is sent to the target once the window ends, whichever route ended it — exactly once, never on the refusal path.

How it runs: Acts on a living target (heal, ignite, potion, teleport). Runs on whoever the effect is aimed at. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second) ticks the target stays hidden from every playeroptional301 or more
break-hitsa whole number landed outgoing hits the window absorbs before it breaks; 0 = only the timer ends itoptional10 or more
vartext player variable reading 1 while the window is live; empty = noneoptional(empty)
end-messagetext line sent to the target when the window ends, by ANY route; empty = silentoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ VANISH: { duration: 60, break-hits: 2, end-message: "&4&l* Feign Death - UNVANISHED *", who: "@Self" } }

VIEWER_HIDE

Runs inline

Hide the target player from the attacker (viewer=attacker) or from every online player (viewer=all) for duration ticks, restoring them at the window's close. A packet-level hide: worn armour vanishes with the body, unlike an INVISIBILITY potion. A relog on either side ends it early. viewer=attacker with no attacker in scope hides nothing.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
durationa duration in ticks (20 ticks = 1 second)optional200 or more
viewerone of: attacker, alloptionalattackerattacker | all
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ VIEWER_HIDE: { duration: 60, viewer: attacker } }

VULNERABILITY

Runs inline

Mark each player target to take `percent`% more damage from EVERY source (fall, fire and the void included) for `duration`. NON-STACKING: a re-mark keeps the stronger window and the later expiry, never the sum. The contribution is additive with the victim's own reductions, so armour still counts — this is a fragility mark, not a bypass.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
percenta number (decimals allowed) extra incoming damage, e.g. 100 for doublerequired0 or more
durationa duration in ticks (20 ticks = 1 second) how long the mark holdsoptional601 or more
hit-messagetext line sent to the marked player on each hit the mark amplifies ({damage} = the hit); empty = silentoptional(empty)
expiry-messagetext line sent when the mark lapses; empty = silentoptional(empty)
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ VULNERABILITY: { percent: 100, duration: 60, hit-message: "&cmarked (-{damage})", expiry-message: "&7mark off", who: "@Victim" } }

WARD

Runs inline

Ward the target player(s) with a typed guard flag for duration ticks: mob-target (mobs don't aggro unless provoked), invsee (others can't open their inventory), near (hidden from the proximity listing), splash-heal (healing splash potions boosted by amount%).

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Self (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
typeone of: mob-target, invsee, near, splash-healrequiredmob-target | invsee | near | splash-heal
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
amounta number (decimals allowed)optional0
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ WARD: { type: splash-heal, duration: 100, amount: 50 } }

WATER_SPEED

Runs inline

Underwater movement boost while worn (PASSIVE/HELD): efficiency feeds the vanilla water_movement_efficiency attribute through one reconciled plugin-owned modifier (1.21+ only; older servers and 1.8.9 keep everything else and skip the boost). 0.09 ~ +10%, 0.14 ~ +15%, 0.20 ~ +20%, 0.26 ~ +25% swim speed.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop.

ArgumentWhat to putRequired?DefaultAllowed
efficiencya number (decimals allowed)required0 to 1
Example{ WATER_SPEED: { efficiency: 0.09 } }

WEAKEN

Runs inline

Debuff the target's outgoing damage by a percent for a duration in ticks (non-stacking). Player targets only; default target the combat victim.

How it runs: Runs immediately, in line with the event that triggered it (e.g. shaping the combat hit). No extra thread hop. Default target: who -> @Victim (override in the effect token).

ArgumentWhat to putRequired?DefaultAllowed
percenta number (decimals allowed)required0 or more
durationa duration in ticks (20 ticks = 1 second)optional1000 or more
each-ifcondition Per-target filter: each resolved target is tested with the %target.*% subject bound, and a target that fails is dropped from THIS effect only. It cannot un-activate the ability, release its cooldown or refund its souls.optional
each-chancea number (decimals allowed) Per-target chance, sugar for each-if: "%target.roll% < <this>" over the ONE draw each body carries for the whole ability — so this row and its complement partition instead of rolling twice. Declaring each-if too ANDs them.optional0 to 100
each-cooldowna duration in ticks (20 ticks = 1 second) Per-target cooldown in ticks: a target hit within its own window is dropped. Keyed on the ability's cooldown scope, so declaring it without one is a load error.optional0 or more
Example{ WEAKEN: { percent: 15, duration: 100, who: "@Victim" } }

See also