跳到主要内容

物品数据

信息

广义上的 物品数据 分为三层:常量层 (Properties)数据层 (Data)计算层 (Computation)

物品数据均为结构化数据,有的存在内存里的,有的实实在在存在物品里的,也有的根据实际数据计算得的。

Tips: 三层数据都是通过直接执行 动作语句块 得到,也就是都支持动作块的语法。

常量层

常量层的数据在物品生成之前就已经确定。

而且同元素标识下的每一个物品都共用这一套常量数据。

可以用来存放一些 数据层 或者 计算层 需要用到的信息。

节点名: propsconsts

配置示例:

ExampleItem:
item:
...
props:
常量1: 1
常量2: [10,20]
变量3: {type: "SWORD", attack: 20}

数据层

数据层的数据在物品生成确定。

同元素表示的不同物品可以有不同的数据层数据。

数据层的数据会实打实存储在物品中,因此数据层的值的数据类型是被限定的,只允许 intdoubleString 等基本数据类型和 MapList 两种复杂数据类型。

节点名: data

配置示例:

ExampleItem:
item:
...
data:
attack_damage: 100
owner: player.getName()
list: [1, 2, 3, 4]
...

其物品的数据结构大概如下:

{
...
"minecraft:custom_data": {
"Ratziel": {
...
"data": {
"attack_damage": 100,
"owner": "实际的玩家名称",
"list": [
1, 2, 3, 4
]
...
}
}
}
}

计算层

计算层在三层数据中最后进行。

其主要意义在于通过计算来确定物品信息

可以直接调用 常量层数据层 的数据,

其的值都是实时确定的。

节点名: computecomputeddefine

我们可以使用标签来直接调用计算层数据。

配置示例:

ExampleItem:
item:
# 常量层
properties:
number: 1
# 数据层
data:
hello: "Hello" # String 基本类型
# 计算层
compute:
world: |-
print("Hello World!")
"World"
helloWorld: 'hello + "World"' # hello 调用数据层数据
lore:
- '{compute:world}' # 调用计算层数据
- '{define:helloWorld}'

对于标签的解释在下一页。