NeoOrigins Power Types Reference

All powers share three optional metadata fields:

Field Type Description
name string or {"text":"..."} / {"translate":"..."} Display name shown in the origin selection screen. A plain string is treated as a translation key.
description string or {"text":"..."} / {"translate":"..."} Description shown below the power name. Same resolution rules as name.
hidden bool (default false) When true, this power is excluded from the origin info panel. The mechanical effect still applies — only the display row is suppressed. Useful for purely-internal flag/glue powers (e.g. neoorigins:toggle, on-hit setters wired under a multiple).

If neither name nor description is present, NeoOrigins falls back to the lang key convention: power.<namespace>.<path>.name / power.<namespace>.<path>.description


neoorigins:attribute_modifier

Adds or multiplies a player attribute while the origin is active. Optionally gated on an environment condition, an equipped-item condition, or both (AND).

Field Type Required Default Description
attribute Identifier yes Attribute to modify, e.g. minecraft:generic.movement_speed
amount double yes Amount to add or multiply
operation string no add_value add_value, add_multiplied_base, or add_multiplied_total
condition string no Environment gate: in_water, on_land, or in_lava. Tick-driven apply/remove.
equipment_condition object no Equipment gate (see below). Tick-driven apply/remove.
location_condition object no Location gate — dimension / biome / structure (see below). Tick-driven apply/remove.

Operations:

  • add_value — flat addition to base value
  • add_multiplied_base — adds base * amount (e.g. -0.1 = 10% slower)
  • add_multiplied_total — multiplies total after all other modifiers

equipment_condition object:

Field Type Required Description
slot string yes One of mainhand, offhand, head, chest, legs, feet, body
item Identifier no Exact item ID to match (e.g. minecraft:iron_helmet)
tag Identifier no Item tag to match (e.g. minecraft:helmets)

If both item and tag are given, either match satisfies the condition (OR). If neither is given, any non-empty stack in the slot counts as a match. When multiple of condition / equipment_condition / location_condition are set, all must hold for the modifier to apply.

location_condition object:

Field Type Required Description
dimension Identifier no Match only in this dimension, e.g. minecraft:the_end
biome Identifier no Match only in this specific biome, e.g. minecraft:plains
biome_tag Identifier no Match only in biomes with this tag, e.g. minecraft:is_forest
structure Identifier no Match only inside this structure, e.g. minecraft:end_city
structure_tag Identifier no Match only inside structures with this tag, e.g. minecraft:on_ocean_monument_maps

All fields are optional and combine with AND. So { "dimension": "minecraft:the_end", "structure": "minecraft:end_city" } is “only when standing inside an End City in The End.” Structure membership is evaluated server-side via ServerLevel.structureManager().

Example — 8 flat armor (unconditional):

{
  "type": "neoorigins:attribute_modifier",
  "attribute": "minecraft:generic.armor",
  "amount": 8.0,
  "operation": "add_value",
  "name": "Shell",
  "description": "Has permanent natural armor."
}

Example — slower on land only:

{
  "type": "neoorigins:attribute_modifier",
  "attribute": "minecraft:generic.movement_speed",
  "amount": -0.25,
  "operation": "add_multiplied_base",
  "condition": "on_land",
  "name": "Landwalker",
  "description": "Moves slower while out of water."
}

Example — +1 attack when wearing any helmet:

{
  "type": "neoorigins:attribute_modifier",
  "attribute": "minecraft:generic.attack_damage",
  "amount": 1.0,
  "equipment_condition": {
    "slot": "head",
    "tag": "minecraft:helmets"
  },
  "name": "Helm of Valor",
  "description": "Empowered while helmeted."
}

Example — +2 armor only inside End Cities:

{
  "type": "neoorigins:attribute_modifier",
  "attribute": "minecraft:generic.armor",
  "amount": 2.0,
  "location_condition": {
    "dimension": "minecraft:the_end",
    "structure": "minecraft:end_city"
  },
  "name": "Void Ward",
  "description": "Armored while within the towers of the End."
}

Useful attributes:

  • minecraft:movement_speed — walk speed (base ≈ 0.1)
  • minecraft:water_movement_efficiency — swim speed boost (0.0–1.0, stacks with Depth Strider)
  • minecraft:armor — armor points
  • minecraft:armor_toughness — armor toughness
  • minecraft:attack_damage — melee damage
  • minecraft:attack_speed — attack cooldown speed
  • minecraft:max_health — max HP
  • minecraft:fall_damage_multiplier — fall damage scale
  • minecraft:mining_efficiency — mining speed bonus
  • minecraft:oxygen_bonus — extends underwater air (like Respiration)

Note: 1.21+ uses short-form IDs (minecraft:movement_speed). The legacy minecraft:generic.movement_speed format still parses via fallback.


neoorigins:status_effect

Deprecated in 2.0 — this type is now an alias for neoorigins:persistent_effect. See MIGRATION.md.

Continuously applies a potion effect while the origin is active. The effect is refreshed every tick and removed when the origin is revoked.

Field Type Required Default Description
effect Identifier yes Effect ID, e.g. minecraft:strength
amplifier int no 0 Effect level (0 = level I, 1 = level II, …)
ambient bool no true Whether the effect is ambient (reduced particle visibility)
show_particles bool no false Whether to show particles

Example — permanent Strength I:

{
  "type": "neoorigins:status_effect",
  "effect": "minecraft:strength",
  "amplifier": 0,
  "name": "Brute Strength",
  "description": "Permanently empowered by inner fire."
}

Common effects: minecraft:strength, minecraft:speed, minecraft:haste, minecraft:regeneration, minecraft:resistance, minecraft:fire_resistance, minecraft:water_breathing, minecraft:night_vision, minecraft:jump_boost, minecraft:slow_falling


neoorigins:prevent_action

Prevents a specific harmful action or event from affecting the player.

Field Type Required Default Description
action string yes The action to prevent (see values below)

Action values:

Value What it prevents
fire All fire and lava damage
fall_damage All fall damage
drown Drowning damage
freeze Freeze damage from powder snow
sprint_food Sprinting no longer drains extra hunger
chestplate_equip Prevents wearing chestplate armor
eye_damage Prevents projectile hits to the eye
water_damage Prevents water/rain contact damage
swim Prevents swimming (velocity-sinks the player in water)
sleep Prevents sleeping (bed use returns a “no sleep” message). Sleepless origins should pair this with modify_player_spawn if they still want bed interactions to set respawn.
elytra Prevents elytra flight (player is stopped from gliding each tick)

Example — fire immunity:

{
  "type": "neoorigins:prevent_action",
  "action": "fire",
  "name": "Fire Immunity",
  "description": "Immune to fire and lava."
}

neoorigins:modify_lava_speed

Modifies the player’s movement speed while submerged in lava. Uses the NumericModifierRegistry system consumed by LivingEntityLavaSpeedMixin.

Field Type Required Default Description
operation string no "addition" "addition" or "multiply"
value double yes Amount to add or multiply. Vanilla lava-swim factor is 0.02; an addition of 0.4 gives roughly walking speed.

Example — strider-like lava swimming:

{
  "type": "neoorigins:modify_lava_speed",
  "operation": "addition",
  "value": 0.4,
  "name": "Molten Stride",
  "description": "Swims through lava at normal walking speed."
}

neoorigins:modify_damage

Multiplies damage dealt or received, optionally filtered to a specific damage type and, for direction: out, restricted to a target entity group.

Field Type Required Default Description
direction string no in in (damage received) or out (damage dealt)
multiplier float no 1.0 Damage multiplier (e.g. 2.0 = double, 0.5 = half)
damage_type string no (all types) Optional vanilla damage type to filter, e.g. drown, fire, fall
target_group string no (any) Outgoing only. Restrict to targets in this entity group: undead, arthropod, illager, aquatic. Resolved as the vanilla minecraft:<group> entity-type tag.

Example — double incoming water damage:

{
  "type": "neoorigins:modify_damage",
  "direction": "in",
  "multiplier": 2.5,
  "damage_type": "drown",
  "name": "Water Weakness",
  "description": "Takes extra damage from water."
}

Example — bonus fire damage dealt:

{
  "type": "neoorigins:modify_damage",
  "direction": "out",
  "multiplier": 1.5,
  "damage_type": "fire",
  "name": "Fire Mastery",
  "description": "Deals extra fire damage."
}

Example — +50% damage to undead:

{
  "type": "neoorigins:modify_damage",
  "direction": "out",
  "multiplier": 1.5,
  "target_group": "undead",
  "name": "Smite",
  "description": "Strikes the undead harder."
}

Common damage types: fire, in_fire, lava, drown, fall, freeze, magic, wither, lightning_bolt, fly_into_wall, generic

Matching: damage types are matched against both the vanilla message ID (camelCase, e.g. flyIntoWall) and the registry key path (snake_case, e.g. fly_into_wall). Either convention works. Tag-based filters like #minecraft:is_fire match all damage types in that tag.


neoorigins:flight

Grants the player creative-style free flight. The player can fly freely at any time without an elytra.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:flight",
  "name": "Natural Flight",
  "description": "Can fly freely without an elytra."
}

neoorigins:night_vision

Deprecated in 2.0 — this type is now an alias for neoorigins:persistent_effect. See MIGRATION.md.

Grants permanent Night Vision at full strength (no ambient effect, no particles). The effect is refreshed every tick.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:night_vision",
  "name": "Dark Vision",
  "description": "Can see clearly in total darkness."
}

neoorigins:water_breathing

Grants permanent Water Breathing. The player never loses air while underwater.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:water_breathing",
  "name": "Gills",
  "description": "Can breathe underwater indefinitely."
}

neoorigins:no_slowdown

Prevents the player from being slowed down by specific blocks (cobwebs, berry bushes, etc.).

Field Type Required Default Description
block_tag string no (all slowdown blocks) Restrict immunity to blocks in this tag

Example — immune to all block slowdown:

{
  "type": "neoorigins:no_slowdown",
  "name": "Unimpeded",
  "description": "Not slowed by cobwebs or dense foliage."
}

neoorigins:wall_climbing

Allows the player to cling to and climb any solid wall surface, similar to spiders. Fall damage is suppressed while climbing.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:wall_climbing",
  "name": "Wall Climbing",
  "description": "Can scale any solid surface."
}

neoorigins:elytra_boost

Allows the player to activate elytra gliding without wearing an elytra. Pressing jump while falling initiates flight.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:elytra_boost",
  "name": "Elytra Boost",
  "description": "Can glide without equipping an elytra."
}

neoorigins:scare_entities

Causes listed entity types to flee from the player on sight.

Field Type Required Default Description
entity_types list of Identifier no [] Entity types to scare, e.g. ["minecraft:creeper"]

Example — creepers flee from the player:

{
  "type": "neoorigins:scare_entities",
  "entity_types": ["minecraft:creeper", "minecraft:spider"],
  "name": "Predator Aura",
  "description": "Hostile arthropods flee on sight."
}

neoorigins:tick_action

Runs a named action on a repeating interval while the origin is active.

Field Type Required Default Description
interval int no 20 Ticks between action executions (20 ticks = 1 second)
action_type string no none Action to perform each interval. Currently: teleport_on_damage, none

Example — teleport to safety on damage every 2 seconds:

{
  "type": "neoorigins:tick_action",
  "interval": 40,
  "action_type": "teleport_on_damage",
  "name": "Dimensional Escape",
  "description": "Teleports away when taking damage."
}

neoorigins:conditional

Wraps another power so it only applies when a movement condition is met. The inner power must be a separately defined power that is also listed in the origin’s power list.

Field Type Required Default Description
condition string no always climbing, in_water, on_ground, or always
inner_power Identifier yes The power to conditionally enable

Example — no fall damage only while climbing:

{
  "type": "neoorigins:conditional",
  "condition": "climbing",
  "inner_power": "examplepack:specter_no_fall_base",
  "name": "Spider's Grip",
  "description": "Takes no fall damage while clinging to walls."
}

The inner_power must also be listed in the origin’s powers array for it to be registered. The conditional wrapper activates or suppresses its effect based on the condition.


neoorigins:phantom_form

Applies a ghostly state to the player: permanent invisibility and/or removal of gravity.

Field Type Required Default Description
invisibility bool no true Apply permanent Invisibility effect
no_gravity bool no true Disable gravity (player floats)

Example:

{
  "type": "neoorigins:phantom_form",
  "invisibility": true,
  "no_gravity": false,
  "name": "Phantom Form",
  "description": "Becomes invisible but still subject to gravity."
}

neoorigins:effect_immunity

Prevents listed potion effects from being applied to the player. Uses NeoForge’s MobEffectEvent.Applicable to cancel before application.

Field Type Required Default Description
effects list of string yes Effect IDs to block, e.g. ["minecraft:poison"]

Example:

{
  "type": "neoorigins:effect_immunity",
  "effects": ["minecraft:poison", "minecraft:wither"],
  "name": "Toxin Resistance",
  "description": "Immune to poison and wither effects."
}

neoorigins:glow

Deprecated in 2.0 — this type is now an alias for neoorigins:persistent_effect. See MIGRATION.md.

Applies a permanent Glowing effect to the player (visible outline through walls for other players).

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:glow",
  "name": "Bioluminescence",
  "description": "Emits a faint glow visible to others."
}

neoorigins:damage_in_daylight

Deprecated in 2.0 — this type is now an alias for neoorigins:condition_passive. See MIGRATION.md.

Deals periodic damage to the player when they are in direct sunlight (sky-exposed, not in shade or water).

Field Type Required Default Description
damage float no 1.0 Damage dealt per interval (half-hearts)
interval_ticks int no 20 How often damage is applied (ticks)

Example:

{
  "type": "neoorigins:damage_in_daylight",
  "damage": 1.0,
  "interval_ticks": 20,
  "name": "Sun Allergy",
  "description": "Burns in direct sunlight."
}

neoorigins:knockback_modifier

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Multiplies knockback dealt or received.

Field Type Required Default Description
direction string no out out (knockback dealt) or in (knockback received)
multiplier float no 1.0 Knockback multiplier

Example — halve knockback taken:

{
  "type": "neoorigins:knockback_modifier",
  "direction": "in",
  "multiplier": 0.5,
  "name": "Sturdy",
  "description": "Resistant to knockback."
}

neoorigins:xp_gain_modifier

Multiplies experience points gained. Wired to PlayerXpEvent.XpChange via the NumericModifierRegistry. Uses Apoli modifier math (addition + multiply_base/multiply_total).

Field Type Required Default Description
multiplier float no 1.0 XP gain multiplier

Example:

{
  "type": "neoorigins:xp_gain_modifier",
  "multiplier": 1.5,
  "name": "Quick Learner",
  "description": "Gains experience faster."
}

neoorigins:underwater_mining_speed

Removes the normal mining speed penalty for being submerged in water. The player mines at full speed underwater.

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:underwater_mining_speed",
  "name": "Aquatic Miner",
  "description": "Mines at full speed underwater."
}

neoorigins:hunger_drain_modifier

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Multiplies the rate at which the player’s hunger depletes.

Field Type Required Default Description
multiplier float no 1.0 Hunger drain multiplier (1.3 = 30% faster, 0.5 = half rate)

Example:

{
  "type": "neoorigins:hunger_drain_modifier",
  "multiplier": 1.3,
  "name": "High Metabolism",
  "description": "Gets hungry faster than normal."
}

neoorigins:natural_regen_modifier

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Multiplies all healing the player receives via LivingHealEvent. Note: this is not limited to food-tick natural regen — it also scales Regeneration potion ticks, beacon regen, totem of undying, and any data-pack neoorigins:heal actions. If you want to cancel food-tick regen specifically while leaving other heals intact, use neoorigins:no_natural_regen instead.

Field Type Required Default Description
multiplier float no 1.0 Heal multiplier (0.5 = half all heals, 2.0 = double all heals, 0.0 = block all heals)

Example:

{
  "type": "neoorigins:natural_regen_modifier",
  "multiplier": 0.5,
  "name": "Slow Recovery",
  "description": "Heals at half the normal rate."
}

neoorigins:no_natural_regen

Cancels vanilla food-based natural regeneration only. Both regen branches (saturation-based fast regen and food-level-≥18 slow regen) are skipped. Other heal sources — Regeneration potion, beacon, totem, neoorigins:heal — still work normally. Pair with an alternate healing mechanic for “metabolism-less” origins like Automaton variants.

No fields. Presence of the power is the entire configuration.

Example:

{
  "type": "neoorigins:no_natural_regen",
  "name": "No Pulse",
  "description": "Hunger doesn't restore HP. Only direct healing effects do."
}

neoorigins:food_restriction

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Restricts which foods the player can eat. Supports blacklist (cannot eat items matching the tag/item list) and whitelist (can only eat items matching). item_tag accepts a single string or a JSON array of tags and/or item IDs. Prefix entries with # for tags; bare strings match exact item IDs.

Field Type Required Default Description
mode string no "blacklist" "blacklist" or "whitelist"
item_tag string or array yes Single tag/item or array of tags/items. Use # prefix for tags (e.g. "#minecraft:meat"), bare strings for item IDs (e.g. "minecraft:spider_eye").

Example — meat-only diet (whitelist):

{
  "type": "neoorigins:food_restriction",
  "mode": "whitelist",
  "item_tag": "#minecraft:meat",
  "name": "Carnivore",
  "description": "Can only eat meat."
}

Example — vegetarian with multiple blacklisted tags:

{
  "type": "neoorigins:food_restriction",
  "mode": "blacklist",
  "item_tag": ["#minecraft:meat", "#c:foods/raw_meat"],
  "name": "Vegetarian",
  "description": "Cannot eat meat."
}

Example — blacklist specific items and a tag:

{
  "type": "neoorigins:food_restriction",
  "mode": "blacklist",
  "item_tag": ["#minecraft:meat", "minecraft:spider_eye", "minecraft:rotten_flesh"],
  "name": "Clean Eater",
  "description": "Cannot eat meat or unsanitary foods."
}

neoorigins:item_magnetism

Items on the ground within a radius are pulled toward the player automatically.

Field Type Required Default Description
radius float no 4.0 Pull radius in blocks

Example:

{
  "type": "neoorigins:item_magnetism",
  "radius": 4.0,
  "name": "Item Attraction",
  "description": "Items on the ground are drawn toward you."
}

neoorigins:break_speed_modifier

Multiplies the player’s mining speed when breaking blocks in the specified tag. When no tag is provided, applies to all blocks.

Field Type Required Default Description
block_tag Identifier no (all blocks) Block tag to restrict the modifier to, e.g. minecraft:stone
multiplier float no 1.0 Speed multiplier (2.0 = double speed)

Example — 2× speed on stone and deepslate:

{
  "type": "neoorigins:break_speed_modifier",
  "block_tag": "minecraft:stone",
  "multiplier": 2.0,
  "name": "Stone Affinity",
  "description": "Mines stone and deepslate twice as fast."
}

neoorigins:thorns_aura

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Reflects a portion of incoming melee damage back to the attacker.

Field Type Required Default Description
reflect_ratio float no 0.5 Fraction of damage dealt back (0.5 = 50%)

Example:

{
  "type": "neoorigins:thorns_aura",
  "reflect_ratio": 0.5,
  "name": "Thorny Hide",
  "description": "Reflects half of incoming melee damage."
}

neoorigins:projectile_immunity

Prevents all incoming projectile damage (arrows, tridents, fireballs, etc.).

No additional fields beyond name and description.

Example:

{
  "type": "neoorigins:projectile_immunity",
  "name": "Arrow Deflection",
  "description": "Immune to all projectile damage."
}

neoorigins:action_on_kill

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Triggers an action each time the player kills a living entity.

Field Type Required Default Description
action string no restore_health Action to perform: restore_health, restore_hunger, grant_effect
amount float no 4.0 Health or hunger to restore
effect Identifier no Effect to grant (when action is grant_effect)
amplifier int no 0 Effect level
duration int no 200 Effect duration in ticks

Example — restore 1 heart on kill:

{
  "type": "neoorigins:action_on_kill",
  "action": "restore_health",
  "amount": 2.0,
  "name": "Vampiric",
  "description": "Restores health by killing enemies."
}

neoorigins:action_on_hit_taken

Deprecated in 2.0 — this type is now an alias for neoorigins:action_on_event. See MIGRATION.md.

Triggers an action each time the player takes damage.

Field Type Required Default Description
action string no teleport Action to perform: teleport, restore_health, restore_hunger, grant_effect, ignite_attacker, effect_on_attacker
min_damage float no 0.0 Only fires when incoming damage ≥ this
chance float no 1.0 Probability to fire, from 0.0 to 1.0
amount float no 2.0 Health or hunger to restore (where applicable)
effect Identifier no Effect to apply (for grant_effect / effect_on_attacker)
amplifier int no 0 Effect level
duration int no 100 Effect duration in ticks

Example — gain Speed II briefly when hit:

{
  "type": "neoorigins:action_on_hit_taken",
  "action": "grant_effect",
  "effect": "minecraft:speed",
  "amplifier": 1,
  "duration": 60,
  "name": "Combat Rush",
  "description": "Gains a burst of speed when struck."
}

neoorigins:action_on_hit

Triggers an action each time the player deals damage to any living entity — mobs, animals, and other players. Optionally restricted by target entity group, target entity type, or damage type. The configured action may target the player (self) or the victim.

Field Type Required Default Description
action string no restore_health One of restore_health, restore_hunger, grant_effect (self), target_effect (victim)
amount float no 2.0 Health or hunger amount (for the restore actions)
effect Identifier no Effect to apply for grant_effect / target_effect
duration int no 100 Effect duration in ticks
amplifier int no 0 Effect level
min_damage float no 0.0 Only fires when outgoing damage ≥ this
chance float no 1.0 Probability to fire, from 0.0 to 1.0
target_group string no (any) Restrict to targets in group: undead, arthropod, illager, aquatic (vanilla minecraft:<group> entity-type tag)
target_type Identifier no (any) Restrict to a specific entity type, e.g. minecraft:zombie
damage_type string no (all) Restrict to a specific vanilla damage type, e.g. mob_attack, magic

Filters are combined with AND: every configured filter must match for the action to fire. The chance roll happens last.

Example — heal 0.5 hearts on striking any undead:

{
  "type": "neoorigins:action_on_hit",
  "action": "restore_health",
  "amount": 1.0,
  "target_group": "undead",
  "name": "Smite Vigor",
  "description": "Drains life from the undead with each blow."
}

Example — mark the victim with Glowing when striking undead:

{
  "type": "neoorigins:action_on_hit",
  "action": "target_effect",
  "effect": "minecraft:glowing",
  "duration": 60,
  "target_group": "undead",
  "name": "Holy Mark",
  "description": "Hit undead are illuminated briefly."
}

Example — 20% chance to gain Strength I on hitting a zombie, on melee only:

{
  "type": "neoorigins:action_on_hit",
  "action": "grant_effect",
  "effect": "minecraft:strength",
  "duration": 60,
  "chance": 0.2,
  "damage_type": "mob_attack",
  "target_type": "minecraft:zombie",
  "name": "Adrenal Surge",
  "description": "Sometimes empowered when you melee a zombie."
}

neoorigins:regen_in_fluid

Deprecated in 2.0 — this type is now an alias for neoorigins:condition_passive. See MIGRATION.md.

Grants periodic health regeneration while submerged in the specified fluid.

Field Type Required Default Description
fluid string no water Fluid to trigger in: water or lava
heal_amount float no 1.0 Health restored per interval
interval_ticks int no 40 Ticks between heal pulses

Example:

{
  "type": "neoorigins:regen_in_fluid",
  "fluid": "water",
  "heal_amount": 1.0,
  "interval_ticks": 40,
  "name": "Aquatic Regeneration",
  "description": "Regenerates health while underwater."
}

neoorigins:breath_in_fluid

Drains the player’s air supply when submerged in the specified fluid. Useful for fire-themed origins that “drown” in water. Fully overrides vanilla’s air management while in the target fluid (suppresses both vanilla drowning and water-breathing refill), so the configured drain_rate is the sole authority on how fast air depletes. Respiration enchantment extends survival time. Drown damage (2 HP/sec) applies once air is exhausted.

Field Type Required Default Description
fluid string no water Fluid: water or lava
drain_rate int no 20 Ticks between each air drain (1 air point lost every N ticks; lower = faster drain)

Example:

{
  "type": "neoorigins:breath_in_fluid",
  "fluid": "water",
  "drain_rate": 20,
  "name": "Hydrophobic",
  "description": "Cannot breathe in water."
}

neoorigins:breath_out_of_fluid

Drains the player’s air supply while they are not submerged in the specified fluid — a fish out of water. Once the air supply reaches 0, vanilla drown damage applies. Water Breathing and Conduit Power effects pause the drain, and drinking a water bottle restores half the air bar. Compatible with Create’s Copper Backtank (worn in chestplate slot, consumes pressurized air to pause drain). Respiration enchantment extends land time using the same probability curve vanilla uses underwater.

The drain rate is controlled globally by the ocean_origins.drain_rate_ticks config option, not the per-power drain_rate field.

Field Type Required Default Description
fluid string no water Fluid the player must stay in: water or lava
drain_rate int no 40 Legacy field — overridden by ocean_origins.drain_rate_ticks config

Example — aquatic origin that drowns on land:

{
  "type": "neoorigins:breath_out_of_fluid",
  "fluid": "water",
  "name": "Dries Out",
  "description": "Suffocates when not in water."
}

Pair with neoorigins:water_breathing so the player never loses air underwater while the bubble row depletes on land.


neoorigins:biome_buff

Deprecated in 2.0 — this type is now an alias for neoorigins:condition_passive. See MIGRATION.md.

Applies a status effect while the player is standing in a biome matching the given biome tag.

Field Type Required Default Description
biome_tag Identifier yes Biome tag, e.g. minecraft:is_forest
effect Identifier yes Effect to apply, e.g. minecraft:speed
amplifier int no 0 Effect level

Example — Speed I in forests:

{
  "type": "neoorigins:biome_buff",
  "biome_tag": "minecraft:is_forest",
  "effect": "minecraft:speed",
  "amplifier": 0,
  "name": "Forest Stride",
  "description": "Moves faster in forest biomes."
}

neoorigins:damage_in_biome

Deprecated in 2.0 — this type is now an alias for neoorigins:condition_passive. See MIGRATION.md.

Deals periodic damage to the player while in a biome matching the given tag.

Field Type Required Default Description
biome_tag Identifier yes Biome tag to match, e.g. minecraft:is_nether
damage float no 1.0 Damage per interval
interval_ticks int no 40 Ticks between damage pulses

Example:

{
  "type": "neoorigins:damage_in_biome",
  "biome_tag": "minecraft:is_nether",
  "damage": 1.0,
  "interval_ticks": 40,
  "name": "Nether Intolerance",
  "description": "Takes damage in the Nether."
}

neoorigins:burn_at_health_threshold

Deprecated in 2.0 — this type is now an alias for neoorigins:condition_passive. See MIGRATION.md.

Ignites the player when their HP drops below a percentage of their maximum health.

Field Type Required Default Description
threshold_percent float no 0.25 HP fraction that triggers ignition (e.g. 0.25 = below 25%)
fire_ticks int no 60 Duration the player is set on fire

Example:

{
  "type": "neoorigins:burn_at_health_threshold",
  "threshold_percent": 0.25,
  "fire_ticks": 60,
  "name": "Critical Combustion",
  "description": "Catches fire when near death."
}

neoorigins:mobs_ignore_player

Causes specific mob types to passively ignore the player unless provoked.

Field Type Required Default Description
entity_types list of Identifier no [] Entity types that will ignore the player. When empty, all hostile mobs ignore.

Example — only creepers ignore:

{
  "type": "neoorigins:mobs_ignore_player",
  "entity_types": ["minecraft:creeper"],
  "name": "Creeper Affinity",
  "description": "Creepers ignore you unless attacked."
}

This is distinct from scare_entities (which makes mobs flee). mobs_ignore_player makes mobs neutral; scare_entities makes them run away.


neoorigins:no_mob_spawns_nearby

Suppresses mob spawns within a radius of the player. Toggleable — the player can turn the aura on/off via their skill keybind.

Field Type Required Default Description
radius int no 48 Radius in blocks within which spawns are suppressed
categories list of string no ["monster"] Spawn categories to suppress: monster, creature, ambient, water_creature, or all

Example — suppress hostile spawns in a 48-block radius:

{
  "type": "neoorigins:no_mob_spawns_nearby",
  "radius": 48,
  "categories": ["monster"],
  "name": "Warding Presence",
  "description": "Hostile mobs don't spawn within 48 blocks. Toggle with skill key."
}

neoorigins:entity_group

Changes the player’s entity group, making them treated as a different creature class by game mechanics. Undead players become immune to poison and wither but take extra damage from smite.

Field Type Required Default Description
group string no undead Entity group: undead, arthropod, illager, water, default

Example:

{
  "type": "neoorigins:entity_group",
  "group": "undead",
  "name": "Undead Nature",
  "description": "Treated as an undead creature — immune to poison and wither."
}

neoorigins:active_teleport

Active ability that teleports the player to the block they are looking at, up to a maximum distance.

Field Type Required Default Description
max_distance float no 32.0 Maximum teleport range in blocks
cooldown_ticks int no 60 Cooldown in ticks after each use
hunger_cost int no 0 Food points removed per use

Example:

{
  "type": "neoorigins:active_teleport",
  "max_distance": 32.0,
  "cooldown_ticks": 60,
  "hunger_cost": 2,
  "name": "Blink",
  "description": "Teleports to where you're looking."
}

neoorigins:active_dash

Active ability that launches the player in their look direction.

Field Type Required Default Description
power float no 1.5 Launch velocity
cooldown_ticks int no 40 Cooldown in ticks
allow_vertical bool no false Whether to include vertical component from look direction

Example:

{
  "type": "neoorigins:active_dash",
  "power": 1.5,
  "cooldown_ticks": 40,
  "allow_vertical": true,
  "name": "Pounce",
  "description": "Dashes in the direction you're looking."
}

neoorigins:active_launch

Deprecated in 2.0 — this type is now an alias for neoorigins:active_ability. See MIGRATION.md.

Active ability that launches the player straight upward. Useful paired with elytra_boost or flight for vertical take-off.

Field Type Required Default Description
power float no 1.8 Upward launch velocity
cooldown_ticks int no 60 Cooldown in ticks

Example:

{
  "type": "neoorigins:active_launch",
  "power": 2.2,
  "cooldown_ticks": 80,
  "name": "Pounce Launch",
  "description": "Launches upward with powerful legs."
}

neoorigins:active_recall

Active ability that teleports the player to their bed or respawn point. Falls back to world spawn if none is set.

Field Type Required Default Description
cooldown_ticks int no 600 Cooldown in ticks

Example:

{
  "type": "neoorigins:active_recall",
  "cooldown_ticks": 600,
  "name": "Home Recall",
  "description": "Teleports to your respawn point."
}

neoorigins:active_swap

Active ability that swaps positions with the entity the player is looking at.

Field Type Required Default Description
max_distance float no 16.0 Maximum range to target an entity
cooldown_ticks int no 80 Cooldown in ticks

Example:

{
  "type": "neoorigins:active_swap",
  "max_distance": 16.0,
  "cooldown_ticks": 80,
  "name": "Swap",
  "description": "Swap positions with your target."
}

neoorigins:active_fireball

Active ability that shoots a small fireball in the player’s look direction. The fireball explodes on impact and ignites the area.

Field Type Required Default Description
speed float no 1.5 Projectile speed multiplier
cooldown_ticks int no 80 Cooldown in ticks

Example:

{
  "type": "neoorigins:active_fireball",
  "speed": 1.5,
  "cooldown_ticks": 80,
  "name": "Ember Shot",
  "description": "Spits a fireball in your look direction."
}

neoorigins:crop_growth_accelerator

Passively accelerates the growth of nearby crops by randomly applying a bonemeal tick to eligible blocks at a set interval.

Field Type Required Default Description
radius int no 4 Scan radius in blocks
tick_interval int no 40 Ticks between growth attempts
growths_per_interval int no 1 Number of crops to accelerate per interval

Example:

{
  "type": "neoorigins:crop_growth_accelerator",
  "radius": 4,
  "tick_interval": 40,
  "growths_per_interval": 2,
  "name": "Verdant Touch",
  "description": "Crops nearby grow faster."
}

neoorigins:active_aoe_effect

Deprecated in 2.0 — this type is now an alias for neoorigins:active_ability. See MIGRATION.md.

Active ability that applies a mob effect to all living entities within a radius of the player.

Field Type Required Default Description
effect Identifier yes Effect to apply, e.g. minecraft:slowness
amplifier int no 0 Effect level
duration_ticks int no 100 Duration of the applied effect
radius float no 8.0 Range in blocks
cooldown_ticks int no 200 Cooldown in ticks

Example — root all nearby mobs:

{
  "type": "neoorigins:active_aoe_effect",
  "effect": "minecraft:slowness",
  "amplifier": 5,
  "duration_ticks": 80,
  "radius": 6.0,
  "cooldown_ticks": 200,
  "name": "Entangle",
  "description": "Roots all nearby creatures in place."
}

neoorigins:active_phase

Active ability that phases the player through a solid wall in their look direction. Scans forward for an air gap on the far side of a wall and teleports there. An optional hunger cost is deducted per use.

Field Type Required Default Description
max_depth int no 8 Maximum solid-block scan depth in blocks
cooldown_ticks int no 80 Cooldown in ticks
hunger_cost int no 0 Food points removed per use (2 = 1 shank)

Example:

{
  "type": "neoorigins:active_phase",
  "max_depth": 10,
  "cooldown_ticks": 80,
  "hunger_cost": 3,
  "name": "Phase Step",
  "description": "Pass through walls at the cost of hunger."
}

neoorigins:active_bolt

Active ability that shoots a dragon-fire bolt (purple ender-breath projectile) in the player’s look direction. On impact, creates an area of dragon’s breath that deals damage over time.

Field Type Required Default Description
speed float no 1.2 Projectile speed multiplier
cooldown_ticks int no 80 Cooldown in ticks

Example:

{
  "type": "neoorigins:active_bolt",
  "speed": 1.2,
  "cooldown_ticks": 80,
  "name": "Void Bolt",
  "description": "Fires a bolt of corrosive dragon's breath."
}

neoorigins:starting_equipment

Grants the player a specific item (optionally with enchantments) once on first origin assignment. Tracks grant state per-player so the item is not re-granted on respawn.

Field Type Required Default Description
grant_id string yes Unique ID used to track whether the item has been granted
item Identifier yes Item to grant, e.g. minecraft:trident
count int no 1 Stack count
enchantments list no [] List of {"id": "...", "level": N} enchantment entries
legacy_tag string no "" SNBT string for legacy NBT data (Potion, display.Name, etc.). Recognised keys are translated to data components; unrecognised keys go to minecraft:custom_data.
components string no "" SNBT string representing a DataComponentPatch. Supports any registered data component (vanilla or modded). Parsed with registry context at grant time.

Example — enchanted trident:

{
  "type": "neoorigins:starting_equipment",
  "grant_id": "abyssal_trident",
  "item": "minecraft:trident",
  "enchantments": [
    {"id": "minecraft:mending", "level": 1},
    {"id": "minecraft:unbreaking", "level": 3},
    {"id": "minecraft:riptide", "level": 3}
  ],
  "name": "Deep-Sea Armament",
  "description": "Begins life with an enchanted trident."
}

Example — modded item with custom data components (Iron’s Spellbooks):

{
  "type": "neoorigins:starting_equipment",
  "grant_id": "mage_spellbook",
  "item": "irons_spellbooks:iron_spell_book",
  "components": "{\"irons_spellbooks:spell_container\":{data:[{id:\"irons_spellbooks:firebolt\",index:1,level:1}],maxSpells:5,mustEquip:1b,spellWheel:1b}}",
  "name": "Arcane Tome",
  "description": "Begins life with a pre-inscribed spell book."
}

neoorigins:active_place_block

Active ability that places a specific block at the surface the player is looking at, up to a maximum range.

Field Type Required Default Description
block_id Identifier no minecraft:glowstone Block to place
max_distance float no 5.0 Maximum targeting range in blocks
cooldown_ticks int no 100 Cooldown in ticks
hunger_cost int no 0 Food points removed per use

Example:

{
  "type": "neoorigins:active_place_block",
  "block_id": "minecraft:glowstone",
  "max_distance": 5.0,
  "cooldown_ticks": 100,
  "name": "Stone Touch",
  "description": "Places a glowstone block where you're looking."
}

neoorigins:crop_harvest_bonus

Passively grants extra item drops when the player harvests a fully-grown crop or breaks a log. The bonus drops are identical copies of the block’s normal drops.

Field Type Required Default Description
extra_drops int no 1 Number of extra drop copies per break

Example:

{
  "type": "neoorigins:crop_harvest_bonus",
  "extra_drops": 1,
  "name": "Bountiful Harvest",
  "description": "Crops and trees yield extra resources."
}

neoorigins:shadow_orb

Active ability that places a persistent shadow orb at the player’s position. Each orb applies Darkness to all nearby entities at a set interval. The player can maintain up to max_orbs orbs at once; placing a new one when at the cap removes the oldest. Orbs are cleared when the origin is revoked.

Field Type Required Default Description
max_orbs int no 4 Maximum number of simultaneous orbs
radius float no 28.0 Effect radius per orb in blocks
cooldown_ticks int no 100 Cooldown between placements
tick_interval int no 20 Ticks between Darkness pulses per orb
hunger_cost int no 0 Food points removed per placement

Example:

{
  "type": "neoorigins:shadow_orb",
  "max_orbs": 4,
  "radius": 28.0,
  "cooldown_ticks": 100,
  "tick_interval": 20,
  "name": "Shadow Anchor",
  "description": "Places orbs that shroud the area in darkness."
}

neoorigins:persistent_effect

Generic condition-gated, toggleable status-effect stack. Part of the 2.0 consolidation: replaces status_effect, stacking_status_effects, night_vision, glow, water_breathing, breath_in_fluid, and the tag branch of regen_in_fluid with one type that applies an arbitrary list of mob effects whenever an optional condition (an EntityCondition DSL tree) is met.

Field Type Required Default Description
effects list of EffectSpec yes Mob effects to apply. See below. May also be a single inline EffectSpec on the top-level object.
condition EntityCondition no always-true DSL condition — effects only apply while it is true. Effects are cleared when it becomes false.
refresh_interval int no 300 Ticks each applied effect is (re)granted for. Must be ≥ 1.
toggleable bool no true When true, this is an active-keybind power: pressing the key toggles effects on/off. When false, effects are always applied while condition is true.

EffectSpec object:

Field Type Required Default Description
effect Identifier yes Effect ID, e.g. minecraft:strength (alias id also accepted)
amplifier int no 0 Effect level
ambient bool no true Ambient particles (low visibility)
show_particles bool no false Whether to show particles
show_icon bool no true Whether to show the HUD icon

Example — permanent always-on Weakness II:

{
  "type": "neoorigins:persistent_effect",
  "effect": "minecraft:weakness",
  "amplifier": 1,
  "toggleable": false,
  "name": "Frail",
  "description": "Permanently weakened."
}

Example — Strength + Haste while in water (conditional, not toggleable):

{
  "type": "neoorigins:persistent_effect",
  "toggleable": false,
  "condition": { "type": "neoorigins:in_water" },
  "effects": [
    { "effect": "minecraft:strength", "amplifier": 0 },
    { "effect": "minecraft:haste",    "amplifier": 1 }
  ],
  "name": "Tidecaller",
  "description": "Empowered while immersed in water."
}

Effects are re-applied every refresh_interval ticks (default 300 = 15 seconds), so the effect never expires. When toggleable is true (the default), the player can press their skill key to toggle effects on/off — set toggleable: false for effects that should always be active. A single effect can be specified inline on the top-level object (effect, amplifier, etc.) instead of using the effects list.


neoorigins:modify_food_nutrition

Overrides the nutrition (hunger) value of all food the player eats. Every food item gives exactly the configured number of hunger points regardless of its original value. Saturation is scaled proportionally to the original food’s saturation modifier.

Field Type Required Default Description
nutrition int no 1 Fixed hunger points all food gives

Example — all food gives 1 hunger point:

{
  "type": "neoorigins:modify_food_nutrition",
  "nutrition": 1,
  "name": "Picky Eater",
  "description": "Gains almost no nutrition from food."
}

neoorigins:condition_passive

Generic condition-gated periodic action — “a passive with a trigger”. Part of the 2.0 consolidation: collapses biome_buff, damage_in_biome, damage_in_daylight, damage_in_water, burn_at_health_threshold, mobs_ignore_player, no_mob_spawns_nearby, and item_magnetism into a single type. Also supersedes tick_action when condition is omitted.

Field Type Required Default Description
interval int no 20 Tick interval between evaluations (clamped to ≥ 1)
condition EntityCondition no always-true DSL condition to test each interval
entity_action EntityAction no noop Action run against the player when condition is true
else_action EntityAction no noop Action run when condition is false

See EVENTS.md / the Apoli compat docs for the full condition and action DSL.

Example — take 1 damage every 2 seconds in the Nether:

{
  "type": "neoorigins:condition_passive",
  "interval": 40,
  "condition": {
    "type": "neoorigins:in_tag",
    "tag": "minecraft:is_nether"
  },
  "entity_action": {
    "type": "neoorigins:damage",
    "amount": 1.0,
    "source": "fire"
  },
  "name": "Nether Intolerance",
  "description": "Burns while in the Nether."
}

neoorigins:action_on_event

The 2.0 generic event hook — fires an action and/or applies a float modifier when a named player event occurs. Replaces 20+ bespoke Origins-Classes hook powers (better_enchanting, more_smoker_xp, crop_harvest_bonus, break_speed_modifier, natural_regen_modifier, action_on_kill, action_on_hit_taken, thorns_aura, knockback_modifier, hunger_drain_modifier, food_restriction, …) with one configurable type.

Field Type Required Default Description
event string yes Event name (case-insensitive). See EVENTS.md for the full list.
condition EntityCondition no always-true DSL gate — the event only fires when this is true
entity_action EntityAction no noop Side-effect run when the event fires
modifier FloatModifier or list no identity Float modifier applied to the event’s numeric payload (for modifier-style events)

Event categories (see EVENTS.md for the full list):

  • Lifecycle: GAINED, REVOKED, RESPAWN, GAMEMODE_CHANGE
  • Combat: KILL, HIT_TAKEN, DAMAGE_DEALT, MOD_KNOCKBACK, MOD_THORNS
  • Food: FOOD_EATEN, MOD_FOOD_NUTRITION, MOD_EXHAUSTION, MOD_NATURAL_REGEN
  • Mining / crafting: BLOCK_BREAK, CRAFT_ITEM, ITEM_USE_FINISH, MOD_BREAK_SPEED, MOD_CRAFT_COUNT
  • XP / economy: XP_GAINED, MOD_XP_GAIN, TRADE_COMPLETE, MOD_BONEMEAL_GROWTH
  • Interaction: BLOCK_INTERACT, ENTITY_INTERACT, RIGHT_CLICK_ITEM

For action-style events set entity_action; for modifier-style events set modifier. A single power may declare both — the action path fires on dispatch sites and the modifier path chains on dispatchModifier sites.

Example — heal 1 heart on kill only while holding a wooden sword:

{
  "type": "neoorigins:action_on_event",
  "event": "kill",
  "condition": {
    "type": "neoorigins:equipped_item",
    "slot": "mainhand",
    "item": "minecraft:wooden_sword"
  },
  "entity_action": {
    "type": "neoorigins:heal",
    "amount": 2.0
  },
  "name": "Wooden Vampire",
  "description": "Regain health on kills, but only with a wooden sword."
}

Example — 30% faster natural regen:

{
  "type": "neoorigins:action_on_event",
  "event": "mod_natural_regen",
  "modifier": {
    "operation": "multiply_base",
    "value": 1.3
  }
}

neoorigins:invulnerability

Native invulnerability power — cancels incoming damage whose source matches any configured filter. If every filter list is empty, blocks all incoming damage. Replaces the lossy 1.x translation that only covered FIRE.

Field Type Required Default Description
damage_types list of string no [] Damage type IDs (e.g. minecraft:fall) — matched by ID
damage_tags list of string no [] Damage type tag IDs (e.g. minecraft:is_fire)
msg_ids list of string no [] Vanilla damage msgId strings (e.g. inFire, fall) — covers loose Origins-style names

Filters combine with OR: a damage source is cancelled if it matches any entry in any list. If all three lists are empty, all damage is cancelled (matching Origins’ behaviour when damage_condition is omitted).

Example — fire and lava immunity:

{
  "type": "neoorigins:invulnerability",
  "damage_tags": ["minecraft:is_fire"],
  "name": "Inferno Blood",
  "description": "Immune to fire and lava."
}

Example — block everything:

{
  "type": "neoorigins:invulnerability",
  "name": "Adamant",
  "description": "Cannot be harmed."
}

neoorigins:size_scaling

Scales the player’s visual and collision size via the minecraft:generic.scale attribute. Optionally also scales block/entity interaction reach. Mirrors the scale to Pehkui when the mod is present so cross-mod queries see a consistent value.

Field Type Required Default Description
scale float no 1.0 Target scale multiplier (0.5 = half size, 2.0 = double)
modify_reach bool no true Also adjust block/entity interaction reach proportionally

Example — half-size origin:

{
  "type": "neoorigins:size_scaling",
  "scale": 0.5,
  "modify_reach": true,
  "name": "Tiny",
  "description": "Half-sized, with proportionally shorter reach."
}

The scale attribute uses ADD_VALUE against a base of 1.0 (so delta = scale - 1.0); reach attributes use ADD_MULTIPLIED_BASE so reach tracks visual size. Missing attributes (older MC or NeoForge versions) log a single warning and the power silently skips that attribute.


neoorigins:entity_set

Pure data-holder power. Its presence in a player’s active power set declares that the player participates in a named UUID set. Actual set storage lives on PlayerOriginData; the neoorigins:in_set / neoorigins:add_to_set / neoorigins:remove_from_set verbs read and mutate it.

Field Type Required Default Description
name string no "" Name of the UUID set this power declares. Conventionally namespaced like mypack:kill_streak.

Example:

{
  "type": "neoorigins:entity_set",
  "name": "mypack:hunted",
  "name_text": "Marked Prey",
  "description": "Tracks entities marked as hunted by this origin."
}

The colon in name is allowed and carries no mechanical meaning — it’s a soft convention for avoiding collisions between packs. Pair this with action_on_event (to add entries) and condition_passive or direct DSL predicates (to query membership).


neoorigins:enhanced_vision

Status (2.0.8): still available for direct authoring, but the 22 built-in origins that briefly used enhanced_vision in 2.0.4–2.0.7 are temporarily back on neoorigins:night_vision while we sort out shader and mod-compat issues with the LightTexture path. The cleaner enhanced-vision look is still the long-term direction; this is a rollback for stability, not a deprecation.

Passive low-light vision: emits an enhanced_vision capability tag and scales the client brightness curve directly via a LightTexture mixin. Unlike the full minecraft:night_vision status effect, there’s no screen tint, HUD icon, or max-brightness ramp at end of duration — just exposure-style compensation.

Field Type Required Default Description
exposure float (0.0–1.0) no 0.7 Target brightness scalar (advisory in v1 — the client mixin currently hardcodes 0.7)

Example:

{
  "type": "neoorigins:enhanced_vision",
  "exposure": 0.7,
  "name": "Cat Eyes",
  "description": "Sees clearly in dim light without the green tint."
}

All exposure work happens on the logical client; the server only publishes the capability tag. If per-origin variance is needed later, the value will be wired through a client-synced power-config payload.


neoorigins:edible_item

Makes arbitrary items consumable on right-click. A matching item is instantly consumed: the configured nutrition/saturation is applied, one is removed from the stack, and an action_on_event.ITEM_USE_FINISH dispatch fires with the stack as context. Bypasses vanilla FoodProperties so pack authors can declare “Merling eats raw fish” or “Phantom eats rotten flesh for full food” without replacing the item’s data components.

Field Type Required Default Description
items list of Identifier no [] Exact item IDs that qualify
tags list of Identifier no [] Item tag IDs that qualify
nutrition int no 4 Food points restored (1 shank = 2)
saturation float no 0.3 Saturation restored
always_edible bool no true If true, can be eaten at full hunger
consume_sound Identifier no (none) Optional sound ID played on consume

At least one of items or tags should be non-empty, otherwise nothing will ever match. Matching is inclusive — an item qualifies if it appears in either list.

Example — Merling eats raw fish at full food:

{
  "type": "neoorigins:edible_item",
  "tags": ["minecraft:fishes"],
  "nutrition": 4,
  "saturation": 0.4,
  "always_edible": true,
  "name": "Pescivore",
  "description": "Can eat raw fish at any time."
}

neoorigins:restrict_armor

Prevents certain items from being equipped in certain slots. When a matching item is placed in a restricted slot, the power ejects it back to the player’s inventory (or drops it to the ground if inventory is full).

Field Type Required Default Description
restrictions list of SlotRestriction no [] Per-slot filters. An empty list disables the power.

SlotRestriction object:

Field Type Required Description
slot string yes One of mainhand, offhand, head, chest, legs, feet, body
item Identifier no Exact item ID to restrict
tag Identifier no Item tag to restrict

If neither item nor tag is set on a restriction entry, any non-empty stack in that slot is restricted.

Example — no iron or diamond chestplates:

{
  "type": "neoorigins:restrict_armor",
  "restrictions": [
    { "slot": "chest", "item": "minecraft:iron_chestplate" },
    { "slot": "chest", "item": "minecraft:diamond_chestplate" }
  ],
  "name": "Light Armor Only",
  "description": "Cannot wear iron or diamond chestplates."
}

Armor classes

NeoOrigins ships two item tags that categorize vanilla armor into light and heavy classes. Use these with restrict_armor to broadly gate what an origin can wear without listing every item individually.

Tag Contents
neoorigins:light_armor Leather, Chainmail (all slots)
neoorigins:heavy_armor Iron, Gold, Diamond, Netherite (all slots)

Example — restrict an origin to light armor only:

{
  "type": "neoorigins:restrict_armor",
  "restrictions": [
    { "slot": "head",  "tag": "neoorigins:heavy_armor" },
    { "slot": "chest", "tag": "neoorigins:heavy_armor" },
    { "slot": "legs",  "tag": "neoorigins:heavy_armor" },
    { "slot": "feet",  "tag": "neoorigins:heavy_armor" }
  ],
  "name": "Light Armor Only",
  "description": "Cannot wear heavy armor."
}

Adding modded armor to a class:

Modpack authors can extend the classes in two ways:

  1. Datapack — add entries to the neoorigins:heavy_armor or neoorigins:light_armor item tags via a higher-priority datapack.

  2. Config — add item IDs or #tags to the [armor_classes] section in config/neoorigins-common.toml:

[armor_classes]
    # Items/tags added here supplement the neoorigins:heavy_armor tag
    heavy_armor = ["modid:steel_chestplate", "#modid:titanium_armor"]
    # Items/tags added here supplement the neoorigins:light_armor tag
    light_armor = ["modid:cloth_robe"]

Config entries are checked alongside the tags — items in either source count as that armor class.


neoorigins:keep_inventory

On death, selectively retain inventory items matching the power’s filters. Matching items are removed from drops and restored to the player’s inventory on respawn.

Field Type Required Default Description
slots list of string no ["*"] Slot categories to keep from: hotbar, main, armor, offhand, all (alias *). main also includes hotbar.
items list of Identifier no [] Specific items to keep
tags list of Identifier no [] Item tags to keep

If both items and tags are empty, every item in the configured slots is kept.

Example — always keep tools:

{
  "type": "neoorigins:keep_inventory",
  "slots": ["main", "hotbar", "offhand"],
  "tags": ["minecraft:pickaxes", "minecraft:swords", "minecraft:axes", "minecraft:shovels"],
  "name": "Tool Preservation",
  "description": "Tools are never dropped on death."
}

neoorigins:modify_player_spawn

Overrides the player’s respawn location to a power-configured target. Unlike the origin’s spawn_location (first-join and bed-less respawn only), this power fires on every respawn. Optionally also overrides the bed/respawn-anchor spawn point.

Field Type Required Default Description
location LocationCondition yes Target location descriptor — dimension / biome / biome_tag / structure / structure_tag. See attribute_modifier’s location_condition for the shape.
override_bed bool no false When true, also overrides bed/respawn-anchor spawn. When false, respects a valid bed/anchor and only fires if none is set.

Example — always respawn in an End city:

{
  "type": "neoorigins:modify_player_spawn",
  "location": {
    "dimension": "minecraft:the_end",
    "structure": "minecraft:end_city"
  },
  "override_bed": true,
  "name": "Void-Bound",
  "description": "Always respawns in the nearest End city."
}

neoorigins:toggle

A bare, stateless boolean power — purely a data-holder whose state lives in CompatAttachments.toggleState() keyed by the registered id. Unlike active_ability, toggle does not consume a keybind slot; it’s a named boolean other powers gate on.

Field Type Required Default Description
default bool no false Value reads see before the toggle has ever been flipped on this player. Set true for “on until flipped off.”

Read the current value with neoorigins:power_active { power: "mypack:my_toggle" }. Flip it with neoorigins:toggle { power: "mypack:my_toggle" } (optionally value: true/false to set explicitly).

Example:

{
  "type": "neoorigins:toggle",
  "default": false,
  "hidden": true,
  "name": "Hunter's Mark",
  "description": "Internal flag gated by other powers."
}

hidden: true keeps the toggle out of the origin info panel — recommended for any purely-internal flag a player doesn’t need to see listed.

See COOKBOOK.md → Toggleable abilities (no keybind slot) for full recipes.


neoorigins:active_ability

Generic cooldown-gated active (keybind) ability. Part of the 2.0 consolidation — collapses active_teleport, active_dash, active_launch, active_recall, active_swap, active_fireball, active_bolt, active_phase, active_place_block, healing_mist, repulse, active_aoe_effect, and others into one type whose effect is described by an entity_action tree.

Field Type Required Default Description
cooldown_ticks int no 60 Cooldown after each use
hunger_cost int no 0 Food points removed per use (1 shank = 2 points). Silently aborts if player has less food (cooldown not consumed).
entity_action EntityAction yes noop Action tree fired on use (typically neoorigins:and { actions: [...] })
condition EntityCondition no always-true DSL gate — skips firing (and the cooldown) if false

Each active_ability power maintains an independent cooldown. Multiple active abilities on the same origin do not share a cooldown counter — triggering one ability does not block another.

Actions and conditions are compiled once at power-load time via ActionParser / ConditionParser; runtime only dispatches through the compiled closures.

Hunger gating is handled at the AbstractActivePower base class level — when hunger_cost > 0, the base checks and debits food before calling execute. Any power that extends AbstractActivePower and wires hungerCost() through its Codec inherits the behavior automatically.

Example — launch the player upward:

{
  "type": "neoorigins:active_ability",
  "cooldown_ticks": 80,
  "entity_action": {
    "type": "neoorigins:add_velocity",
    "y": 2.0,
    "client": true,
    "server": true
  },
  "name": "Leap",
  "description": "Launches the player upward."
}

Legacy active types (active_teleport, active_dash, etc.) remain registered during the deprecation window. The migrateLegacyPowers gradle task can rewrite pack JSON to this type; LegacyPowerTypeAliases covers unmigrated JSON once per-type field remappers are landed.


neoorigins:ground_slam

Active AoE slam — damages and knocks back every entity within radius.

Field Type Required Default Description
damage float no 6.0 Damage dealt to each entity
knockback_strength float no 1.5 Radial knockback strength
radius double no 6.0 Effect radius in blocks
cooldown_ticks int no 120 Cooldown after each use

Example:

{
  "type": "neoorigins:ground_slam",
  "damage": 6.0,
  "radius": 6.0,
  "cooldown_ticks": 120,
  "name": "Tectonic Slam",
  "description": "Crushes nearby enemies with a shockwave."
}

neoorigins:tidal_wave

Cone-shaped water blast in the player’s look direction. Knocks back and damages entities caught in the wave.

Field Type Required Default Description
damage float no 4.0 Damage per hit
knockback_strength float no 2.0 Forward knockback strength
range double no 8.0 Maximum wave distance
cone_angle double no 60.0 Total cone angle in degrees (30° to each side of look axis)
cooldown_ticks int no 100 Cooldown after each use
hunger_cost int no 0 Food points removed per use

Example:

{
  "type": "neoorigins:tidal_wave",
  "damage": 4.0,
  "range": 8.0,
  "cone_angle": 60.0,
  "cooldown_ticks": 100,
  "name": "Tidal Wave",
  "description": "Blasts enemies with a cone of water."
}

neoorigins:summon_minion

Active power that summons a mob near the player. Summoned mobs are tracked with caps, despawn timers, and death-damage feedback. Equipment can be configured per slot; all equipment drop chances are zeroed so summoned mobs never drop loot.

Field Type Required Default Description
mob_type Identifier yes Entity type to summon, e.g. minecraft:zombie
max_count int no 3 Maximum concurrent minions per player per mob_type
cooldown_ticks int no 200 Cooldown after each summon
hunger_cost int no 4 Food points consumed per summon
despawn_ticks int no 18000 Lifespan after spawn (15 min default)
death_damage float no 1.0 Damage taken by the owner when a minion dies
head / chest / legs / feet / mainhand / offhand Identifier no (none or iron helmet for head) Equipment per slot

If head is unset, the minion gets an iron helmet by default (sun protection for undead). All drop chances are set to 0.

Example — zombie minion with sword:

{
  "type": "neoorigins:summon_minion",
  "mob_type": "minecraft:zombie",
  "max_count": 3,
  "cooldown_ticks": 200,
  "hunger_cost": 4,
  "mainhand": "minecraft:iron_sword",
  "name": "Raise Dead",
  "description": "Summons a zombie minion to fight for you."
}

neoorigins:tame_mob

Active power that tames a hostile mob the player is looking at. The mob’s AI is rewritten to follow the player and target whatever recently hurt the owner. Tamed mobs are tracked via MinionTracker.

Field Type Required Default Description
range double no 16.0 Max raycast distance to a target
max_tamed int no 4 Maximum concurrently-tamed mobs per player
cooldown_ticks int no 200 Cooldown after each use
hunger_cost int no 3 Food points consumed per tame
despawn_ticks int no 36000 Lifespan of each tamed mob (30 min default)
death_damage float no 0.5 Damage taken by owner when a tamed mob dies

Target must be a hostile Mob that implements Enemy (so villagers, animals, and passive mobs won’t qualify). Bosses are rejected via a canUsePortal check.

Example:

{
  "type": "neoorigins:tame_mob",
  "range": 16.0,
  "max_tamed": 4,
  "cooldown_ticks": 200,
  "name": "Beastmaster",
  "description": "Tames hostile mobs to your will."
}

neoorigins:command_pack

Active power that commands every tamed mob (via tame_mob) to attack the entity the player is looking at.

Field Type Required Default Description
range double no 32.0 Max raycast distance to the target
cooldown_ticks int no 40 Cooldown after each use

Example:

{
  "type": "neoorigins:command_pack",
  "range": 32.0,
  "cooldown_ticks": 40,
  "name": "Sic 'Em",
  "description": "Orders your pack to attack your target."
}

neoorigins:horde_regen

Passively regenerates health on all tamed mobs (via tame_mob) on an interval. Healing only applies when the mob hasn’t taken damage recently.

Field Type Required Default Description
heal_amount float no 1.0 HP restored per interval
interval_ticks int no 120 Ticks between heal pulses
combat_cooldown_ticks int no 100 Minimum ticks since last damage before a mob heals

Example:

{
  "type": "neoorigins:horde_regen",
  "heal_amount": 1.0,
  "interval_ticks": 120,
  "name": "Pack Mender",
  "description": "Your tamed mobs regenerate out of combat."
}

neoorigins:exhaustion_filter

Filters out specific vanilla exhaustion sources so they don’t drain the player’s hunger. Handled via PlayerTickEvent.Pre.

Field Type Required Default Description
sources list of string no ["sprint"] Exhaustion sources to cancel, e.g. sprint, mining

Example:

{
  "type": "neoorigins:exhaustion_filter",
  "sources": ["sprint"],
  "name": "Tireless",
  "description": "Sprinting no longer drains hunger."
}

neoorigins:twin_breeding

On vanilla breeding, spawns a second baby with the configured probability.

Field Type Required Default Description
chance float no 1.0 Probability (0.0–1.0) of spawning a twin

Example:

{
  "type": "neoorigins:twin_breeding",
  "chance": 0.5,
  "name": "Shepherd",
  "description": "Animals bred near you sometimes produce twins."
}

neoorigins:less_item_use_slowdown

Reduces movement slowdown while using items (bow, shield, etc.). Applies a transient generic.movement_speed modifier while isUsingItem() is true and the held item matches.

Field Type Required Default Description
item_type string no any any, bow, shield, or any substring matched against the held item’s ID
speed_multiplier float no 0.5 ADD_MULTIPLIED_BASE value — 0.5 = +50% walk speed while using

Example — full-speed archery:

{
  "type": "neoorigins:less_item_use_slowdown",
  "item_type": "bow",
  "speed_multiplier": 0.8,
  "name": "Strider Archer",
  "description": "Barely slowed while drawing a bow."
}

neoorigins:no_projectile_divergence

Removes projectile divergence (perfect accuracy) for projectiles shot by the player. Handled via EntityJoinLevelEvent.

No fields beyond name / description.

Example:

{
  "type": "neoorigins:no_projectile_divergence",
  "name": "Dead Eye",
  "description": "Arrows and projectiles fly true."
}

neoorigins:quality_equipment

Equipment the player crafts or upgrades at a smithing table receives bonus attributes. Tools mine faster, weapons hit harder, armor is tougher, and everything lasts longer.

Field Type Required Default Description
bonus_mining_speed double no 0.25 Mining speed multiplier for tools (+25%)
bonus_attack_damage double no 0.20 Attack damage multiplier for weapons (+20%)
bonus_armor_toughness double no 1.0 Flat armor toughness bonus for armor pieces
durability_multiplier double no 0.10 Max durability increase for all damageable items (+10%)

What gets buffed:

  • Tools (pickaxe, axe, shovel, hoe, shears): +mining speed via MINING_EFFICIENCY attribute
  • Weapons (sword, axe, trident): +attack damage via ATTACK_DAMAGE attribute
  • Armor (helmet, chest, legs, boots): +armor toughness via ARMOR_TOUGHNESS attribute
  • All damageable items: +max durability via MAX_DAMAGE component

Example:

{
  "type": "neoorigins:quality_equipment",
  "name": "Quality Craftsmanship",
  "description": "Tools mine faster, weapons hit harder, armor is tougher, and everything lasts longer."
}

Bonuses are applied at craft/smelt time via attribute modifiers stored on the item. Items already carrying the quality modifier are not double-buffed.


neoorigins:more_smoker_xp

Grants bonus nutrition and saturation to food cooked in a smoker or furnace by the player. Applied at smelt-finish time.

Field Type Required Default Description
multiplier float no 2.0 Nutrition/saturation bonus multiplier

neoorigins:trade_availability

Periodically resets villager trade uses for every villager within a radius of the player.

Field Type Required Default Description
scan_interval int no 40 Ticks between scans
radius double no 8.0 Scan radius in blocks

Example:

{
  "type": "neoorigins:trade_availability",
  "scan_interval": 40,
  "radius": 8.0,
  "name": "Charismatic",
  "description": "Villagers near you reset their trades."
}

neoorigins:rare_wandering_loot

Adds rare items to the wandering-trader pool. This is a global effect hooked via WandererTradesEvent at mod init; the power’s presence on any player enables it worldwide.

No fields beyond name / description.

Example:

{
  "type": "neoorigins:rare_wandering_loot",
  "name": "Curio Magnet",
  "description": "Wandering traders bring rarer wares while you're around."
}

neoorigins:sneaky

Reduces mob detection range — hostile mobs only target the player when significantly closer than normal. Handled via LivingChangeTargetEvent.

Field Type Required Default Description
detection_multiplier double no 0.3 Detection range multiplier (0.3 = mobs see you at 30% of their normal range)

Example:

{
  "type": "neoorigins:sneaky",
  "detection_multiplier": 0.3,
  "name": "Shadow Tread",
  "description": "Mobs notice you from much closer than usual."
}

neoorigins:stealth

After sneaking continuously for a threshold number of ticks, the player gains Invisibility. The effect clears when sneaking stops. Toggleable off via keybind.

Field Type Required Default Description
activation_ticks int no 200 Sneak time required before invisibility kicks in (10 s default)

Example:

{
  "type": "neoorigins:stealth",
  "activation_ticks": 100,
  "name": "Vanish",
  "description": "Sneak for 5 seconds to turn invisible."
}

neoorigins:tree_felling

When the player breaks a log, BFS/DFS upward to break all connected logs. Skipped while sneaking so pack authors can still harvest single logs. Handled via BlockEvent.BreakEvent.

Field Type Required Default Description
max_blocks int no 64 Maximum connected logs to break per activation

Example:

{
  "type": "neoorigins:tree_felling",
  "max_blocks": 64,
  "name": "Arboreal Sense",
  "description": "Fells an entire tree when you chop its base. Sneak to break single logs."
}

neoorigins:craft_amount_bonus

Grants bonus items when crafting a specific output (e.g., more planks per log). Hooks PlayerEvent.ItemCraftedEvent directly, so bonuses only trigger on genuine crafting operations.

Field Type Required Default Description
output_item Identifier no minecraft:oak_planks Item to watch for
bonus_count int no 4 Maximum extra copies granted per craft

Example — quadruple planks from logs:

{
  "type": "neoorigins:craft_amount_bonus",
  "output_item": "minecraft:oak_planks",
  "bonus_count": 4,
  "name": "Lumberwright",
  "description": "Gets extra planks when crafting from logs."
}

The bonus fires once per craft event — shift-clicking triggers one event per output stack.


neoorigins:tamed_animal_boost

Boosts stats (max health, movement speed) on every tamed animal owned by the player within a radius. Applies transient attribute modifiers with fixed IDs; modifiers are removed when the power is revoked.

Field Type Required Default Description
health_bonus float no 4.0 ADD_VALUE bonus on max health
speed_bonus float no 0.1 ADD_VALUE bonus on movement speed
radius double no 32.0 Scan radius

Example:

{
  "type": "neoorigins:tamed_animal_boost",
  "health_bonus": 4.0,
  "speed_bonus": 0.1,
  "radius": 32.0,
  "name": "Kinship",
  "description": "Your tamed animals are hardier and faster."
}

neoorigins:tamed_potion_diffusal

When the player receives a positive mob effect, it’s also applied to nearby tamed animals owned by the player. Handled via MobEffectEvent.Added.

Field Type Required Default Description
radius double no 16.0 Scan radius for nearby tamed animals

Example:

{
  "type": "neoorigins:tamed_potion_diffusal",
  "radius": 16.0,
  "name": "Shared Fortitude",
  "description": "Positive potion effects also buff your tamed animals."
}

Pack-author patterns

Recipes that compose existing power types to cover use cases the built-in types don’t expose directly. Most rely on the Apoli compat surface (neoorigins:-prefixed types handled by OriginsCompatPowerLoader).

Periodic feed / heal via neoorigins:action_over_time

NeoOrigins’ built-in neoorigins:tick_action only ships a hardcoded TELEPORT_ON_DAMAGE behaviour. For any other periodic action — periodically restore hunger, heal a fixed amount, apply an effect, run an arbitrary entity-action — use neoorigins:action_over_time from the Apoli compat layer.

Periodic hunger restoration (e.g. for an origin that doesn’t eat conventionally):

{
  "type": "neoorigins:action_over_time",
  "interval": 40,
  "entity_action": {
    "type": "neoorigins:feed",
    "food": 1,
    "saturation": 0.2
  }
}

Periodic healing (independent of food / natural_regen_modifier):

{
  "type": "neoorigins:action_over_time",
  "interval": 60,
  "entity_action": {
    "type": "neoorigins:heal",
    "amount": 0.5
  }
}

interval is in ticks (20 = 1 second). The entity_action runs against the player. Any verb supported by ActionParser works (neoorigins:apply_effect, neoorigins:damage, neoorigins:execute_command, neoorigins:if_else for conditional wrapping, etc.).

neoorigins:cobweb_affinity

Spider-like mobility through cobwebs. Emits the cobweb_affinity capability tag — EntityMakeStuckInBlockMixin reads it to suppress the usual slowdown inside cobwebs, and MovementPowerEvents.onBreakSpeed reads it to multiply cobweb break speed by 10×.

Field Type Required Default Description
(no fields) Marker power.

Example:

{
  "type": "neoorigins:cobweb_affinity",
  "name": "Spider Affinity",
  "description": "Move and break cobwebs easily."
}

neoorigins:hide_hud_bar

Hides a HUD bar while the power is active. Emits hide_hunger_bar or hide_air_bar capability tags — GuiHudBarsMixin reads them to cancel the matching render call. Governed server-side by the hide_hud_bars common config (default true); if disabled, the power registers but the HUD still renders.

Field Type Required Default Description
bar string no "hunger" Which bar to hide. "hunger" / "food" hide the hunger bar; "air" / "oxygen" / "breath" hide the air bar. Any other value is a no-op.

Example:

{
  "type": "neoorigins:hide_hud_bar",
  "bar": "air",
  "name": "No Need to Breathe",
  "hidden": true
}

Typically paired with neoorigins:water_breathing or the Automaton pattern so the hidden bar is also being suppressed mechanically — hiding a bar that still ticks is disorienting.


neoorigins:particle

Spawns vanilla particles on the player at a fixed cadence. Server-side ServerLevel.sendParticles packetizes to nearby clients, so this works on dedicated servers without a client-side mixin.

Field Type Required Default Description
particle string | object yes Registry id of any SimpleParticleType (e.g. "minecraft:end_rod"). For parameterized particles use the object form: { "type": "minecraft:dust", "color": [1.0, 0.85, 0.2], "scale": 0.6 }
frequency int no 8 Emit every N server ticks. Lower = denser.
count int no 1 Particles per emission.
spread [x, y, z] floats no [0.25, 0.5, 0.25] Random offset spread per particle.
offset [x, y, z] floats no [0.0, 1.0, 0.0] Origin offset from player feet (defaults to ~chest height).
speed float no 0.0 Vanilla “speed” parameter — passes through to sendParticles. Most particle types use this as initial-velocity scale; some ignore it.
condition EntityCondition no always-true Optional gate evaluated each emission tick.

The Origins/Apoli :particle power type is auto-translated to this — packs that already use neoorigins:particle, apoli:particle, apace:particle, or apugli:particle work without modification (frequency and particle fields map 1:1).

Example — ambient sparkle aura:

{
  "type": "neoorigins:particle",
  "particle": "minecraft:end_rod",
  "frequency": 6,
  "count": 1,
  "spread": [0.4, 0.6, 0.4],
  "name": "Blessed Aura",
  "description": "Faint sparkles trail you wherever you walk."
}

Example — colored gold dust, water-only:

{
  "type": "neoorigins:particle",
  "particle": { "type": "minecraft:dust", "color": [1.0, 0.85, 0.2], "scale": 0.6 },
  "frequency": 10,
  "count": 2,
  "condition": { "type": "neoorigins:in_water" },
  "name": "Gilded Wake"
}

Sparkle-aesthetic vanilla particle picks: minecraft:end_rod (cleanest white twinkle), minecraft:firework (bright sparks, heavier), minecraft:enchant (swirling glyphs), minecraft:wax_on (puff burst), minecraft:scrape (copper sparks), minecraft:totem_of_undying (green/gold festive), minecraft:glow (Allay-style soft dots), minecraft:nautilus (subtle blue specs).


neoorigins:ender_gaze_immunity

Endermen do not aggro when the player looks at them. Emits the ender_gaze_immunity capability tag — an Enderman targeting mixin reads it to skip the usual line-of-sight check.

Field Type Required Default Description
(no fields) Marker power.

Example:

{
  "type": "neoorigins:ender_gaze_immunity",
  "name": "Void Gaze",
  "description": "Endermen ignore your gaze."
}

neoorigins:natural_glide

Grants elytra-style gliding without needing to equip an elytra. Press jump while falling to start fall-flying, exactly as if the player were wearing one.

Emits the natural_glide capability tag. The PlayerStartFallFlyingMixin reads it at the head of Player.tryToStartFallFlying and bypasses the standard chest-slot elytra check, calling startFallFlying() directly.

Field Type Required Default Description
(no fields) Marker power.

Example — Phantom spectral wings:

{
  "type": "neoorigins:natural_glide",
  "name": "Spectral Wings",
  "description": "Glide like an elytra user — no item required. Press jump while falling to spread your wings."
}

Preconditions match vanilla: not on ground, not already fall-flying, not in water, not levitating. Pair with neoorigins:elytra_boost for a full glide + launch-boost kit.

Contrast with neoorigins:flight — flight is creative-mode-style (hold space to ascend, fly freely). natural_glide is pitch-based gliding like a real elytra user.


neoorigins:bare_hand_tool

Makes the player’s empty hand behave like a specific vanilla tool for block-break purposes — tool-tier drop eligibility and break speed both match the configured tool item. Point at any tool item ID and the runtime looks up its tool component to determine which blocks qualify and at what speed.

Emits a capability tag of the form bare_hand_tool:<tool_id> (e.g. bare_hand_tool:minecraft:stone_pickaxe) — the tool ID is encoded in the tag so the client-side break-speed predictor and the server-side harvest check can both reach the answer without extra sync state. Wired via BareHandToolEvents on the NeoForge event bus (PlayerEvent.HarvestCheck + PlayerEvent.BreakSpeed). No mixins required.

Field Type Required Default Description
tool Identifier no minecraft:stone_pickaxe Any vanilla tool item ID. Determines both break-speed and drop-eligibility.

Example — Caveborn mines like a stone pickaxe with bare hands:

{
  "type": "neoorigins:bare_hand_tool",
  "tool": "minecraft:stone_pickaxe",
  "name": "Stone Fists",
  "description": "Bare hands mine like a stone pickaxe — break ores and stone without tools."
}

An origin can stack multiple instances to emulate several tool types simultaneously (e.g. a miner + lumberjack hybrid with both a pickaxe and an axe instance). When the player’s hand is empty the event handler iterates all active bare_hand_tool capabilities and picks the first that can correctly harvest the target — different tool types don’t conflict.

Only fires when the main hand is empty. Holding any item delegates to vanilla behaviour normally.


neoorigins:fortune_when_effect

Applies a virtual Fortune-level drop multiplier whenever a configured MobEffect is active on the player. The vanilla ApplyBonusCount.ORE_DROPS formula is used, giving the same rolling distribution as a real Fortune N pickaxe (count × (max(0, random(level + 2) - 1) + 1)).

Deliberately generic — any origin can emulate an enchantment-like buff by pairing this with any MobEffect (e.g. Caveborn’s Mining Fortune is gated by minecraft:luck granted via eating diamond). Wired via FortuneEffectEvents subscribing to BlockDropsEvent server-side.

Field Type Required Default Description
effect Identifier no minecraft:luck The gating MobEffect ID. Bonus only applies while this effect is active on the player.
level int no 2 Virtual Fortune level to roll. Higher = more extra drops.
target string no #c:ores Block tag the bonus applies to. Use #tagname syntax. Defaults to the NeoForge common ores tag; pack authors can narrow to a vanilla sub-tag like #minecraft:diamond_ores or a custom tag.

Vanilla parity: minecraft:ancient_debris is hardcoded-excluded because netherite is the single vanilla ore that ignores Fortune. Every other vanilla ore (iron, gold, copper, coal, diamond, emerald, lapis, redstone, nether_gold, nether_quartz) is covered by #c:ores and will roll the bonus normally.

Example — Caveborn Mining Fortune (gated by Luck from eating diamond):

{
  "type": "neoorigins:fortune_when_effect",
  "effect": "minecraft:luck",
  "level": 2,
  "target": "#c:ores",
  "name": "Mining Fortune",
  "description": "While Luck is active, ore blocks drop as if mined with Fortune II."
}

Stacking isn’t additive — only the first matching power fires per break. Author variants as separate powers with different effect gates rather than expecting them to compound.


neoorigins:dodge_chance

Percentage chance to completely dodge incoming damage. When triggered, the damage event is cancelled entirely. Applied via CombatPowerEvents.

Field Type Required Default Description
chance float no 0.15 Dodge probability (0.0–1.0). 0.15 = 15% dodge.

Example:

{
  "type": "neoorigins:dodge_chance",
  "chance": 0.2,
  "name": "Evasion",
  "description": "20% chance to dodge incoming attacks."
}

neoorigins:thorns_on_hit

Passive thorns — when the player takes melee damage, the attacker takes damage back. Optionally sets the attacker on fire. Applied via CombatPowerEvents.

Field Type Required Default Description
damage float no 2.0 Thorns damage dealt to the attacker.
fire_ticks int no 0 Fire ticks applied to the attacker (0 = no fire).

Example:

{
  "type": "neoorigins:thorns_on_hit",
  "damage": 3.0,
  "fire_ticks": 40,
  "name": "Ember Thorns",
  "description": "Melee attackers take 3 damage and catch fire."
}

neoorigins:light_level_effect

Applies a status effect when the player is at or below a certain light level. Removes the effect when they move to brighter light.

Field Type Required Default Description
max_light_level int no 4 Light level threshold (inclusive).
effect resource location yes Status effect to apply.
amplifier int no 0 Effect amplifier.
ambient boolean no true Ambient effect flag.
show_particles boolean no false Show effect particles.
show_icon boolean no false Show effect icon on HUD.

Example — invisibility in darkness:

{
  "type": "neoorigins:light_level_effect",
  "max_light_level": 4,
  "effect": "minecraft:invisibility",
  "name": "Shadow Meld",
  "description": "Become invisible in darkness."
}

neoorigins:low_hp_threshold

Applies one or more status effects when the player’s HP drops below a percentage threshold. Effects are removed when HP rises above the threshold.

Field Type Required Default Description
threshold float no 0.5 HP fraction (0.0–1.0). 0.5 = below 50%.
effects list of { effect, amplifier } yes Effects to apply while below threshold.

Example — berserker rage below 25% HP:

{
  "type": "neoorigins:low_hp_threshold",
  "threshold": 0.25,
  "effects": [
    { "effect": "minecraft:strength", "amplifier": 1 },
    { "effect": "minecraft:speed", "amplifier": 0 }
  ],
  "name": "Death's Embrace",
  "description": "Gain Strength II and Speed below 25% HP."
}

neoorigins:burn

Sets the player on fire at a configurable interval. Used for origins that are perpetually burning or catch fire under certain conditions (pair with a condition on the power JSON to gate on daylight, biome, etc.).

Field Type Required Default Description
interval int no 20 Ticks between fire applications.
burn_duration int no 100 Fire duration in ticks per application.

Origins compat: translates origins:burn.

Example — smoulder in sunlight:

{
  "type": "neoorigins:burn",
  "interval": 40,
  "burn_duration": 60,
  "condition": { "type": "neoorigins:exposed_to_sun" },
  "name": "Sun Scorch",
  "description": "Burns when exposed to direct sunlight."
}

neoorigins:walk_on_fluid

Allows the player to walk on the surface of a fluid (water, lava, or both), using the same vanilla mechanic as Striders (LivingEntity.canStandOnFluid). The player can still dive by jumping into the fluid.

Field Type Required Default Description
fluid string no both Which fluid to walk on: water, lava, or both

Example — walk on water:

{
  "type": "neoorigins:walk_on_fluid",
  "fluid": "water",
  "name": "Water Walking",
  "description": "Can walk on water surfaces."
}

Origins compat: translates origins:walk_on_fluid.


neoorigins:extra_inventory

Gives the player an extra inventory opened via the skill keybind. Uses vanilla’s chest UI, dynamically sized to fit the configured slot count (1-6 rows). Contents are persisted across sessions.

Field Type Required Default Description
size int no 9 Number of slots (rounded up to nearest row of 9, max 54 = 6 rows)
drop_on_death bool no false Whether to drop contents on death

Example — 27-slot extra inventory:

{
  "type": "neoorigins:extra_inventory",
  "size": 27,
  "name": "Shulker Inventory",
  "description": "Press your skill key to open an extra inventory."
}

Origins compat: translates origins:inventory / origins:shulker_inventory.


neoorigins:ignore_water

Makes the player unaffected by water: full movement speed in water (via water_movement_efficiency attribute) and immune to water-current pushing (via EntityIgnoreWaterMixin). Emits the ignore_water capability tag.

Field Type Required Default Description
(no fields) Marker power.

Origins compat: translates origins:ignore_water.

Example:

{
  "type": "neoorigins:ignore_water",
  "name": "Hydrophobic",
  "description": "Water doesn't slow you down or push you around."
}

neoorigins:overlay

Renders a full-screen texture overlay on the player’s HUD. Client-side only — the server emits a capability tag encoding the texture path and strength; VisualEffectsHandler on the client reads it and draws the overlay.

Field Type Required Default Description
texture resource location yes Overlay texture (e.g. "minecraft:textures/misc/pumpkinblur.png").
strength float no 1.0 Opacity (0.0 = invisible, 1.0 = fully opaque).

Origins compat: translates origins:overlay.

Example — dim vignette:

{
  "type": "neoorigins:overlay",
  "texture": "minecraft:textures/misc/pumpkinblur.png",
  "strength": 0.3,
  "name": "Tunnel Vision",
  "description": "Your peripheral vision is dimmed."
}

neoorigins:model_color

Tints the player model with an RGBA colour. Client-side rendering applies a colour multiply via RenderSystem.setShaderColor during the player render pass.

Field Type Required Default Description
red float no 1.0 Red channel (0.0–1.0).
green float no 1.0 Green channel (0.0–1.0).
blue float no 1.0 Blue channel (0.0–1.0).
alpha float no 1.0 Alpha channel (0.0–1.0).
condition object no EntityCondition that gates when the tint is applied. When absent, the tint is always active. When present, the colour only shows while the condition evaluates true.

Origins compat: translates origins:model_color.

Example — ghostly blue tint:

{
  "type": "neoorigins:model_color",
  "red": 0.6,
  "green": 0.7,
  "blue": 1.0,
  "alpha": 0.8,
  "name": "Spectral Hue",
  "description": "Your form shimmers with a faint blue glow."
}

Example — red glow at low health:

{
  "type": "neoorigins:model_color",
  "red": 0.9, "green": 0.2, "blue": 0.2, "alpha": 0.7,
  "condition": { "type": "neoorigins:health", "comparison": "<=", "value": 6 },
  "name": "Blood Rage",
  "description": "Your body glows red when near death."
}

neoorigins:lava_vision

Increases the player’s vision distance while submerged in lava by pushing back the lava fog far plane. Client-side rendering is handled by VisualEffectsHandler via ViewportEvent.RenderFog.

Field Type Required Default Description
strength float no 3.0 Fog distance multiplier (higher = further vision in lava).

Origins compat: translates origins:lava_vision (maps the s field to strength).

Example:

{
  "type": "neoorigins:lava_vision",
  "strength": 5.0,
  "name": "Magma Sight",
  "description": "See clearly through molten rock."
}

neoorigins:shader

Applies a post-processing shader to the player’s view via GameRenderer.loadEffect(). Origins-style full paths (e.g. minecraft:shaders/post/desaturate.json) are automatically normalised to the MC resource location format.

Field Type Required Default Description
shader resource location yes Shader id (e.g. "minecraft:desaturate", "minecraft:spider").

Origins compat: translates origins:shader.

Example — desaturated phantom view:

{
  "type": "neoorigins:shader",
  "shader": "minecraft:desaturate",
  "name": "Phantom Eyes",
  "description": "The world appears washed of colour."
}

neoorigins:wraith_phase

Toggleable spectral phasing. When active the player walks through solid blocks horizontally. While inside a solid block, flight enables (jump = up, shift = down). Holding shift on the surface phases downward into the ground. Certain blocks cannot be phased through.

Field Type Required Default Description
blocked_blocks list of string no ["minecraft:obsidian", "minecraft:crying_obsidian", "minecraft:bedrock"] Block IDs that cannot be phased through.
exhaustion_per_tick float no 0.15 Hunger drain per tick while inside solid blocks.
always_on bool no false When true, the power is passive (always active, no toggle, no skill key slot). Configurable per tier in the mod config.

Emits the wall_phase capability while active (toggled on or always_on).

Example — base wraith phase:

{
  "type": "neoorigins:wraith_phase",
  "blocked_blocks": ["minecraft:obsidian", "minecraft:crying_obsidian", "minecraft:bedrock"],
  "exhaustion_per_tick": 0.15
}

Example — apex tier (only bedrock blocks, minimal drain):

{
  "type": "neoorigins:wraith_phase",
  "blocked_blocks": ["minecraft:bedrock"],
  "exhaustion_per_tick": 0.075
}

neoorigins:resource

A named, persistent, HUD-visible resource bar. Values are stored per-player and synced to the client for rendering. Supports regeneration with conditions, threshold actions when min/max are hit, and compatibility with the Origins change_resource / resource condition system.

Field Type Required Default Description
min int no 0 Minimum resource value
max int no 100 Maximum resource value
start_value int no max Initial value when granted
regen_rate int no 0 Amount regenerated per interval (0 = no regen)
regen_interval int no 20 Ticks between regen ticks
regen_condition EntityCondition no always-true Condition for when regeneration occurs
min_action EntityAction no noop Action triggered each tick while resource is at minimum
max_action EntityAction no noop Action triggered each tick while resource is at maximum
hud_render object no HUD display settings (see below)
hidden bool no false Whether to hide the bar from the HUD

hud_render object:

Field Type Required Default Description
label string no "Resource" Display label on the HUD bar
color string no "#55AAFF" Bar color in #RRGGBB or #AARRGGBB hex format
should_render bool no true Origins compat — when false, hides the bar

Example — mana bar that regens while not in combat:

{
  "type": "neoorigins:resource",
  "min": 0,
  "max": 100,
  "start_value": 100,
  "regen_rate": 1,
  "regen_interval": 20,
  "regen_condition": { "type": "neoorigins:out_of_combat" },
  "hud_render": {
    "label": "Mana",
    "color": "#55AAFF"
  },
  "name": "Mana Pool",
  "description": "Magical energy that regenerates outside of combat."
}

neoorigins:slime_moisture

Custom resource bar (0.0–1.0 float) that drains passively over time, faster in dry biomes (desert, badlands, savanna) and much faster when on fire. Replenished by standing in water or rain. Triggers threshold effects: Regeneration above 75%, armor penalty below 10%, and damage-over-time at 0%.

Field Type Required Default Description
drain_per_tick float no 0.0004 Base moisture drain per tick
dry_biome_drain_multiplier float no 3.0 Drain multiplier in desert/badlands/savanna biomes
fire_drain_multiplier float no 10.0 Drain multiplier when player is on fire
water_refill_per_tick float no 0.005 Moisture gained per tick in water or rain
regen_threshold float no 0.75 Moisture level above which Regeneration I is applied
armor_penalty_threshold float no 0.10 Below this, -4 armor is applied
dot_threshold float no 0.0 Below this, damage-over-time triggers
dot_damage float no 1.0 Damage per interval when below dot_threshold
dot_interval int no 40 Ticks between damage ticks

Example:

{
  "type": "neoorigins:slime_moisture",
  "name": "Moisture",
  "description": "Must stay hydrated. Dries out faster in hot biomes."
}

neoorigins:slime_death_save

Death prevention mechanic for slime-themed origins. When the player would die with moisture above the threshold, they “split” instead: teleported to a random location, max HP reduced to 2 hearts, which gradually recovers over time.

Field Type Required Default Description
moisture_threshold float no 0.75 Moisture level required to trigger the save
teleport_distance int no 50 Horizontal blocks to teleport
teleport_y_range int no 10 Random Y offset range (±)
split_max_hp float no 4.0 Max HP while “split” (2 hearts)
recovery_ticks int no 2400 Ticks for HP to recover to normal (default: 120 seconds)

Example:

{
  "type": "neoorigins:slime_death_save",
  "name": "Slime Split",
  "description": "Instead of dying, splits and teleports away — but at 2 hearts."
}

Requires a companion slime_moisture power to provide the moisture value. Without it, the death save never triggers (moisture defaults to 1.0 and never changes).


neoorigins:slime_level_hp

Grants bonus max HP based on the player’s experience level. The bonus resets on death (since vanilla drops XP on death).

Field Type Required Default Description
levels_per_hp int no 10 Experience levels needed per +1 max HP
max_bonus_hp int no 20 Maximum HP bonus cap

Example — +1 HP every 10 levels, capped at +20:

{
  "type": "neoorigins:slime_level_hp",
  "levels_per_hp": 10,
  "max_bonus_hp": 20,
  "name": "Growth",
  "description": "Grows tougher with experience. Resets on death."
}

Composing power sets

Individual 2.0 power types are intentionally narrow so they can be combined. For a “rat”-style origin that marks small mobs it kills and gets a heal buff when attacking anything on the list:

  • neoorigins:entity_set — declares the UUID set (e.g. mypack:kill_list)
  • neoorigins:action_on_event with event: kill, entity_action: { type: neoorigins:add_to_set, set: mypack:kill_list } — appends victims to the set
  • neoorigins:condition_passive with condition: { type: origins:target_in_set, set: mypack:kill_list } and entity_action: { type: neoorigins:heal, amount: 0.5 } — heals when attacking a marked target

Each piece is a separate power entry in the origin’s powers array. The entity_set power carries no behaviour on its own — it’s the shared name other powers read and write.