
Kubejs IU
用于Industrial Upgrade机器配方的KubeJS桥接:可在脚本中检查、添加、移除和替换这些配方。包含游戏内命令。
KubeJS IU
从 KubeJS 编写 Industrial Upgrade (IU) 的机器加工配方。
问题所在
IU 拥有两套完全独立的配方系统:
| 合成配方 | 机器加工配方 | |
|---|---|---|
| 位置 | 数据包 data/industrialupgrade/recipe/*.json |
Java 内存:com.denfop.api.recipe.RecipesCore.map_recipes |
| 示例 | 合成机器方块 | 粉碎矿石、制作 ME 存储组件 |
| 配方 id | 有 | 无 |
| 能否从 KubeJS 编辑 | 可以(ServerEvents.recipes) |
完全不行 |
因此整合包作者会撞上这样的死胡同:
event.remove({ id: 'industrialupgrade:...' })无法删除粉碎机配方——它不是数据包配方。event.replaceInput(...)对 IU 的自定义配方类型静默无效;对于没有 schema 的配方类型,KubeJS 会回退到空操作实现。- 机器配方根本没有 id,所以没有任何东西可以定位。
本模组将 IU 的内部配方 API 暴露为普通的静态方法,KubeJS(或任何其他模组)可以通过 Java.loadClass 调用它们。
快速开始
// kubejs/startup_scripts/iu_machine.js -- 必须放在 startup_scripts 中
StartupEvents.postInit(event => {
const iu = Java.loadClass('com.kubejsiu.recipe.IURecipeBridge')
// 粉碎机:末影珍珠 -> 末影粉
iu.addItemRecipe('macerator', 'minecraft:ender_pearl', 1, 'ae2:ender_dust', 1)
// 带温度的多槽机器:芯片制造机(5 槽)
iu.addMultiRecipe('microchip',
['ae2:cell_component_1k', 'ae2:certus_quartz_crystal',
'industrialupgrade:itemdust/silicon_dust', 'industrialupgrade:itemingots/osmium',
'industrialupgrade:itemingots/yttrium'],
[1, 1, 1, 1, 1],
'ae2:cell_component_4k', 1, 0, 4500)
})
在游戏内查看配方
/kubejs_iu machines 列出所有机器名称、槽位数量和配方数量
/kubejs_iu recipes macerator 列出某个机器的所有配方
/kubejs_iu dump 将完整机器列表写入日志
机器名称按字面匹配,拼写错误会被静默忽略,因此请务必先检查名称。
API
添加配方
| 方法 | 备注 |
|---|---|
addItemRecipe(machine, in, inCount, out, outCount) |
单物品到物品 |
addItemRecipeTag(machine, tag, inCount, out, outCount) |
接受 #c:plates/iron 之类的标签;每个标签成员生成一个配方 |
addMachineRecipe(machine, in, inCount, out, outCount, energy) |
带能量消耗 |
addMultiRecipe(machine, ids[], counts[], out, outCount[, energy][, temperature]) |
多槽机器 |
addFluidRecipe(machine, inFluid, inMb, outFluid, outMb) |
流体机器 |
addFluidItemRecipe(machine, fluid, mb, in, inCount, out, outCount) |
流体 + 物品到物品 |
addCentrifugeRecipe(in, inCount, out, outCount) |
热力离心机 |
addSeedBagRecipe(in, cropId) |
压缩机种子袋 |
查看
listMachines() - describeMachine(machine) - countRecipes(machine) - listRecipes(machine) - dumpMachines()
移除与替换
| 方法 | 备注 |
|---|---|
removeByInput(machine, in, inCount) |
移除第一个输入匹配的配方 |
removeByOutput(machine, out, outCount) |
移除产出该物品的配方 |
clearMachine(machine) |
清空该机器(物品和流体),返回移除的数量 |
removeFluidRecipe(machine) |
仅清空该机器的流体配方 |
replaceItemRecipe(machine, ...) - replaceFluidRecipe(machine, ...) |
先清空,再注册 |
reloadRecipes(className) |
重新运行某个注册类的默认配方(传类名,而不是机器名) |
所有方法在失败时返回 false / 0 并记录一条警告,而不是向 KubeJS 抛出异常。
规则与注意事项
- 在
kubejs/startup_scripts/中的StartupEvents.postInit里调用 API。此时 IU 的配方表已经存在,且addRecipe是追加操作——若把它放在server_scripts中,每次/reload都会重复添加配方。 - 修改这些脚本后请重启游戏;
/reload不会重新运行启动脚本。 energy/temperature值为0表示“使用机器默认值”。
需求
- Minecraft 1.21.1,NeoForge 21.1.x
- Industrial Upgrade —— 必需
- KubeJS —— 可选;桥接代码未引用任何 KubeJS 类,因此其他模组也可以调用
说明
- 3 个类,0 个 mixin,0 个方块,0 个物品,0 个数据包。仅服务端安装即可运行。
- 不包含 Industrial Upgrade 的任何代码、资源或数据;IU 仅为编译时依赖。
- 许可证:MIT。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。