变量
标签
ItemSystem
字数
825 字
阅读时间
4 分钟
这里的变量指的是 Asahi 中的变量 ItemSystem只不过是多加了 2 种定义变量的方式,以及对变量在物品上的生命周期做了点规范而已 下面的内容,需要你有贯穿Asahi 物品元 的知识储备,请熟读
ItemSystem 中的 定义变量
set
内联函数声明变量的方法
参数
- 变量名
- to/= 值
作用
定义变量
- 会覆盖已有变量, 除非你使用
ifndef - 不会保存到物品 NBT,供自动更新/重新构建物品时使用,除非你使用
save函数具体请看函数列表这里不过多阐述
例子
set a to check 1 == 2
a 赋值为 false 并返回 false
def
参数
- 变量名
- to/= 值
作用
定义变量,与set的区别是
- 只能在
物品生产流程中使用 - 若已经有此变量名的变量,则跳过定义
- 变量值会自动保存到物品 NBT,供自动更新/重新构建物品时使用
例子
def a to check 1 == 2
override
参数
- 变量名
- to/= 值
作用
定义变量,与def的区别是
- 会覆盖已有的变量
例子
set a to 1
override a to check 1 == 2a 赋值为 false 并返回 false (无视已有的变量a,直接覆盖)
define 物品元
你也可以使用 define 物品元来定义变量
参数
key: {变量id}type: {变量类型}save: {是否保存至NBT}- 可选,默认 truecache: {是否缓存}- 可选,默认 trueoverride: {是否覆盖}- 可选,默认 false
作用
定义变量
例:
yaml
key: "变量1号"
#变量类型,后面会详细讲
type: "strings"
values:
- "第一行"
- "第二行"ItemSystem 中变量的调用
就像内联函数中一样,直接通过&变量名调用,并且支持中缀动作
你可以在物品流程中的任何地方(除了 meta 和各种 type)调用变量
下面细讲一下 define 物品元中用到的变量类型
define 物品元的变量类型
见下一节变量类型
细谈 cache(缓存) 与 save(保存)
如果你仔细研读了上文,不难得出:
set函数 = 无cache+ 无save(需要手动去设置)def函数 =cache+savedefin物品元 =cache+save均自定义
下面谈谈 cache 与 save 的具体作用
cache(缓存)
即变量在赋值后不再改变 若不开启 cache,则变量的值会视情况一直动态,不固定
前提是你的变量值本身就是可动态的,而不是什么常量
save(保存)
变量会存到构建出的物品的 NBT 中,供自动更新/重新构建物品时使用
override (重载/覆盖)
会覆盖已有变量,用于覆盖父物品的变量,详见物品继承