Matter decomposer rebalanced values
This commit is contained in:
parent
325ee5da2e
commit
c226a988c3
@ -10,7 +10,7 @@ import net.minecraft.world.level.Level
|
|||||||
import net.minecraft.world.level.block.Block
|
import net.minecraft.world.level.block.Block
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
import net.minecraftforge.common.ForgeConfigSpec
|
import net.minecraftforge.common.ForgeConfigSpec
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
|
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||||
@ -33,7 +33,6 @@ import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
|||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||||
import ru.dbotthepony.mc.otm.graph.matter.MatterNode
|
|
||||||
import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode
|
import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode
|
||||||
|
|
||||||
class MatterBottlerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
class MatterBottlerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
||||||
@ -294,7 +293,7 @@ class MatterBottlerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
|||||||
private var _EXTRACTION_TICKS: DecimalConfigValue by WriteOnce()
|
private var _EXTRACTION_TICKS: DecimalConfigValue by WriteOnce()
|
||||||
private var _CAPACITY: DecimalConfigValue by WriteOnce()
|
private var _CAPACITY: DecimalConfigValue by WriteOnce()
|
||||||
|
|
||||||
var ENERGY_VALUES: ConciseBalanceValues by WriteOnce()
|
var ENERGY_VALUES: EnergyBalanceValues by WriteOnce()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
||||||
|
@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.block.entity.matter
|
|||||||
import com.mojang.serialization.Codec
|
import com.mojang.serialization.Codec
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||||
import net.minecraft.core.BlockPos
|
import net.minecraft.core.BlockPos
|
||||||
import net.minecraft.nbt.CompoundTag
|
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||||
@ -17,20 +16,20 @@ import ru.dbotthepony.mc.otm.block.entity.Job
|
|||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
|
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.BlockEnergyStorageImpl
|
import ru.dbotthepony.mc.otm.capability.energy.BlockEnergyStorageImpl
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.MatterStorageImpl
|
import ru.dbotthepony.mc.otm.capability.matter.MatterStorageImpl
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
|
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||||
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
|
import ru.dbotthepony.mc.otm.container.UpgradeContainer
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.getDecimal
|
|
||||||
import ru.dbotthepony.mc.otm.core.math.set
|
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
|
||||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||||
import ru.dbotthepony.mc.otm.data.DecimalCodec
|
import ru.dbotthepony.mc.otm.data.DecimalCodec
|
||||||
import ru.dbotthepony.mc.otm.data.minRange
|
import ru.dbotthepony.mc.otm.data.minRange
|
||||||
@ -103,7 +102,7 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
|
|||||||
val toDust: Boolean,
|
val toDust: Boolean,
|
||||||
var matterValue: Decimal,
|
var matterValue: Decimal,
|
||||||
ticks: Double,
|
ticks: Double,
|
||||||
) : Job(ticks, BASE_CONSUMPTION) {
|
) : Job(ticks, MachinesConfig.MATTER_DECOMPOSER.powerConsumption) {
|
||||||
companion object {
|
companion object {
|
||||||
val CODEC: Codec<DecomposerJob> by lazy {
|
val CODEC: Codec<DecomposerJob> by lazy {
|
||||||
RecordCodecBuilder.create {
|
RecordCodecBuilder.create {
|
||||||
@ -117,14 +116,15 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val energy = ProfiledEnergyStorage(WorkerEnergyStorage(this, ENERGY_VALUES))
|
override val upgrades = UpgradeContainer(this::setChangedLight, 4, UpgradeType.REPLICATOR)
|
||||||
|
val energy = ProfiledEnergyStorage(WorkerEnergyStorage(this, upgrades.transform(MachinesConfig.MATTER_DECOMPOSER)))
|
||||||
val energyConfig = ConfigurableEnergy(energy)
|
val energyConfig = ConfigurableEnergy(energy)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
savetables.stateful(::energy, ENERGY_KEY)
|
savetables.stateful(::energy, ENERGY_KEY)
|
||||||
}
|
}
|
||||||
|
|
||||||
val matter = ProfiledMatterStorage(MatterStorageImpl(::setChangedLight, FlowDirection.OUTPUT, ::CAPACITY))
|
val matter = ProfiledMatterStorage(MatterStorageImpl(::setChangedLight, FlowDirection.OUTPUT, upgrades.matterCapacity(MachinesConfig.MATTER_DECOMPOSER::matterCapacity)))
|
||||||
val matterNode = SimpleMatterNode(matter = matter)
|
val matterNode = SimpleMatterNode(matter = matter)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -185,7 +185,13 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
|
|||||||
val matter = MatterManager.get(copy)
|
val matter = MatterManager.get(copy)
|
||||||
stack.count--
|
stack.count--
|
||||||
|
|
||||||
return JobContainer.success(DecomposerJob((level?.random?.nextDouble() ?: 1.0) <= 0.2, matter.matter, matter.complexity))
|
return JobContainer.success(
|
||||||
|
DecomposerJob(
|
||||||
|
(level?.random?.nextDouble() ?: 1.0) <= 0.2 * upgrades.failureMultiplier,
|
||||||
|
matter.matter,
|
||||||
|
matter.complexity * MachinesConfig.MATTER_DECOMPOSER.workTimeMultiplier
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,36 +211,8 @@ class MatterDecomposerBlockEntity(pos: BlockPos, state: BlockState)
|
|||||||
override fun tick() {
|
override fun tick() {
|
||||||
super.tick()
|
super.tick()
|
||||||
|
|
||||||
val grid = matterNode.graph as MatterGraph? ?: return
|
|
||||||
|
|
||||||
if (!matter.storedMatter.isZero) {
|
if (!matter.storedMatter.isZero) {
|
||||||
val diff = matter.extractMatter(matter.storedMatter, true)
|
matter.extractMatter(matterNode.graph.receiveMatter(matter.storedMatter, false), false)
|
||||||
val diff2 = grid.receiveMatter(diff, true)
|
|
||||||
|
|
||||||
matter.extractMatter(diff2, false)
|
|
||||||
grid.receiveMatter(diff2, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
val CAPACITY get() = _CAPACITY.get()
|
|
||||||
val BASE_CONSUMPTION get() = _BASE_CONSUMPTION.get()
|
|
||||||
|
|
||||||
private var _CAPACITY: DecimalConfigValue by WriteOnce()
|
|
||||||
private var _BASE_CONSUMPTION: DecimalConfigValue by WriteOnce()
|
|
||||||
|
|
||||||
var ENERGY_VALUES: ConciseBalanceValues by WriteOnce()
|
|
||||||
private set
|
|
||||||
|
|
||||||
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
|
||||||
builder.push(MNames.MATTER_DECOMPOSER)
|
|
||||||
|
|
||||||
ENERGY_VALUES = BlockEnergyStorageImpl.makeConfigEntry(builder, capacity = Decimal(400_000), throughput = Decimal(2_000))
|
|
||||||
|
|
||||||
_CAPACITY = builder.defineDecimal("matterCapacity", Decimal(500), Decimal.ONE_TENTH)
|
|
||||||
_BASE_CONSUMPTION = builder.defineDecimal("baseConsumption", Decimal(240), Decimal.ONE)
|
|
||||||
|
|
||||||
builder.pop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import ru.dbotthepony.mc.otm.capability.matter.IMatterStorage
|
|||||||
import ru.dbotthepony.mc.otm.capability.matter.IPatternState
|
import ru.dbotthepony.mc.otm.capability.matter.IPatternState
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.MatterStorageImpl
|
import ru.dbotthepony.mc.otm.capability.matter.MatterStorageImpl
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
import ru.dbotthepony.mc.otm.container.UpgradeContainer
|
import ru.dbotthepony.mc.otm.container.UpgradeContainer
|
||||||
@ -33,7 +33,6 @@ import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
|||||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||||
import ru.dbotthepony.mc.otm.core.registryName
|
import ru.dbotthepony.mc.otm.core.registryName
|
||||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||||
import ru.dbotthepony.mc.otm.graph.matter.MatterGraph
|
|
||||||
import ru.dbotthepony.mc.otm.graph.matter.MatterNode
|
import ru.dbotthepony.mc.otm.graph.matter.MatterNode
|
||||||
import ru.dbotthepony.mc.otm.matter.IMatterValue
|
import ru.dbotthepony.mc.otm.matter.IMatterValue
|
||||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||||
@ -308,7 +307,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
|||||||
private var _ONLY_ANVIL: ConfigValue<Boolean> by WriteOnce()
|
private var _ONLY_ANVIL: ConfigValue<Boolean> by WriteOnce()
|
||||||
private var _ALLOW_TO_SKIP_ANVIL: ConfigValue<Boolean> by WriteOnce()
|
private var _ALLOW_TO_SKIP_ANVIL: ConfigValue<Boolean> by WriteOnce()
|
||||||
|
|
||||||
var ENERGY_VALUES: ConciseBalanceValues by WriteOnce()
|
var ENERGY_VALUES: EnergyBalanceValues by WriteOnce()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
||||||
|
@ -22,7 +22,7 @@ import ru.dbotthepony.mc.otm.capability.energy.BlockEnergyStorageImpl
|
|||||||
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.*
|
import ru.dbotthepony.mc.otm.capability.matter.*
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
import ru.dbotthepony.mc.otm.container.HandlerFilter
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
import ru.dbotthepony.mc.otm.container.UpgradeContainer
|
import ru.dbotthepony.mc.otm.container.UpgradeContainer
|
||||||
@ -213,7 +213,7 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
|||||||
private var _DRAIN_MULT: DecimalConfigValue by WriteOnce()
|
private var _DRAIN_MULT: DecimalConfigValue by WriteOnce()
|
||||||
private var _MATTER_CAPACITY: DecimalConfigValue by WriteOnce()
|
private var _MATTER_CAPACITY: DecimalConfigValue by WriteOnce()
|
||||||
|
|
||||||
var ENERGY_VALUES: ConciseBalanceValues by WriteOnce()
|
var ENERGY_VALUES: EnergyBalanceValues by WriteOnce()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
||||||
|
@ -12,7 +12,7 @@ import ru.dbotthepony.mc.otm.block.entity.JobContainer
|
|||||||
import ru.dbotthepony.mc.otm.block.entity.JobStatus
|
import ru.dbotthepony.mc.otm.block.entity.JobStatus
|
||||||
import ru.dbotthepony.mc.otm.block.entity.ItemJob
|
import ru.dbotthepony.mc.otm.block.entity.ItemJob
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MachineJobEventLoop
|
import ru.dbotthepony.mc.otm.block.entity.MachineJobEventLoop
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.BlockEnergyStorageImpl
|
import ru.dbotthepony.mc.otm.capability.energy.BlockEnergyStorageImpl
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
@ -187,7 +187,7 @@ class MatterScannerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
|||||||
private val BASE_CONSUMPTION get() = _BASE_CONSUMPTION.get()
|
private val BASE_CONSUMPTION get() = _BASE_CONSUMPTION.get()
|
||||||
|
|
||||||
private var _BASE_CONSUMPTION: DecimalConfigValue by WriteOnce()
|
private var _BASE_CONSUMPTION: DecimalConfigValue by WriteOnce()
|
||||||
var ENERGY_VALUES: ConciseBalanceValues by WriteOnce()
|
var ENERGY_VALUES: EnergyBalanceValues by WriteOnce()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
fun registerConfig(builder: ForgeConfigSpec.Builder) {
|
||||||
|
@ -21,7 +21,7 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity
|
|||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||||
import ru.dbotthepony.mc.otm.container.ItemFilter
|
import ru.dbotthepony.mc.otm.container.ItemFilter
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
@ -48,7 +48,7 @@ abstract class AbstractStorageImportExport<T>(
|
|||||||
blockType: BlockEntityType<*>,
|
blockType: BlockEntityType<*>,
|
||||||
blockPos: BlockPos,
|
blockPos: BlockPos,
|
||||||
blockState: BlockState,
|
blockState: BlockState,
|
||||||
energyValues: ConciseBalanceValues = MachinesConfig.STORAGE_INTERFACES
|
energyValues: EnergyBalanceValues = MachinesConfig.STORAGE_INTERFACES
|
||||||
) : MatteryPoweredBlockEntity(blockType, blockPos, blockState) {
|
) : MatteryPoweredBlockEntity(blockType, blockPos, blockState) {
|
||||||
val energy = WorkerEnergyStorage(::setChangedLight, energyValues)
|
val energy = WorkerEnergyStorage(::setChangedLight, energyValues)
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package ru.dbotthepony.mc.otm.block.entity.storage
|
package ru.dbotthepony.mc.otm.block.entity.storage
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos
|
import net.minecraft.core.BlockPos
|
||||||
import net.minecraft.server.level.ServerLevel
|
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||||
@ -14,7 +13,6 @@ import ru.dbotthepony.mc.otm.capability.energy.transferChecked
|
|||||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.graph.storage.StorageNode
|
import ru.dbotthepony.mc.otm.graph.storage.StorageNode
|
||||||
import ru.dbotthepony.mc.otm.graph.storage.StorageGraph
|
|
||||||
import ru.dbotthepony.mc.otm.menu.storage.StoragePowerSupplierMenu
|
import ru.dbotthepony.mc.otm.menu.storage.StoragePowerSupplierMenu
|
||||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||||
|
|
||||||
@ -65,7 +63,7 @@ class StoragePowerSupplierBlockEntity(blockPos: BlockPos, blockState: BlockState
|
|||||||
var demand = Decimal.ZERO
|
var demand = Decimal.ZERO
|
||||||
var i = 0
|
var i = 0
|
||||||
|
|
||||||
val available = energy.batteryLevel.coerceAtMost(MachinesConfig.STORAGE_POWER_SUPPLIER.throughput)
|
val available = energy.batteryLevel.coerceAtMost(MachinesConfig.STORAGE_POWER_SUPPLIER.energyThroughput)
|
||||||
|
|
||||||
for (demanding in cell.graph.powerDemandingNodes) {
|
for (demanding in cell.graph.powerDemandingNodes) {
|
||||||
val received = demanding.receiveEnergy(available, true)
|
val received = demanding.receiveEnergy(available, true)
|
||||||
|
@ -14,12 +14,11 @@ import net.minecraftforge.common.ForgeConfigSpec
|
|||||||
import net.minecraftforge.common.util.INBTSerializable
|
import net.minecraftforge.common.util.INBTSerializable
|
||||||
import net.minecraftforge.common.util.LazyOptional
|
import net.minecraftforge.common.util.LazyOptional
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.VerboseBalanceValues
|
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.map
|
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.mapPresent
|
import ru.dbotthepony.mc.otm.core.nbt.mapPresent
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
|
|
||||||
@ -166,13 +165,13 @@ sealed class BlockEnergyStorageImpl(
|
|||||||
const val MAX_INPUT_KEY = "max_input"
|
const val MAX_INPUT_KEY = "max_input"
|
||||||
const val MAX_OUTPUT_KEY = "max_output"
|
const val MAX_OUTPUT_KEY = "max_output"
|
||||||
|
|
||||||
fun makeConfigEntry(builder: ForgeConfigSpec.Builder, name: String? = null, capacity: Decimal = DEFAULT_MAX_CAPACITY, throughput: Decimal = DEFAULT_MAX_IO, configurator: ForgeConfigSpec.Builder.() -> Unit = {}): ConciseBalanceValues {
|
fun makeConfigEntry(builder: ForgeConfigSpec.Builder, name: String? = null, capacity: Decimal = DEFAULT_MAX_CAPACITY, throughput: Decimal = DEFAULT_MAX_IO, configurator: ForgeConfigSpec.Builder.() -> Unit = {}): EnergyBalanceValues {
|
||||||
if (name != null)
|
if (name != null)
|
||||||
builder.push(name)
|
builder.push(name)
|
||||||
|
|
||||||
val obj = object : ConciseBalanceValues {
|
val obj = object : EnergyBalanceValues {
|
||||||
override val capacity: Decimal by builder.defineDecimal("capacity", capacity, Decimal.ONE)
|
override val energyCapacity: Decimal by builder.defineDecimal("capacity", capacity, Decimal.ONE)
|
||||||
override val throughput: Decimal by builder.defineDecimal("throughput", throughput, Decimal.ONE)
|
override val energyThroughput: Decimal by builder.defineDecimal("throughput", throughput, Decimal.ONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator.invoke(builder)
|
configurator.invoke(builder)
|
||||||
@ -199,23 +198,23 @@ open class WorkerEnergyStorage(
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::throughput, values::throughput)
|
) : this(listener, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::throughput, values::throughput)
|
) : this(listener::setChanged, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::receive, values::extract)
|
) : this(listener, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::receive, values::extract)
|
) : this(listener::setChanged, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
@ -251,23 +250,23 @@ open class GeneratorEnergyStorage(
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::throughput, values::throughput)
|
) : this(listener, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::throughput, values::throughput)
|
) : this(listener::setChanged, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::receive, values::extract)
|
) : this(listener, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::receive, values::extract)
|
) : this(listener::setChanged, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
@ -303,23 +302,23 @@ open class CapacitorEnergyStorage(
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::throughput, values::throughput)
|
) : this(listener, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::throughput, values::throughput)
|
) : this(listener::setChanged, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: () -> Unit,
|
listener: () -> Unit,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener, values::capacity, values::receive, values::extract)
|
) : this(listener, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener::setChanged, values::capacity, values::receive, values::extract)
|
) : this(listener::setChanged, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: BlockEntity,
|
listener: BlockEntity,
|
||||||
|
@ -2,9 +2,8 @@ package ru.dbotthepony.mc.otm.capability.matter
|
|||||||
|
|
||||||
import net.minecraft.nbt.CompoundTag
|
import net.minecraft.nbt.CompoundTag
|
||||||
import net.minecraftforge.common.util.INBTSerializable
|
import net.minecraftforge.common.util.INBTSerializable
|
||||||
import net.minecraftforge.common.util.LazyOptional
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.VerboseBalanceValues
|
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
@ -27,14 +26,14 @@ open class MatterStorageImpl @JvmOverloads constructor(
|
|||||||
constructor(
|
constructor(
|
||||||
listener: Runnable?,
|
listener: Runnable?,
|
||||||
direction: FlowDirection,
|
direction: FlowDirection,
|
||||||
values: ConciseBalanceValues
|
values: EnergyBalanceValues
|
||||||
) : this(listener, direction, values::capacity, values::throughput, values::throughput)
|
) : this(listener, direction, values::energyCapacity, values::energyThroughput, values::energyThroughput)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
listener: Runnable?,
|
listener: Runnable?,
|
||||||
direction: FlowDirection,
|
direction: FlowDirection,
|
||||||
values: VerboseBalanceValues
|
values: VerboseEnergyBalanceValues
|
||||||
) : this(listener, direction, values::capacity, values::receive, values::extract)
|
) : this(listener, direction, values::energyCapacity, values::maxEnergyReceive, values::maxEnergyExtract)
|
||||||
|
|
||||||
val maxReceive get() = maxReceiveSupplier.invoke()
|
val maxReceive get() = maxReceiveSupplier.invoke()
|
||||||
val maxExtract get() = maxExtractSupplier.invoke()
|
val maxExtract get() = maxExtractSupplier.invoke()
|
||||||
|
@ -15,27 +15,13 @@ abstract class AbstractConfig(private val configName: String, private val type:
|
|||||||
protected val builder = ForgeConfigSpec.Builder()
|
protected val builder = ForgeConfigSpec.Builder()
|
||||||
private var registered = false
|
private var registered = false
|
||||||
|
|
||||||
fun verboseValues(name: String, storage: Decimal, receive: Decimal, extract: Decimal = receive): VerboseBalanceValues {
|
|
||||||
builder.push(name)
|
|
||||||
|
|
||||||
val obj = object : VerboseBalanceValues {
|
|
||||||
override val capacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
|
||||||
override val receive: Decimal by builder.defineDecimal("receive", receive, minimum = Decimal.ONE)
|
|
||||||
override val extract: Decimal by builder.defineDecimal("extract", extract, minimum = Decimal.ONE)
|
|
||||||
}
|
|
||||||
|
|
||||||
builder.pop()
|
|
||||||
|
|
||||||
return obj
|
|
||||||
}
|
|
||||||
|
|
||||||
fun batteryValues(name: String, storage: Decimal, receive: Decimal, extract: Decimal = receive, initialBatteryLevel: Decimal = Decimal.ZERO): BatteryBalanceValues {
|
fun batteryValues(name: String, storage: Decimal, receive: Decimal, extract: Decimal = receive, initialBatteryLevel: Decimal = Decimal.ZERO): BatteryBalanceValues {
|
||||||
builder.push(name)
|
builder.push(name)
|
||||||
|
|
||||||
val obj = object : BatteryBalanceValues {
|
val obj = object : BatteryBalanceValues {
|
||||||
override val capacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
override val energyCapacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
||||||
override val receive: Decimal by builder.defineDecimal("receive", receive, minimum = Decimal.ONE)
|
override val maxEnergyReceive: Decimal by builder.defineDecimal("receive", receive, minimum = Decimal.ONE)
|
||||||
override val extract: Decimal by builder.defineDecimal("extract", extract, minimum = Decimal.ONE)
|
override val maxEnergyExtract: Decimal by builder.defineDecimal("extract", extract, minimum = Decimal.ONE)
|
||||||
override val initialBatteryLevel: Decimal by builder.defineDecimal("initialBatteryLevel", initialBatteryLevel, minimum = Decimal.ZERO)
|
override val initialBatteryLevel: Decimal by builder.defineDecimal("initialBatteryLevel", initialBatteryLevel, minimum = Decimal.ZERO)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,12 +30,12 @@ abstract class AbstractConfig(private val configName: String, private val type:
|
|||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
fun conciseValues(name: String, storage: Decimal, throughput: Decimal, configurator: ForgeConfigSpec.Builder.() -> Unit = {}): ConciseBalanceValues {
|
fun conciseValues(name: String, storage: Decimal, throughput: Decimal, configurator: ForgeConfigSpec.Builder.() -> Unit = {}): EnergyBalanceValues {
|
||||||
builder.push(name)
|
builder.push(name)
|
||||||
|
|
||||||
val obj = object : ConciseBalanceValues {
|
val obj = object : EnergyBalanceValues {
|
||||||
override val capacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
override val energyCapacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
||||||
override val throughput: Decimal by builder.defineDecimal("throughput", throughput, minimum = Decimal.ONE)
|
override val energyThroughput: Decimal by builder.defineDecimal("throughput", throughput, minimum = Decimal.ONE)
|
||||||
}
|
}
|
||||||
|
|
||||||
configurator.invoke(builder)
|
configurator.invoke(builder)
|
||||||
@ -58,13 +44,22 @@ abstract class AbstractConfig(private val configName: String, private val type:
|
|||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
fun workerValues(name: String, storage: Decimal, throughput: Decimal, workTimeMultiplier: Double? = 1.0, powerConsumption: Decimal, configurator: ForgeConfigSpec.Builder.() -> Unit = {}): WorkerBalanceValues {
|
fun workerValues(
|
||||||
|
name: String,
|
||||||
|
energyStorage: Decimal,
|
||||||
|
energyThroughput: Decimal,
|
||||||
|
workTimeMultiplier: Double? = 1.0,
|
||||||
|
powerConsumption: Decimal,
|
||||||
|
matterCapacity: Decimal? = null,
|
||||||
|
configurator: ForgeConfigSpec.Builder.() -> Unit = {}
|
||||||
|
): WorkerBalanceValues {
|
||||||
builder.push(name)
|
builder.push(name)
|
||||||
|
|
||||||
val obj = object : WorkerBalanceValues {
|
val obj = object : WorkerBalanceValues {
|
||||||
override val capacity: Decimal by builder.defineDecimal("capacity", storage, minimum = Decimal.ONE)
|
override val energyCapacity: Decimal by builder.defineDecimal("capacity", energyStorage, minimum = Decimal.ONE)
|
||||||
override val throughput: Decimal by builder.defineDecimal("throughput", throughput, minimum = Decimal.ONE)
|
override val energyThroughput: Decimal by builder.defineDecimal("throughput", energyThroughput, minimum = Decimal.ONE)
|
||||||
override val powerConsumption: Decimal by builder.defineDecimal("powerConsumption", powerConsumption, minimum = Decimal.ONE)
|
override val powerConsumption: Decimal by builder.defineDecimal("powerConsumption", powerConsumption, minimum = Decimal.ONE)
|
||||||
|
override val matterCapacity: Decimal by (if (matterCapacity == null) GetterSetter.box(Decimal.ZERO) else builder.defineDecimal("matterCapacity", matterCapacity, minimum = Decimal.ONE))
|
||||||
override val workTimeMultiplier: Double by (if (workTimeMultiplier == null) GetterSetter.box(1.0) else builder.defineInRange("workTimeMultiplier", workTimeMultiplier, 0.0))
|
override val workTimeMultiplier: Double by (if (workTimeMultiplier == null) GetterSetter.box(1.0) else builder.defineInRange("workTimeMultiplier", workTimeMultiplier, 0.0))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,22 +2,23 @@ package ru.dbotthepony.mc.otm.config
|
|||||||
|
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
|
||||||
interface ConciseBalanceValues {
|
interface EnergyBalanceValues {
|
||||||
val capacity: Decimal
|
val energyCapacity: Decimal
|
||||||
val throughput: Decimal
|
val energyThroughput: Decimal
|
||||||
}
|
}
|
||||||
|
|
||||||
interface WorkerBalanceValues : ConciseBalanceValues {
|
interface WorkerBalanceValues : EnergyBalanceValues {
|
||||||
val workTimeMultiplier: Double
|
val workTimeMultiplier: Double
|
||||||
val powerConsumption: Decimal
|
val powerConsumption: Decimal
|
||||||
|
val matterCapacity: Decimal
|
||||||
}
|
}
|
||||||
|
|
||||||
interface BatteryBalanceValues : VerboseBalanceValues {
|
interface VerboseEnergyBalanceValues {
|
||||||
|
val energyCapacity: Decimal
|
||||||
|
val maxEnergyReceive: Decimal
|
||||||
|
val maxEnergyExtract: Decimal
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BatteryBalanceValues : VerboseEnergyBalanceValues {
|
||||||
val initialBatteryLevel: Decimal
|
val initialBatteryLevel: Decimal
|
||||||
}
|
}
|
||||||
|
|
||||||
interface VerboseBalanceValues {
|
|
||||||
val capacity: Decimal
|
|
||||||
val receive: Decimal
|
|
||||||
val extract: Decimal
|
|
||||||
}
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package ru.dbotthepony.mc.otm.config
|
package ru.dbotthepony.mc.otm.config
|
||||||
|
|
||||||
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue
|
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterDecomposerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterDecomposerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterRecyclerBlockEntity
|
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterScannerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterScannerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.AndroidStationBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.AndroidStationBlockEntity
|
||||||
@ -23,17 +21,24 @@ object MachinesConfig : AbstractConfig("machines") {
|
|||||||
MatterBottlerBlockEntity.registerConfig(builder)
|
MatterBottlerBlockEntity.registerConfig(builder)
|
||||||
MatterReplicatorBlockEntity.registerConfig(builder)
|
MatterReplicatorBlockEntity.registerConfig(builder)
|
||||||
MatterScannerBlockEntity.registerConfig(builder)
|
MatterScannerBlockEntity.registerConfig(builder)
|
||||||
MatterDecomposerBlockEntity.registerConfig(builder)
|
|
||||||
MatterReconstructorBlockEntity.registerConfig(builder)
|
MatterReconstructorBlockEntity.registerConfig(builder)
|
||||||
}
|
}
|
||||||
|
|
||||||
val PLATE_PRESS = workerValues(
|
val PLATE_PRESS = workerValues(
|
||||||
MNames.PLATE_PRESS,
|
MNames.PLATE_PRESS,
|
||||||
storage = Decimal(40_000),
|
energyStorage = Decimal(40_000),
|
||||||
throughput = Decimal(200),
|
energyThroughput = Decimal(200),
|
||||||
powerConsumption = Decimal(15)
|
powerConsumption = Decimal(15)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val MATTER_DECOMPOSER = workerValues(
|
||||||
|
MNames.MATTER_DECOMPOSER,
|
||||||
|
energyStorage = Decimal(100_000),
|
||||||
|
energyThroughput = Decimal(400),
|
||||||
|
powerConsumption = Decimal(240),
|
||||||
|
matterCapacity = Decimal(400),
|
||||||
|
)
|
||||||
|
|
||||||
var MATTER_RECYCLER_MATTER_PER_TICK: DecimalConfigValue by WriteOnce()
|
var MATTER_RECYCLER_MATTER_PER_TICK: DecimalConfigValue by WriteOnce()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@ -42,8 +47,8 @@ object MachinesConfig : AbstractConfig("machines") {
|
|||||||
|
|
||||||
val MATTER_RECYCLER = workerValues(
|
val MATTER_RECYCLER = workerValues(
|
||||||
MNames.MATTER_RECYCLER,
|
MNames.MATTER_RECYCLER,
|
||||||
storage = Decimal(80_000),
|
energyStorage = Decimal(80_000),
|
||||||
throughput = Decimal(400),
|
energyThroughput = Decimal(400),
|
||||||
powerConsumption = Decimal(100),
|
powerConsumption = Decimal(100),
|
||||||
workTimeMultiplier = null
|
workTimeMultiplier = null
|
||||||
) {
|
) {
|
||||||
@ -71,24 +76,24 @@ object MachinesConfig : AbstractConfig("machines") {
|
|||||||
|
|
||||||
val POWERED_FURNACE = workerValues(
|
val POWERED_FURNACE = workerValues(
|
||||||
"POWERED_FURNACE",
|
"POWERED_FURNACE",
|
||||||
storage = Decimal(40_000),
|
energyStorage = Decimal(40_000),
|
||||||
throughput = Decimal(200),
|
energyThroughput = Decimal(200),
|
||||||
powerConsumption = Decimal(20),
|
powerConsumption = Decimal(20),
|
||||||
workTimeMultiplier = 0.75
|
workTimeMultiplier = 0.75
|
||||||
)
|
)
|
||||||
|
|
||||||
val POWERED_BLAST_FURNACE = workerValues(
|
val POWERED_BLAST_FURNACE = workerValues(
|
||||||
"POWERED_BLAST_FURNACE",
|
"POWERED_BLAST_FURNACE",
|
||||||
storage = Decimal(40_000),
|
energyStorage = Decimal(40_000),
|
||||||
throughput = Decimal(200),
|
energyThroughput = Decimal(200),
|
||||||
powerConsumption = Decimal(20),
|
powerConsumption = Decimal(20),
|
||||||
workTimeMultiplier = 0.75
|
workTimeMultiplier = 0.75
|
||||||
)
|
)
|
||||||
|
|
||||||
val POWERED_SMOKER = workerValues(
|
val POWERED_SMOKER = workerValues(
|
||||||
"POWERED_SMOKER",
|
"POWERED_SMOKER",
|
||||||
storage = Decimal(40_000),
|
energyStorage = Decimal(40_000),
|
||||||
throughput = Decimal(200),
|
energyThroughput = Decimal(200),
|
||||||
powerConsumption = Decimal(10),
|
powerConsumption = Decimal(10),
|
||||||
workTimeMultiplier = 0.75
|
workTimeMultiplier = 0.75
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ package ru.dbotthepony.mc.otm.container
|
|||||||
import ru.dbotthepony.mc.otm.capability.IMatteryUpgrade
|
import ru.dbotthepony.mc.otm.capability.IMatteryUpgrade
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.VerboseBalanceValues
|
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.core.collect.map
|
import ru.dbotthepony.mc.otm.core.collect.map
|
||||||
import ru.dbotthepony.mc.otm.core.collect.mapToDouble
|
import ru.dbotthepony.mc.otm.core.collect.mapToDouble
|
||||||
@ -49,23 +49,23 @@ open class UpgradeContainer(slotCount: Int, open val allowedUpgrades: Set<Upgrad
|
|||||||
override val energyThroughput: Decimal
|
override val energyThroughput: Decimal
|
||||||
get() = decimals(IMatteryUpgrade::energyThroughput, Decimal::plus)
|
get() = decimals(IMatteryUpgrade::energyThroughput, Decimal::plus)
|
||||||
|
|
||||||
fun transform(values: ConciseBalanceValues): ConciseBalanceValues {
|
fun transform(values: EnergyBalanceValues): EnergyBalanceValues {
|
||||||
return object : ConciseBalanceValues {
|
return object : EnergyBalanceValues {
|
||||||
override val capacity: Decimal
|
override val energyCapacity: Decimal
|
||||||
get() = values.capacity * (energyStorage + Decimal.ONE) + energyStorageFlat
|
get() = values.energyCapacity * (energyStorage + Decimal.ONE) + energyStorageFlat
|
||||||
override val throughput: Decimal
|
override val energyThroughput: Decimal
|
||||||
get() = values.throughput * (energyThroughput + Decimal.ONE) + energyThroughputFlat
|
get() = values.energyThroughput * (this@UpgradeContainer.energyThroughput + Decimal.ONE) + energyThroughputFlat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun transform(values: VerboseBalanceValues): VerboseBalanceValues {
|
fun transform(values: VerboseEnergyBalanceValues): VerboseEnergyBalanceValues {
|
||||||
return object : VerboseBalanceValues {
|
return object : VerboseEnergyBalanceValues {
|
||||||
override val capacity: Decimal
|
override val energyCapacity: Decimal
|
||||||
get() = values.capacity * (energyStorage + Decimal.ONE) + energyStorageFlat
|
get() = values.energyCapacity * (energyStorage + Decimal.ONE) + energyStorageFlat
|
||||||
override val receive: Decimal
|
override val maxEnergyReceive: Decimal
|
||||||
get() = values.receive * (energyThroughput + Decimal.ONE) + energyThroughputFlat
|
get() = values.maxEnergyReceive * (energyThroughput + Decimal.ONE) + energyThroughputFlat
|
||||||
override val extract: Decimal
|
override val maxEnergyExtract: Decimal
|
||||||
get() = values.extract * (energyThroughput + Decimal.ONE) + energyThroughputFlat
|
get() = values.maxEnergyExtract * (energyThroughput + Decimal.ONE) + energyThroughputFlat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ import ru.dbotthepony.mc.otm.config.ItemsConfig
|
|||||||
import ru.dbotthepony.mc.otm.core.*
|
import ru.dbotthepony.mc.otm.core.*
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||||
import ru.dbotthepony.mc.otm.runIfClient
|
import ru.dbotthepony.mc.otm.runIfClient
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@ -100,9 +99,9 @@ open class BatteryItem : Item {
|
|||||||
|
|
||||||
constructor(values: BatteryBalanceValues) : super(Properties().stacksTo(1)) {
|
constructor(values: BatteryBalanceValues) : super(Properties().stacksTo(1)) {
|
||||||
isCreative = false
|
isCreative = false
|
||||||
this._capacity = values::capacity
|
this._capacity = values::energyCapacity
|
||||||
this._receive = values::receive
|
this._receive = values::maxEnergyReceive
|
||||||
this._extract = values::extract
|
this._extract = values::maxEnergyExtract
|
||||||
this._initialBatteryLevel = values::initialBatteryLevel
|
this._initialBatteryLevel = values::initialBatteryLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ import ru.dbotthepony.mc.otm.capability.energy.IMatteryEnergyStorage
|
|||||||
import ru.dbotthepony.mc.otm.capability.energy.getBarColor
|
import ru.dbotthepony.mc.otm.capability.energy.getBarColor
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.getBarWidth
|
import ru.dbotthepony.mc.otm.capability.energy.getBarWidth
|
||||||
import ru.dbotthepony.mc.otm.compat.mekanism.Mattery2MekanismEnergyWrapper
|
import ru.dbotthepony.mc.otm.compat.mekanism.Mattery2MekanismEnergyWrapper
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.core.*
|
import ru.dbotthepony.mc.otm.core.*
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.readDecimal
|
import ru.dbotthepony.mc.otm.core.math.readDecimal
|
||||||
@ -322,10 +322,10 @@ class QuantumBatteryItem : Item {
|
|||||||
this.saveDataID = "otm_$saveDataID".intern()
|
this.saveDataID = "otm_$saveDataID".intern()
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(saveDataID: String, values: ConciseBalanceValues) : super(Properties().stacksTo(1)) {
|
constructor(saveDataID: String, values: EnergyBalanceValues) : super(Properties().stacksTo(1)) {
|
||||||
isCreative = false
|
isCreative = false
|
||||||
_capacity = values::capacity
|
_capacity = values::energyCapacity
|
||||||
_throughput = values::throughput
|
_throughput = values::energyThroughput
|
||||||
this.saveDataID = "otm_$saveDataID".intern()
|
this.saveDataID = "otm_$saveDataID".intern()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,8 +9,7 @@ import net.minecraft.world.item.Rarity
|
|||||||
import net.minecraft.world.item.TooltipFlag
|
import net.minecraft.world.item.TooltipFlag
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
import net.minecraftforge.common.capabilities.ICapabilityProvider
|
||||||
import ru.dbotthepony.mc.otm.config.ConciseBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
|
||||||
import ru.dbotthepony.mc.otm.capability.*
|
import ru.dbotthepony.mc.otm.capability.*
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.EnergyProducerItem
|
import ru.dbotthepony.mc.otm.capability.energy.EnergyProducerItem
|
||||||
import ru.dbotthepony.mc.otm.capability.energy.ItemEnergyStorageImpl
|
import ru.dbotthepony.mc.otm.capability.energy.ItemEnergyStorageImpl
|
||||||
@ -25,7 +24,7 @@ open class SingleUseBatteryItem(
|
|||||||
private val _throughput: () -> Decimal? = { null },
|
private val _throughput: () -> Decimal? = { null },
|
||||||
properties: Properties = Properties().stacksTo(1)
|
properties: Properties = Properties().stacksTo(1)
|
||||||
) : Item(properties) {
|
) : Item(properties) {
|
||||||
constructor(values: ConciseBalanceValues, properties: Properties = Properties().stacksTo(1)) : this(values::capacity, values::throughput, properties)
|
constructor(values: EnergyBalanceValues, properties: Properties = Properties().stacksTo(1)) : this(values::energyCapacity, values::energyThroughput, properties)
|
||||||
constructor(storage: Decimal, throughput: Decimal? = null, properties: Properties = Properties().stacksTo(1)) : this({ storage }, { throughput }, properties)
|
constructor(storage: Decimal, throughput: Decimal? = null, properties: Properties = Properties().stacksTo(1)) : this({ storage }, { throughput }, properties)
|
||||||
|
|
||||||
val capacity get() = _capacity.invoke()
|
val capacity get() = _capacity.invoke()
|
||||||
|
Loading…
Reference in New Issue
Block a user