为整合包定义基础价值
这篇文档对应的使用场景是:
- 你在做整合包,希望先给核心资源建立一套统一价目表
- 你不希望所有物品都依赖配方自动推导
- 你想“锁死”某些物品的价值,不受后续配方变化影响
什么是基础价值
基础价值是某个物品的固定价值。
只要一个物品有基础价值,配方生成值就不会覆盖它。
这件事非常关键,因为它决定了基础价值更适合做“锚点”。
典型锚点包括:
- 原矿与金属锭
- 宝石
- 农作物
- 核心材料
- 你希望作为整套经济系统基准的物品
为什么整合包要先定义基础价值
因为完全依赖配方生成有两个问题:
- 某些物品没有可靠配方来源,推不出值
- 一旦配方链很长,前端价格波动会一路传导,可能偏离你想要的经济设计
所以实际做包时,更常见的方式是:
- 先给关键原材料定义基础价值。
- 再让其它中间产物和成品通过配方自动推导。
这样既省手写工作量,也能保住整体价格体系的稳定性。
脚本位置
把脚本写在 kubejs/server_scripts。
One Enough Value 暴露的事件名是:
OEVEvents.addItemValue
最基础的写法
OEVEvents.addItemValue(event => {
event.addBaseItemValue('minecraft:iron_ingot', 256)
event.addBaseItemValue('minecraft:gold_ingot', 648)
event.addBaseItemValue('minecraft:diamond', 8192)
})
这段脚本的含义很直接:
- 铁锭固定价值 256
- 金锭固定价值 648
- 钻石固定价值 8192
之后无论存在多少条能产出这些物品的配方,最终都以这里定义的基础值为准。
addBaseItemValue 能接受什么
源码里这个方法接受的是 Ingredient,因此你不仅可以传单物品,还可以传标签。
给单个物品设置价值
OEVEvents.addItemValue(event => {
event.addBaseItemValue('minecraft:emerald', 16384)
})