From 11def73d105d7364323ea0a28e83315d9b35a708 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 31 Dec 2021 13:47:02 +0700 Subject: [PATCH] Update cleanness of code --- .../entity/BlockEntityChemicalGenerator.kt | 116 +++++++++--------- .../client/screen/ChemicalGeneratorScreen.kt | 4 +- .../mc/otm/menu/ChemicalGeneratorMenu.kt | 10 +- 3 files changed, 63 insertions(+), 67 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BlockEntityChemicalGenerator.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BlockEntityChemicalGenerator.kt index 0c0a1bd89..8964590ea 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BlockEntityChemicalGenerator.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/BlockEntityChemicalGenerator.kt @@ -32,7 +32,7 @@ import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.capability.receiveEnergy 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 { return NAME } @@ -42,7 +42,7 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti } private var valid = true - private var resolver = LazyOptional.of {energy} + private var resolver = LazyOptional.of {this} override fun getCapability(cap: Capability, side: Direction?): LazyOptional { 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() itemHandler.revive() valid = true - resolver = LazyOptional.of {energy} + resolver = LazyOptional.of {this} } override fun setLevel(level: Level) { @@ -89,8 +89,8 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti nbt["energy"] = power.serializeNBT() nbt["slots"] = container.serializeNBT() - nbt["working_ticks"] = working_ticks - nbt["working_ticks_total"] = working_ticks_total + nbt["working_ticks"] = workingTicks + nbt["working_ticks_total"] = workingTicksTotal } override fun load(nbt: CompoundTag) { @@ -106,12 +106,12 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti nbt.ifHas("working_ticks") { if (it is IntTag) - working_ticks = it.asInt + workingTicks = it.asInt } nbt.ifHas("working_ticks_total") { 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 stack.getCapability(CapabilityEnergy.ENERGY).isPresent - }, fun (slot, amount, stack): Boolean { + }, fun (slot, _, stack): Boolean { return slot == 1 && (!stack.getCapability(CapabilityEnergy.ENERGY).isPresent || stack.getCapability(CapabilityEnergy.ENERGY).resolve().get().receiveEnergy(Int.MAX_VALUE, true) <= 0) }) @@ -171,48 +171,46 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti private var power = Fraction.ZERO - val energy = object : IMatteryEnergyStorage { - override fun extractEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction { - return extractEnergyInner(howMuch, simulate) - } - - override fun extractEnergyInner(howMuch: Fraction, simulate: Boolean): Fraction { - val extracted = howMuch.min(THROUGHPUT, power) - - if (!simulate && !extracted.isZero()) { - power -= extracted - check = true - setChangedLight() - } - - return extracted - } - - override fun receiveEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction { - return Fraction.ZERO - } - - override fun receiveEnergyInner(howMuch: Fraction, simulate: Boolean): Fraction { - val new = (howMuch + power).min(MAX_ENERGY) - val diff = new - power - - if (!simulate) { - power = new - setChangedLight() - } - - return diff - } - - override fun getBatteryLevel(): Fraction = power - override fun getMaxBatteryLevel(): Fraction = MAX_ENERGY - override fun canExtract(): Boolean = true + override fun extractEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction { + return extractEnergyInner(howMuch, simulate) } - var working_ticks = 0 + override fun extractEnergyInner(howMuch: Fraction, simulate: Boolean): Fraction { + val extracted = howMuch.min(THROUGHPUT, power) + + if (!simulate && !extracted.isZero()) { + power -= extracted + check = true + setChangedLight() + } + + return extracted + } + + override fun receiveEnergyOuter(howMuch: Fraction, simulate: Boolean): Fraction { + return Fraction.ZERO + } + + override fun receiveEnergyInner(howMuch: Fraction, simulate: Boolean): Fraction { + val new = (howMuch + power).min(MAX_ENERGY) + val diff = new - power + + if (!simulate) { + power = new + setChangedLight() + } + + return diff + } + + override fun getBatteryLevel(): Fraction = power + override fun getMaxBatteryLevel(): Fraction = MAX_ENERGY + override fun canExtract(): Boolean = true + + var workingTicks = 0 private set - var working_ticks_total = 0 + var workingTicksTotal = 0 private set private var check = false @@ -220,30 +218,30 @@ class BlockEntityChemicalGenerator(pos: BlockPos, state: BlockState) : BlockEnti private fun workWithPower(it: IEnergyStorage) { if (it is IMatteryEnergyStorage) { val demand = it.missingPower - val extracted = energy.extractEnergyInner(demand, true) + val extracted = extractEnergyInner(demand, true) val received = it.receiveEnergyOuter(extracted, false) if (!received.isZero()) { - energy.extractEnergyInner(received, false) + extractEnergyInner(received, false) } } else { val demand = it.receiveEnergy(THROUGHPUT_INT, true) - val extracted = energy.extractEnergyInner(demand, true) + val extracted = extractEnergyInner(demand, true) val received = it.receiveEnergy(extracted, false) if (received != 0) { - energy.extractEnergyInner(received, false) + extractEnergyInner(received, false) } } } fun tick() { - if (working_ticks > 0 && !isBlockedByRedstone) { - working_ticks-- - energy.receiveEnergyInner(GENERATION_SPEED, false) + if (workingTicks > 0 && !isBlockedByRedstone) { + workingTicks-- + receiveEnergyInner(GENERATION_SPEED, false) - if (working_ticks == 0) { - working_ticks_total = 0 + if (workingTicks == 0) { + workingTicksTotal = 0 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) } - if (working_ticks == 0 && !isBlockedByRedstone && check) { + if (workingTicks == 0 && !isBlockedByRedstone && check) { if (!container.getItem(0).isEmpty) { val ticks = ForgeHooks.getBurnTime(container.getItem(0), null) - if (ticks >= 4 && (energy.batteryLevel < Fraction.ONE || GENERATION_SPEED * (ticks / 4) + energy.batteryLevel <= energy.maxBatteryLevel)) { - working_ticks_total = ticks / 4 - working_ticks = ticks / 4 + if (ticks >= 4 && (batteryLevel < Fraction.ONE || GENERATION_SPEED * (ticks / 4) + batteryLevel <= maxBatteryLevel)) { + workingTicksTotal = ticks / 4 + workingTicks = ticks / 4 container.getItem(0).shrink(1) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt index 68cfb7f3a..aec2e96bb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ChemicalGeneratorScreen.kt @@ -1,8 +1,6 @@ package ru.dbotthepony.mc.otm.client.screen -import com.mojang.blaze3d.vertex.PoseStack import net.minecraft.network.chat.Component -import net.minecraft.network.chat.TextComponent import net.minecraft.network.chat.TranslatableComponent import net.minecraft.world.entity.player.Inventory import ru.dbotthepony.mc.otm.client.screen.panels.* @@ -22,7 +20,7 @@ class ChemicalGeneratorScreen(menu: ChemicalGeneratorMenu, inventory: Inventory, override fun makeTooltip(): MutableList { 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 } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/ChemicalGeneratorMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/ChemicalGeneratorMenu.kt index 6e6628e7f..1e2592087 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/ChemicalGeneratorMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/ChemicalGeneratorMenu.kt @@ -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 energy = LevelGaugeWidget(this, tile?.energy) - val burn_time = IntDataContainer() + val progress = ProgressGaugeWidget(this) { 1f - tile!!.workingTicks.toFloat() / tile.workingTicksTotal } + val energy = LevelGaugeWidget(this, tile) + val burnTime = IntDataContainer() init { addSlot(fuelSlot) addSlot(batterySlot) - addDataSlots(burn_time) + addDataSlots(burnTime) addInventorySlots() } override fun broadcastChanges() { super.broadcastChanges() progress.updateServer() - burn_time.value = (tile as BlockEntityChemicalGenerator).working_ticks + burnTime.value = (tile as BlockEntityChemicalGenerator).workingTicks } override fun getWorkingSlotStart(): Int {