Storage power supplier menu

This commit is contained in:
DBotThePony 2022-05-14 23:35:30 +07:00
parent 4dee77edbe
commit 833c5d2780
Signed by: DBot
GPG Key ID: DCC23B5715498507
4 changed files with 74 additions and 2 deletions

View File

@ -20,6 +20,7 @@ import ru.dbotthepony.mc.otm.capability.transferInner
import ru.dbotthepony.mc.otm.core.ImpreciseFraction
import ru.dbotthepony.mc.otm.graph.storage.BasicStorageGraphNode
import ru.dbotthepony.mc.otm.graph.storage.StorageNetworkGraph
import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu
import ru.dbotthepony.mc.otm.registry.MBlockEntities
import ru.dbotthepony.mc.otm.registry.MNames
import ru.dbotthepony.mc.otm.set
@ -28,8 +29,8 @@ class StoragePowerSupplierBlockEntity(blockPos: BlockPos, blockState: BlockState
override val defaultDisplayName: Component
get() = MACHINE_NAME
override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu? {
return null
override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu {
return StoragePowerSupplierMenu(containerID, inventory, this)
}
val cell = BasicStorageGraphNode()

View File

@ -0,0 +1,34 @@
package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
import ru.dbotthepony.mc.otm.menu.FormattingHelper
import ru.dbotthepony.mc.otm.menu.StorageImporterMenu
import ru.dbotthepony.mc.otm.menu.StoragePowerSupplierMenu
class StoragePowerSupplierScreen(menu: StoragePowerSupplierMenu, inventory: Inventory, title: Component) :
MatteryScreen<StoragePowerSupplierMenu>(menu, inventory, title) {
override fun makeMainFrame(): FramePanel {
val frame = super.makeMainFrame()!!
PowerGaugePanel(this, frame, menu.powerWidget, LEFT_MARGIN, GAUGE_TOP_WITH_SLOT)
SlotPanel(this, frame, menu.batterySlot, LEFT_MARGIN, SLOT_TOP_UNDER_GAUGE)
object : Label(this@StoragePowerSupplierScreen, frame, 28f, 17f, width = 140f) {
override fun tick() {
super.tick()
text = TranslatableComponent(
"otm.item.power.passed",
FormattingHelper.formatPower(menu.totalTransferred.value)
)
}
}
return frame
}
}

View File

@ -0,0 +1,35 @@
package ru.dbotthepony.mc.otm.menu
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.StorageImporterBlockEntity
import ru.dbotthepony.mc.otm.block.entity.StoragePowerSupplierBlockEntity
import ru.dbotthepony.mc.otm.menu.data.ImpreciseFractionDataContainer
import ru.dbotthepony.mc.otm.menu.widget.BooleanPlayerInputWidget
import ru.dbotthepony.mc.otm.registry.MMenus
class StoragePowerSupplierMenu @JvmOverloads constructor(
p_38852_: Int,
inventory: Inventory,
tile: StoragePowerSupplierBlockEntity? = null
) : MatteryPoweredMenu(
MMenus.STORAGE_POWER_SUPPLIER, p_38852_, inventory, tile
) {
val totalTransferred = ImpreciseFractionDataContainer()
init {
addInventorySlots()
addDataContainer(totalTransferred)
}
override fun broadcastChanges() {
if (tile is StoragePowerSupplierBlockEntity) {
totalTransferred.value = tile.powerSupplied
}
super.broadcastChanges()
}
override fun getWorkingSlotStart() = 0
override fun getWorkingSlotEnd() = 1
}

View File

@ -34,6 +34,7 @@ object MMenus {
val STORAGE_BUS: MenuType<*> by registry.register(MNames.STORAGE_BUS) { MenuType(::StorageBusMenu) }
val STORAGE_EXPORTER: MenuType<*> by registry.register(MNames.STORAGE_EXPORTER) { MenuType(::StorageExporterMenu) }
val STORAGE_IMPORTER: MenuType<*> by registry.register(MNames.STORAGE_IMPORTER) { MenuType(::StorageImporterMenu) }
val STORAGE_POWER_SUPPLIER: MenuType<*> by registry.register(MNames.STORAGE_POWER_SUPPLIER) { MenuType(::StoragePowerSupplierMenu) }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
@ -63,6 +64,7 @@ object MMenus {
MenuScreens.register(STORAGE_BUS as MenuType<StorageBusMenu>, ::StorageBusScreen)
MenuScreens.register(STORAGE_EXPORTER as MenuType<StorageExporterMenu>, ::StorageExporterScreen)
MenuScreens.register(STORAGE_IMPORTER as MenuType<StorageImporterMenu>, ::StorageImporterScreen)
MenuScreens.register(STORAGE_POWER_SUPPLIER as MenuType<StoragePowerSupplierMenu>, ::StoragePowerSupplierScreen)
}
}
}