Update cleanness of code

This commit is contained in:
DBotThePony 2021-12-31 13:47:02 +07:00
parent 513f8afbe0
commit 11def73d10
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 63 additions and 67 deletions

View File

@ -32,7 +32,7 @@ import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState
import ru.dbotthepony.mc.otm.capability.receiveEnergy import ru.dbotthepony.mc.otm.capability.receiveEnergy
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEntityMattery(Registry.BlockEntities.CHEMICAL_GENERATOR, pos, state) { class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEntityMattery(Registry.BlockEntities.CHEMICAL_GENERATOR, pos, state), IMatteryEnergyStorage {
override fun getDefaultDisplayName(): Component { override fun getDefaultDisplayName(): Component {
return NAME return NAME
} }
@ -42,7 +42,7 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
} }
private var valid = true private var valid = true
private var resolver = LazyOptional.of {energy} private var resolver = LazyOptional.of {this}
override fun <T> getCapability(cap: Capability<T>, side: Direction?): LazyOptional<T> { override fun <T> getCapability(cap: Capability<T>, side: Direction?): LazyOptional<T> {
if (valid && (cap == MatteryCapability.ENERGY || cap == CapabilityEnergy.ENERGY) && side != blockState.getValue(BlockMatteryRotatable.FACING)) if (valid && (cap == MatteryCapability.ENERGY || cap == CapabilityEnergy.ENERGY) && side != blockState.getValue(BlockMatteryRotatable.FACING))
@ -65,7 +65,7 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
super.reviveCaps() super.reviveCaps()
itemHandler.revive() itemHandler.revive()
valid = true valid = true
resolver = LazyOptional.of {energy} resolver = LazyOptional.of {this}
} }
override fun setLevel(level: Level) { override fun setLevel(level: Level) {
@ -89,8 +89,8 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
nbt["energy"] = power.serializeNBT() nbt["energy"] = power.serializeNBT()
nbt["slots"] = container.serializeNBT() nbt["slots"] = container.serializeNBT()
nbt["working_ticks"] = working_ticks nbt["working_ticks"] = workingTicks
nbt["working_ticks_total"] = working_ticks_total nbt["working_ticks_total"] = workingTicksTotal
} }
override fun load(nbt: CompoundTag) { override fun load(nbt: CompoundTag) {
@ -106,12 +106,12 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
nbt.ifHas("working_ticks") { nbt.ifHas("working_ticks") {
if (it is IntTag) if (it is IntTag)
working_ticks = it.asInt workingTicks = it.asInt
} }
nbt.ifHas("working_ticks_total") { nbt.ifHas("working_ticks_total") {
if (it is IntTag) if (it is IntTag)
working_ticks_total = it.asInt workingTicksTotal = it.asInt
} }
} }
@ -156,7 +156,7 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
return ForgeHooks.getBurnTime(stack, null) > 0 return ForgeHooks.getBurnTime(stack, null) > 0
return stack.getCapability(CapabilityEnergy.ENERGY).isPresent return stack.getCapability(CapabilityEnergy.ENERGY).isPresent
}, fun (slot, amount, stack): Boolean { }, fun (slot, _, stack): Boolean {
return slot == 1 && return slot == 1 &&
(!stack.getCapability(CapabilityEnergy.ENERGY).isPresent || stack.getCapability(CapabilityEnergy.ENERGY).resolve().get().receiveEnergy(Int.MAX_VALUE, true) <= 0) (!stack.getCapability(CapabilityEnergy.ENERGY).isPresent || stack.getCapability(CapabilityEnergy.ENERGY).resolve().get().receiveEnergy(Int.MAX_VALUE, true) <= 0)
}) })
@ -171,7 +171,6 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
private var power = Fraction.ZERO private var power = Fraction.ZERO
val energy = object : IMatteryEnergyStorage {
override fun extractEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction { override fun extractEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction {
return extractEnergyInner(howMuch, simulate) return extractEnergyInner(howMuch, simulate)
} }
@ -207,12 +206,11 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
override fun getBatteryLevel(): Fraction = power override fun getBatteryLevel(): Fraction = power
override fun getMaxBatteryLevel(): Fraction = MAX_ENERGY override fun getMaxBatteryLevel(): Fraction = MAX_ENERGY
override fun canExtract(): Boolean = true override fun canExtract(): Boolean = true
}
var working_ticks = 0 var workingTicks = 0
private set private set
var working_ticks_total = 0 var workingTicksTotal = 0
private set private set
private var check = false private var check = false
@ -220,30 +218,30 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
private fun workWithPower(it: IEnergyStorage) { private fun workWithPower(it: IEnergyStorage) {
if (it is IMatteryEnergyStorage) { if (it is IMatteryEnergyStorage) {
val demand = it.missingPower val demand = it.missingPower
val extracted = energy.extractEnergyInner(demand, true) val extracted = extractEnergyInner(demand, true)
val received = it.receiveEnergyOuter(extracted, false) val received = it.receiveEnergyOuter(extracted, false)
if (!received.isZero()) { if (!received.isZero()) {
energy.extractEnergyInner(received, false) extractEnergyInner(received, false)
} }
} else { } else {
val demand = it.receiveEnergy(THROUGHPUT_INT, true) val demand = it.receiveEnergy(THROUGHPUT_INT, true)
val extracted = energy.extractEnergyInner(demand, true) val extracted = extractEnergyInner(demand, true)
val received = it.receiveEnergy(extracted, false) val received = it.receiveEnergy(extracted, false)
if (received != 0) { if (received != 0) {
energy.extractEnergyInner(received, false) extractEnergyInner(received, false)
} }
} }
} }
fun tick() { fun tick() {
if (working_ticks > 0 && !isBlockedByRedstone) { if (workingTicks > 0 && !isBlockedByRedstone) {
working_ticks-- workingTicks--
energy.receiveEnergyInner(GENERATION_SPEED, false) receiveEnergyInner(GENERATION_SPEED, false)
if (working_ticks == 0) { if (workingTicks == 0) {
working_ticks_total = 0 workingTicksTotal = 0
check = true check = true
} }
@ -254,13 +252,13 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti
level?.setBlock(blockPos, blockState.setValue(WorkerState.WORKER_STATE, WorkerState.IDLE), Block.UPDATE_CLIENTS) level?.setBlock(blockPos, blockState.setValue(WorkerState.WORKER_STATE, WorkerState.IDLE), Block.UPDATE_CLIENTS)
} }
if (working_ticks == 0 && !isBlockedByRedstone && check) { if (workingTicks == 0 && !isBlockedByRedstone && check) {
if (!container.getItem(0).isEmpty) { if (!container.getItem(0).isEmpty) {
val ticks = ForgeHooks.getBurnTime(container.getItem(0), null) val ticks = ForgeHooks.getBurnTime(container.getItem(0), null)
if (ticks >= 4 && (energy.batteryLevel < Fraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) { if (ticks >= 4 && (batteryLevel < Fraction.ONE || GENERATION_SPEED * (ticks / 4) + batteryLevel <= maxBatteryLevel)) {
working_ticks_total = ticks / 4 workingTicksTotal = ticks / 4
working_ticks = ticks / 4 workingTicks = ticks / 4
container.getItem(0).shrink(1) container.getItem(0).shrink(1)
} }
} }

View File

@ -1,8 +1,6 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TextComponent
import net.minecraft.network.chat.TranslatableComponent import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
@ -22,7 +20,7 @@ class ChemicalGeneratorScreen(menu: ChemicalGeneratorMenu, inventory: Inventory,
override fun makeTooltip(): MutableList<Component> { override fun makeTooltip(): MutableList<Component> {
val list = super.makeTooltip() val list = super.makeTooltip()
list.add(TranslatableComponent("otm.gui.power.burn_time", menu.burn_time.value)) list.add(TranslatableComponent("otm.gui.power.burn_time", menu.burnTime.value))
return list return list
} }

View File

@ -29,21 +29,21 @@ class ChemicalGeneratorMenu @JvmOverloads constructor(id: Int, inv: Inventory, t
} }
} }
val progress = ProgressGaugeWidget(this) { 1f - tile!!.working_ticks.toFloat() / tile.working_ticks_total } val progress = ProgressGaugeWidget(this) { 1f - tile!!.workingTicks.toFloat() / tile.workingTicksTotal }
val energy = LevelGaugeWidget(this, tile?.energy) val energy = LevelGaugeWidget(this, tile)
val burn_time = IntDataContainer() val burnTime = IntDataContainer()
init { init {
addSlot(fuelSlot) addSlot(fuelSlot)
addSlot(batterySlot) addSlot(batterySlot)
addDataSlots(burn_time) addDataSlots(burnTime)
addInventorySlots() addInventorySlots()
} }
override fun broadcastChanges() { override fun broadcastChanges() {
super.broadcastChanges() super.broadcastChanges()
progress.updateServer() progress.updateServer()
burn_time.value = (tile as BlockEntityChemicalGenerator).working_ticks burnTime.value = (tile as BlockEntityChemicalGenerator).workingTicks
} }
override fun getWorkingSlotStart(): Int { override fun getWorkingSlotStart(): Int {