MDT模组消耗器制作

消耗器在MDT很是常见,如消耗物品加工的工厂、使用和产生电能的建筑等等都会用到它。本教程不会放过多的源码(给路径),需自己去翻。
注:消耗器是给方块建筑用的,不要在其他不属于方块的类型的内容里加消耗器

消耗器 Consumer
在了解下面内容前,应该要知道他们的最后的归属类型 Consume,三个属性。方法就不用想了,那不是Json能写的
但是这个TODO意味着后期这个可能会改变,当前教程针对v137可用
optional: 是否为一个可选的消耗
booster: 是否为一个增益的消耗(也要 optional 为 true)
update: 是否自动更新(?

这是ContentPhaser里的一段代码,这个文件里的内容就是转换json模组的
第一行判断:有 consumes 字段且存储内容为 Object 类型({})
后面的循环:查找 consumes 的孩子,若有孩子不属于任何一个,抛出异常
物品 Item
item/单个物品
值作为一个字符串,添加一个物品的名称,例:

itemCharged/放电物品消耗过滤
值作为一个对象(world\consumers\ConsumeItemCharged.java),例:
minCharge: 消耗所需物品 charge 最低值

itemFlammable/燃烧物品消耗过滤
值作为一个对象(world\consumers\ConsumeItemFlammable.java)
minFlammability: 消耗物品 flammability 最低值

itemRadioactive/放射物品消耗过滤
作为一个对象(src\world\consumers\ConsumeItemRadioactive.java)
minRadioactivity: 消耗物品 radioactivity 最低值

itemExplosive/爆炸物品消耗过滤
作为对象(world\consumers\ConsumeItemExplosive.java)
minExplosiveness: 消耗物品 explosiveness 最低值

itemExplode/导致方块爆炸物品过滤
一般不要单独使用
作为对象(world\consumers\ConsumeItemExplode.java)
damage: 受到伤害时扣血量
threshold: 在物品 explosiveness 大于本值情况下,才会有几率扣血且越大扣血几率越大
baseChance: 基础扣血几率,扣血几率见下(前提是 反应堆爆炸 开启)

items/消耗物品堆
值为数组: 消耗一堆东西,ItemStack[]类型
值为对象(world\consumers\ConsumeItems.java):
items: 消耗的物品

液体 Liquid
每一个液体 消耗/过滤 器都有 amount 字段
liquidFlammable/可燃液体消耗过滤
值为对象(world\consumers\ConsumeLiquidFlammable.java)
minFlammability: 消耗液体 flammability 最小值

liquid/消耗液体
值为对象(world\consumers\ConsumeLiquid.java)
liquid: 消耗的液体
amount: 每帧消耗量(帧一般取 1/60 秒)

liquids/消耗液体组
作为数组: 消耗一堆液体,LiquidStack[]类型
作为对象(world\consumers\ConsumeLiquids.java)

coolant/冷却液体消耗过滤
作为对象(world\consumers\ConsumeCoolant.java)
maxTemp: 液体 temperature 最大值
maxFlammability: 液体 flammability 最大值。下方是条件

Power 电
power/电力消耗
作为数值: float类型

powerBuffered/电力存储
作为数值: float类型
这个数值不作处理,是多少就是多少

属性分类
这个不是在游戏里的分类,而是教程相对游戏做的分类
Consume
boolean: optional, booster, update

item | items
拓展 Consume
ItemStack[]: items

itemCharged
拓展(ConsumeItemFilter 拓展 Consume)
float: minCharge

itemFlammable
拓展 ConsumeItemFilter
float: minFlammability

itemRadioactive
拓展 ConsumeItemFilter
float: minRadioactivity

itemExplosive
拓展 ConsumeItemFilter
float: minExplosiveness

itemExplode
拓展 ConsumeItemFilter
float: preshold, damage, baseChance

liquidFlammable
拓展[ConsumeLiquidFilter拓展 (ConsumeLiquidBase拓展Consume) ]
float: minFlammability

coolant
拓展 ConsumeLiquidFilter
float: maxTemp, maxFlammability

liquid
拓展 ConsumeLiquidBase
Liquid: liquid

liquids
拓展 Consume
LiquidStack[]: liquids

power|powerBuffered
拓展 Consume
float: usage, capacity
boolean: buffered

我这次使用的手机端网页版电脑版编写,虽然流畅了,但这个缩放弄得头晕,主要原因还是因为电脑卡,加个颜色或大小就卡一下,我实在受不了,字数多了以后敲完字还要等个几秒才能出字。9月后更新速度就会慢了开学了