|
|
突然想吐槽一下Forge的这个玩意(EnergyStorage类中的extractEnergy方法)
如图所示,extractEnergy这个方法里边说明了一点,就是当boolean canExtract()为false的时候,会直接返回0
这就导致了我昨天遇到的一个问题,我昨天为了区分发电机和机器的基类,在父类构造函数里多传了两个布尔值进去,一个就是canExtract,另一个就是canReceive。因为我想的是,发电机不能接受能量(canReceive: false),只能输出能量(canExtract: true);而机器只能接受能量,不能向外输出能量。于是我就可以用这两个布尔值来明确限制能量的输入输出逻辑,从而能够实现合理的机器和发电机行为。
结果昨天晚上写出线缆,在测试线缆工作能力的时候发现我的基础发电机怎么那么强,一下子供了8台耗能2048FE/t的宝石复制机!我以为是我的线缆出问题了,于是就改用mek的线缆,结果发现还是一样的毛病。然后我就跑去看发电机的逻辑,看半天也没看出问题来。最后我干脆把线缆,发电机都拆掉,发现机器还在工作,而且不掉电,我才意识到可能是早上改过基类的构造函数,极有可能是那个地方引起的问题。
好家伙,一去看这俩布尔对应的原始方法,原来是canExtract这玩意被设置成false之后会直接让能量消耗变成0(代码所示),所以无论怎么改都不行。也就是说,要真正的实现机器能量的“禁止抽取”,要重新写一个方法,并且在机器的tick方法里边调用,来让机器直接在内部消耗自己的能量,而不再依赖于extractEnergy方法(因为canExtract已经被设置为了false)...
|
|