基本概念
本页定义贯穿所有 Origins JSON 文件的基础数据类型。理解这些类型是使用能力、动作、条件以及其他 JSON 格式的前提。
标识符(Identifier)
标识符(Identifier,也称为 Resource Location)是形如 namespace:path 的字符串,用于唯一标识一个游戏对象。
- 格式:
namespace:path - 示例:
minecraft:diamond、origins:fire_immunity - 默认命名空间: 如果未指定命名空间(例如
diamond),Minecraft 会默认使用minecraft:。
标识符用于:
- 物品(
minecraft:diamond_sword) - 方块(
minecraft:stone) - 实体(
minecraft:creeper) - 能力(
origins:arcane_skin) - 起源(
origins:avian) - 状态效果(
minecraft:speed) - 附魔(
minecraft:sharpness) - 生物群系(
minecraft:desert) - 维度(
minecraft:the_nether) - 以及更多...
通配符标识符(Wildcard Identifier)
通配符标识符是一种特殊的标识符。它可以像普通标识符一样使用,但另外支持 * 通配符字符。
命名空间中的所有 * 字符都会被替换为当前能力的命名空间。路径中的所有 * 字符都会被替换为当前能力的路径。
例如:example:power 中的 *:*_toggle 会被解析为 example:power_toggle。
字符串(String)
字符串是一段文本字符序列。
- 示例:
"Hello World"、"key.origins.primary_active" - 用于: 名称、消息、按键绑定 ID、操作名称、命令文本。
在 JSON 中,字符串始终用双引号 "..." 包裹。
整数(Integer)
整数是不含小数的数字(正数、负数或零)。
- 示例:
0、42、-5 - 用于: 槽位索引、栏索引、优先级数值、整数量计数。
整数不能带小数位。
浮点数(Float)
浮点数是带小数的数字。
- 示例:
1.0、0.5、-2.75 - 用于: 修饰器数值、坐标、颜色通道、速度、概率。
浮点数可以带小数点也可以不带(例如 1 和 1.0 都是合法的浮点数)。
双精度浮点数(Double)
双精度浮点数是双精度浮点数值(与 Float 类似,但精度更高)。
- 示例:
1.0、0.5 - 用于: 位置坐标、需要高精度的速度向量。
在大多数 Origins JSON 场景中,Float 与 Double 可以互换使用。
布尔值(Boolean)
布尔值是 true/false 值。
- 示例:
true、false - 用于: 开关项(
invert、hidden、negative、continuous)、条件。
列表(List)
列表是用方括号 [...] 包裹的有序值集合。
- 示例:
["minecraft:sharpness", "minecraft:protection"]
- 用于: 标识符集合、修饰器集合、动作集合。
列表会保留顺序。
值或列表(ValueOrList)
许多字段接受单个值或值的列表。这类字段的类型标注为 Value or List。
- 单值示例:
"modifier": {"operation": "add_base_early","value": 0.5}
- 列表示例:
"modifier": [{"operation": "add_base_early","value": 0.5},{"operation": "multiply_total_multiplicative","value": 1.5}]
只需要一个值时,可以使用单对象的简写语法。需要多个值时,使用列表语法。
引用或标签列表(ReferenceOrTagList)
ReferenceOrTagList 始终是一个 列表,其中每个元素既可以是普通的标识符,也可以是标签(以 # 为前缀)。与 ValueOrList 不同,此类型始终使用列表语法——单个条目没有简写形式。
"block": ["minecraft:stone", "#minecraft:logs", "minecraft:dirt"]
标签是以 # 为前缀的标识符,引用数据包标签文件中定义的一组条目。
JSON 对象(JSON Object)
JSON 对象(也称为“映射”,Map)是用花括号 {...} 包裹的键值对集合。
- 示例:
{"modifier": {"operation": "add_base_early","value": 1.0}}
- 用于: Origins JSON 文件中几乎所有复杂结构。
每个键都是字符串,每个值可以是任意合法的 JSON 类型(字符串、数字、布尔值、列表、对象或 null)。