Layer JSON Format

This is the format of a JSON file describing an origin layer. Origin layers are a collection of origins used for making a player choose one origin for each existing origin layer. For example, the classes from the Origins: Classes add-on are on a separate layer, thus you can choose a "class" in addition to choosing an origin.

Origin Layer JSON files need to be placed inside the data/<namespace>/origin_layers folder of your datapack. The said files can be referenced as namespace:path/to/origin_layer (data/namespace/origin_layers/path/to/origin_layer) in the /origin (Command).

The most common use is to create a file with the name origin.json in the data/origins/origin_layers folder of your datapack with a replace boolean field value of false

Fields

Field Type Default Description
order Integer optional Specifies the order of this layer in the choose and view origin screen among the other layers. Smaller numbers mean it appears before layers with larger numbers.
origins Array of Identifiers and/or Conditioned Origins Defines the origins that should be in this layer. Identifier strings and Conditioned Origin objects can be mixed in the same array.
enabled Boolean true If set to false, this layer will be unavailable.
replace Boolean false If set to false, the data in this file will be appended to an already existing version of this layer. Useful to add custom origins to the default origin layer for example. If set to true, the layer will be replaced and only the origins specified in this file will appear.
name String optional The display name of the layer. Will show at the top of the GUI saying "Choose your [name here]". Can be a literal string or a translation key.
gui_title GUI Title optional If specified, the choose/view origin title for the layer (the text that shows at the top of the GUI) will be overridden by this.
missing_name String optional The display name of the origin that will show when viewing the origin if no origin has been assigned to this layer. Can be a literal string or a translation key.
missing_description String optional The description of the origin that will show when viewing the origin if no origin has been assigned to this layer. Can be a literal string or a translation key.
allow_random Boolean false If set to true, this layer will show an option for choosing a random origin.
allow_random_unchoosable Boolean false Whether origins which are unchoosable (unchoosable field set to true in the origin file) should be included in the random option. Can for example be used to force players to choose a random origin, by setting this to true and making all origins in the layer unchoosable.
exclude_random Array of Identifiers optional If specified, the origins included in this list will not be picked by the random choice.
default_origin Identifier optional If set, the origin with this namespace and ID will automatically be chosen for a new player. If an orb of origin is used later on, the player will be able to choose another origin then and the default_origin will not apply. Could for example be used to make all players start as human, and then use the orb as a progression item to select an origin.
auto_choose Boolean false If set to true, this layer will automatically pick an origin for the player if only one option is available. This also applies when an orb of origin is used.
hidden Boolean false If set to true, this layer will be hidden from the "View Origin" screen.
loading_priority Integer 0 Specifies when this layer is loaded. Higher numbers mean it's loaded later, which means it will override those with lower loading priorities which share the same ID.

Examples

{
    "order": 1,
    "origins": [
        "origins:arachnid",
        "origins:avian",
        "origins:blazeborn",
        "origins:elytrian",
        "origins:enderian",
        "origins:feline",
        "origins:human",
        "origins:merling",
        "origins:phantom",
        "origins:shulk"
    ],
    "name": "Second Origin",
    "missing_name": "None",
    "missing_description": "You currently don't have a secondary origin selected."
}

This example will make it possible to select a secondary base origin after choosing an origin in the origins:origin (data/origins/origin_layers/origin.json) origin layer as long as the example is a separate origin layer.