Update cleanness of code
This commit is contained in:
parent
513f8afbe0
commit
11def73d10
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user