Meta verbs
Verbs that combine, branch, randomise, delay or relocate other actions, including area_of_effect.
neoorigins:nothing
Explicit no-op. Useful as the default branch of if_else or for placeholder authoring. Takes no fields.
Example:
{ "type": "neoorigins:nothing" }
neoorigins:and (alias neoorigins:all_of)
Runs a sequence of actions in order against the same target. all_of is Apoli 2.9+’s rename of the and meta action: imported packs using origins:all_of / apoli:all_of dispatch here unchanged (there is no any_of action).
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
actions | array of action | no | [] | Actions to run in order. A single action object is also accepted; absent means the action does nothing |
Example:
{ "type": "neoorigins:and", "actions": [
{ "type": "neoorigins:heal", "amount": 2.0 },
{ "type": "neoorigins:play_sound", "sound": "minecraft:entity.player.levelup" }
] }
neoorigins:if_else
Conditional dispatch. If condition is absent or not an object, it’s treated as always-false (CompatPolicy.FALSE_CONDITION), so the else_action runs.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
condition | entity condition | no | FALSE | Guard |
if_action | action | no | noop | Runs when condition passes |
else_action | action | no | noop | Runs when condition fails |
Example:
{ "type": "neoorigins:if_else",
"condition": { "type": "neoorigins:submerged_in", "fluid": "minecraft:water" },
"if_action": { "type": "neoorigins:gain_air", "amount": 40 },
"else_action": { "type": "neoorigins:nothing" } }
neoorigins:if_else_list
First-match-wins chain of (condition, action) pairs. Stops after the first matching branch.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
actions | array | no | [] | Each entry has condition + action. An entry whose condition is absent or not an object never matches. A lone entry object is accepted as a one-entry list |
Example:
{ "type": "neoorigins:if_else_list", "actions": [
{ "condition": { "type": "neoorigins:in_rain" }, "action": { "type": "neoorigins:heal", "amount": 2 } },
{ "condition": { "type": "neoorigins:daytime" }, "action": { "type": "neoorigins:set_on_fire", "ticks": 40 } }
] }
neoorigins:chance
Probabilistic dispatch. Uses the target’s RNG source.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
chance | float [0,1] | no | 0.5 | Probability of running the inner action |
action | action | no | noop | Inner action |
Example:
{ "type": "neoorigins:chance", "chance": 0.2, "action": { "type": "neoorigins:play_sound", "sound": "minecraft:entity.cat.ambient" } }
neoorigins:choice
Picks one action from a weighted list and runs it. Each actions entry is a wrapper, not an action: Apoli’s element key holds the action (action is accepted as a synonym; element wins if both are present) and weight sets its relative chance. A bare action written directly as an entry has neither key, so that branch does nothing and a warning is logged.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
actions | array of {element, weight} | yes | — | Candidate entries; one is picked weighted-randomly. weight is an int, default 1. Weights are not validated: keep them positive, since a total of 0 makes the action fail when it runs |
Example:
{ "type": "neoorigins:choice", "actions": [
{ "weight": 3, "element": { "type": "neoorigins:heal", "amount": 2.0 } },
{ "weight": 1, "element": { "type": "neoorigins:set_on_fire", "ticks": 40 } }
] }
neoorigins:delay
Schedules the inner action to run N ticks in the future via CompatTickScheduler.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
ticks | int | no | 1 | Tick delay |
action | action | no | noop | Action to fire at currentTick + ticks |
Example:
{ "type": "neoorigins:delay", "ticks": 40, "action": { "type": "neoorigins:extinguish" } }
Server-side only.
neoorigins:offset
Positional wrapper: runs its inner action with the current context block position shifted by x/y/z blocks — Apoli’s positional offset verb. When the dispatch context resolves a block position (block_use / bonemeal events, raycast block hits, block_action_at, the area_of_effect block fan-out), the shifted position is published as the context block for the inner action, so block verbs (grow, transform_block, execute_command with ~ ~ ~) act on the shifted block. When no block context resolves, or all three offsets are 0, the inner action runs unchanged (transparent pass-through).
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
action | action | no | noop | Inner action to run at the offset block position |
x | int | no | 0 | X offset in blocks (applied to the context block position) |
y | int | no | 0 | Y offset in blocks (applied to the context block position) |
z | int | no | 0 | Z offset in blocks (applied to the context block position) |
Example: bonemeal the block two above the one you hit
{ "type": "neoorigins:offset", "y": 2, "action": { "type": "neoorigins:grow" } }
neoorigins:block_action_at
Runs block_action at the entity’s current block position, publishing that block position to the dispatch context so nested verbs (e.g. execute_command with ~ ~ ~) resolve to the block centre.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
block_action | action | no | noop | Action run at the entity’s block position |
Example:
{ "type": "neoorigins:block_action_at", "block_action": { "type": "neoorigins:set_block", "block": "minecraft:torch" } }
neoorigins:area_of_effect
Iterates every living entity within the radius and runs entity_action against each. Mobs and players are hit when entity_action uses an entity-general verb: damage, heal, apply_effect, clear_effect, set_on_fire, add_velocity, spawn_particles, shear, dye, … (and an and of only those). A player-only verb (e.g. launch, set_block) still runs on player targets only and skips mobs. Mob targets are also subject to the friendly-fire protections in gameplay.toml (pets/minions/villagers/iron golems/animals).
entity_condition filters which entities are affected. When it uses an entity-general condition (entity_type incl. a #tag group, in_tag, target_group, health, relative_health, has_effect/status_effect, on_fire, living, nbt, in_block_anywhere, equipped_item, constant, and and/or/not of those), it filters both mobs and players, so an aura can restrict itself to players only (entity_type: minecraft:player), a tag group, a specific mob, etc. A player-only condition verb only gates player targets (mobs bypass it, as before).
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
radius | float | no | 16.0 for entities, 2.0 for the block sweep | Reach of the sweep. A value you write applies to both sweeps; the block sweep caps it at 16 |
shape | string or object | no | "sphere" | "cube" skips the distance cull (plain AABB); anything else culls by squared distance. May also be an object: { "type": "cone", "angle": 60 } additionally restricts the sphere to a cone of that full width (degrees) around the caster’s look direction |
include_source | bool | no | see below | Whether the source entity is included |
include_target | bool | no | see below | Apoli spelling of include_source, read only when include_source is absent |
entity_action | action | no | noop | Runs per affected entity (mobs + players for entity-general verbs) |
bientity_action | bientity action | no | — | Apoli form: runs as (caster, affected entity). Takes precedence over entity_action |
entity_condition | condition | no | always-true | Target filter; entity-general conditions filter mobs + players (see above) |
bientity_condition | bientity condition | no | always-true | Apoli form: filter evaluated as (caster, affected entity) |
block_action | action | no | — | Block fan-out (see below): runs at every block position in radius, each published as the context block |
block_condition | block condition | no | matches all | Filter for the block fan-out: only positions matching it run block_action. Only used with block_action |
Apoli bientity_action form. Apoli’s own area_of_effect names its per-target action bientity_action and its filter bientity_condition, both taking the (actor, target) pair, usually wrapped in target_action / target_condition. Both spellings are accepted. Two defaults differ between the forms: the caster is included by default with entity_action (long-standing behaviour) but excluded by default with bientity_action, matching Apoli; otherwise a cone attack damages the player who cast it. A bientity_condition that cannot be evaluated against a non-player entity skips the entity fan-out entirely and is reported in the compat summary, since silently dropping an exclusion filter would hit bystanders it was written to spare.
Block fan-out (Apoli block_action form). When block_action is set, the action additionally sweeps every block position within radius, centered on the context block position when one resolves (raycast hit, block_use/bonemeal event, block_action_at) and on the source’s feet otherwise. Each position is published as the context block, so nested block verbs (grow/bonemeal, transform_block, offset, execute_command) self-resolve. block_condition gates each position; shape: "sphere" culls by distance as for entities. With no radius written the block sweep covers 2 blocks (33 positions) rather than borrowing the entity sweep default of 16, which is 17,077 positions per activation. A radius you do write applies to both sweeps, and the block sweep caps it at 16. Apoli packs use small radii here (e.g. 2).
Example: burn nearby mobs but never other players
{ "type": "neoorigins:area_of_effect",
"radius": 8.0,
"shape": "sphere",
"include_source": false,
"entity_condition": {
"type": "neoorigins:not",
"condition": { "type": "neoorigins:entity_type", "entity_type": "minecraft:player" }
},
"entity_action": { "type": "neoorigins:set_on_fire", "ticks": 40 } }
Example: affect players only (e.g. a support aura)
{ "type": "neoorigins:area_of_effect",
"radius": 8.0,
"entity_condition": { "type": "neoorigins:entity_type", "entity_type": "minecraft:player" },
"entity_action": { "type": "neoorigins:apply_effect", "effect": "minecraft:regeneration", "duration": 60 } }
Example (block fan-out): bonemeal every grass block in a 2-block sphere
{ "type": "neoorigins:area_of_effect",
"radius": 2.0,
"shape": "sphere",
"block_condition": { "type": "neoorigins:block", "block": "minecraft:grass_block" },
"block_action": { "type": "neoorigins:grow" } }
Example (a breath attack): a 60° cone in front of the caster, sparing players
{ "type": "neoorigins:area_of_effect",
"radius": 5.0,
"shape": { "type": "cone", "angle": 60 },
"bientity_condition": {
"type": "neoorigins:target_condition",
"condition": { "type": "neoorigins:entity_type", "entity_type": "minecraft:player", "inverted": true }
},
"bientity_action": {
"type": "neoorigins:target_action",
"action": { "type": "neoorigins:damage", "amount": 4 }
} }