Skip to main content

Power JSON Format

A Power is the core functional unit of an origin, granting various traits and effects to the player.

File Location

Power JSON files go in data/<namespace>/origins/power/ within your data pack.

For example, data/origins/origins/power/climbing.json has the ID origins:climbing.

Common Fields

All power types share these base fields:

FieldTypeDefaultDescription
typeIdentifierrequiredThe power type ID, determines the power's functionality
nameText ComponentoptionalDisplay name. Falls back to translation key if omitted
descriptionText ComponentoptionalDescription text. Falls back to translation key if omitted
hiddenBooleanfalseWhether to hide this power in the origin's power list
conditionEntity ConditionoptionalCondition that must be met for the power to be active
loading_priorityInteger0Loading priority; higher numbers load later
badgesList of Badge[]Badges displayed next to the power name. Supports ID references or inline definitions

Translation Keys

Power names and descriptions default to language keys:

  • Name: power.<namespace>.<path>.name
  • Description: power.<namespace>.<path>.description

You can also specify them directly via the name/description fields.

Badge References

The badges List can mix both formats:

// Reference existing Badge by ID
"badges": [
"origins:toggle",
"origins:active"
]

// Inline Badge definition
"badges": [
{
"type": "origins:tooltip",
"sprite": "origins:textures/gui/badge/star.png",
"text": "A gold star!"
}
]

Examples

A basic climbing power:

{
"type": "origins:climbing",
"condition": {
"type": "origins:power_active",
"power": "origins:primary_key"
},
"badges": [
"origins:toggle"
]
}

A launch power with HUD cooldown display:

{
"type": "origins:launch",
"cooldown": 600,
"hud_render": {
"sprite_location": "origins:textures/gui/resource_bar.png",
"bar_index": 4
},
"sound": "minecraft:entity.parrot.fly",
"speed": 2,
"key": {
"key": "key.origins.primary_active",
"continuous": true
}
}
note

Key differences from the old version:

  • name/description are now optional Component types (supports plain string shorthand)
  • badges supports both ID references and inline badge definitions
  • Base namespace changed from apoli to origins