Fix wrong bounds operations when extracting matter from grid
This commit is contained in:
parent
9f6927cb8a
commit
aa31ff4cce
@ -233,18 +233,17 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
||||
} else {
|
||||
// в тик требуется меньше материи, чем её может хранить репликатор
|
||||
// примем из сети недостающее количество бака материи, или 200 тиков репликации, что меньше
|
||||
val drain = graph.extractMatter(matter.missingMatter
|
||||
.coerceAtMost(drainPerTick * DRAIN_MULT)
|
||||
val drain = graph.extractMatter((drainPerTick * DRAIN_MULT)
|
||||
.coerceAtMost(job.matterPerTick * (job.ticks - workTicks - ticksAdvanced))
|
||||
.coerceAtLeast(Decimal.ONE), true)
|
||||
.coerceAtLeast(Decimal.ONE)
|
||||
.coerceAtMost(matter.missingMatter), false)
|
||||
|
||||
if (drain.isZero) {
|
||||
// в сети нет материи
|
||||
return Status.FAILURE_MATTER
|
||||
}
|
||||
|
||||
val received = matter.receiveMatter(drain, false)
|
||||
graph.extractMatter(received, false)
|
||||
matter.receiveMatter(drain, false)
|
||||
|
||||
// получили материю, проверяем возможность работы
|
||||
if (matter.extractMatterInner(drainPerTick, true) >= drainPerTick) {
|
||||
|
Loading…
Reference in New Issue
Block a user