Rename "MatteryMenu" to "MatteryMenuSlot", along with all other slot classes to include "menu" in their name

This commit is contained in:
DBotThePony 2025-02-28 22:11:11 +07:00
parent f79b49d422
commit 1702f95370
Signed by: DBot
GPG Key ID: DCC23B5715498507
39 changed files with 156 additions and 171 deletions

View File

@ -10,13 +10,10 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
import net.minecraft.network.chat.Component
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.inventory.Slot
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.neoforged.neoforge.client.event.ContainerScreenEvent
import net.neoforged.neoforge.common.NeoForge
import org.lwjgl.opengl.GL11
import ru.dbotthepony.kommons.util.getValue
import ru.dbotthepony.kommons.util.setValue
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
@ -49,7 +46,7 @@ import ru.dbotthepony.mc.otm.core.math.component1
import ru.dbotthepony.mc.otm.core.math.component2
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
import java.util.*
@ -407,7 +404,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
matter: LevelGaugeWidget? = null,
profiledMatter: ProfiledLevelGaugeWidget<*>? = null,
patterns: LevelGaugeWidget? = null,
batterySlot: MatterySlot? = null,
batterySlot: MatteryMenuSlot? = null,
) {
var bars = 0
if (energy != null) bars++

View File

@ -60,7 +60,7 @@ open class PlayerEquipmentPanel<S : MatteryScreen<*>>(
parent: EditablePanel<*>?,
x: Float = 0f,
y: Float = 0f,
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentSlot, Slot>>
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentMenuSlot, Slot>>
) : EditablePanel<S>(screen, parent, x, y, height = HEIGHT, width = WIDTH) {
val armorSlotsStrip = EditablePanel(screen, this, width = AbstractSlotPanel.SIZE)
val entityPanel = EntityRendererPanel(screen, this, minecraft.player!!)

View File

@ -2,11 +2,9 @@ package ru.dbotthepony.mc.otm.client.screen.panels.button
import com.mojang.blaze3d.platform.InputConstants
import net.minecraft.ChatFormatting
import net.minecraft.client.gui.screens.Screen
import net.minecraft.network.chat.Component
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import ru.dbotthepony.kommons.math.RGBAColor
import ru.dbotthepony.kommons.util.Delegate
import ru.dbotthepony.kommons.util.value
import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity
@ -21,7 +19,6 @@ import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
import ru.dbotthepony.mc.otm.client.render.ItemStackIcon
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
import ru.dbotthepony.mc.otm.client.render.Widgets18
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.client.screen.panels.Dock
@ -39,7 +36,7 @@ import ru.dbotthepony.mc.otm.core.math.RelativeSide
import ru.dbotthepony.mc.otm.core.util.ItemStackSorter
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.UpgradeSlots
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
@ -570,7 +567,7 @@ class DeviceControls<out S : MatteryScreen<*>>(
val grid = GridPanel(screen, frame, columns = columns, rows = rows)
for (slot in upgrades.slots) {
object : SlotPanel<S, MatterySlot>(screen, grid, slot) {
object : SlotPanel<S, MatteryMenuSlot>(screen, grid, slot) {
override val cursorType: CursorType
get() = if (upgrades.areLocked.get()) CursorType.NOT_ALLOWED else super.cursorType
}

View File

@ -8,9 +8,9 @@ import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
import ru.dbotthepony.mc.otm.container.util.containerSlot
import ru.dbotthepony.mc.otm.menu.UserFilteredSlot
import ru.dbotthepony.mc.otm.menu.UserFilteredMenuSlot
open class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : UserFilteredSlot>(
open class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : UserFilteredMenuSlot>(
screen: S,
parent: EditablePanel<*>?,
slot: T,

View File

@ -6,7 +6,6 @@ import lain.mods.cos.impl.client.PlayerRenderHandler
import lain.mods.cos.impl.client.gui.GuiCosArmorInventory
import lain.mods.cos.impl.network.payload.PayloadSetSkinArmor
import net.minecraft.client.gui.screens.Screen
import net.minecraft.network.chat.Component
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.Container
@ -20,9 +19,6 @@ import net.neoforged.neoforge.network.PacketDistributor
import ru.dbotthepony.kommons.math.RGBAColor
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite
import ru.dbotthepony.mc.otm.client.render.sprites.sprite
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel
@ -32,7 +28,7 @@ import ru.dbotthepony.mc.otm.container.util.awareStream
import ru.dbotthepony.mc.otm.container.util.iterator
import ru.dbotthepony.mc.otm.core.collect.AwareItemStack
import ru.dbotthepony.mc.otm.core.collect.emptyIterator
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import java.util.stream.Stream
val isCosmeticArmorLoaded by lazy {
@ -47,7 +43,7 @@ val Player.cosmeticArmorSlots: Map<EquipmentSlot, Slot>? get() {
return cosmeticArmorSlotsImpl
}
private class CosmeticSlot(container: Container, private val slot: EquipmentSlot, private val player: Player) : MatterySlot(container, when (slot) {
private class CosmeticMenuSlot(container: Container, private val slot: EquipmentSlot, private val player: Player) : MatteryMenuSlot(container, when (slot) {
EquipmentSlot.FEET -> 0
EquipmentSlot.LEGS -> 1
EquipmentSlot.CHEST -> 2
@ -127,10 +123,10 @@ private val Player.cosmeticArmorSlotsImpl: Map<EquipmentSlot, Slot>? get() {
}
return mapOf(
EquipmentSlot.HEAD to CosmeticSlot(container, EquipmentSlot.HEAD, this),
EquipmentSlot.CHEST to CosmeticSlot(container, EquipmentSlot.CHEST, this),
EquipmentSlot.LEGS to CosmeticSlot(container, EquipmentSlot.LEGS, this),
EquipmentSlot.FEET to CosmeticSlot(container, EquipmentSlot.FEET, this),
EquipmentSlot.HEAD to CosmeticMenuSlot(container, EquipmentSlot.HEAD, this),
EquipmentSlot.CHEST to CosmeticMenuSlot(container, EquipmentSlot.CHEST, this),
EquipmentSlot.LEGS to CosmeticMenuSlot(container, EquipmentSlot.LEGS, this),
EquipmentSlot.FEET to CosmeticMenuSlot(container, EquipmentSlot.FEET, this),
)
}

View File

@ -22,7 +22,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryPlayer
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.core.ResourceLocation
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import java.util.*
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
@ -47,9 +47,9 @@ private class MenuConfiguration(
for (i in 0 .. 8) {
if (matteryPlayer.exopackContainer.containerSize > i + offset) {
row.add(MatterySlot(matteryPlayer.exopackContainer, i + offset))
row.add(MatteryMenuSlot(matteryPlayer.exopackContainer, i + offset))
} else {
row.add(FakeSlot())
row.add(FakeMenuSlot())
}
}
@ -150,7 +150,7 @@ private class MenuConfiguration(
}
}
private class FakeSlot : MatterySlot(SimpleContainer(1), 0, 0, 0) {
private class FakeMenuSlot : MatteryMenuSlot(SimpleContainer(1), 0, 0, 0) {
override fun mayPickup(player: Player): Boolean {
return false
}

View File

@ -11,7 +11,7 @@ import net.neoforged.bus.api.IEventBus
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
@ -20,7 +20,7 @@ class MatteryChestMenu(
inventory: Inventory, val rows: Int, val columns: Int,
val container: Container = SimpleContainer(rows * columns)
) : MatteryMenu(type, containerId, inventory) {
val chestSlots = makeSlots(container, ::MatterySlot)
val chestSlots = makeSlots(container, ::MatteryMenuSlot)
val sort = SortInput(container, playerSortSettings)
init {

View File

@ -21,7 +21,7 @@ import ru.dbotthepony.mc.otm.network.ExopackSlotPacket
class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CONTAINER_ID, capability.ply.inventory) {
val craftingGrid: CraftingContainer
val craftingSlots: List<MatterySlot>
val craftingSlots: List<MatteryMenuSlot>
init {
if (capability.isExopackCraftingUpgraded) {
@ -30,10 +30,10 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
craftingGrid = TransientCraftingContainer(this, 2, 2)
}
val builder = ImmutableList.builder<MatterySlot>()
val builder = ImmutableList.builder<MatteryMenuSlot>()
for (i in 0 until craftingGrid.containerSize) {
builder.add(MatterySlot(craftingGrid, i))
builder.add(MatteryMenuSlot(craftingGrid, i))
}
craftingSlots = builder.build()
@ -91,16 +91,16 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
}
}
val furnaceInputs: List<MatterySlot> = capability.smelters.map {
object : MatterySlot(it.input, 0) {
val furnaceInputs: List<MatteryMenuSlot> = capability.smelters.map {
object : MatteryMenuSlot(it.input, 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && capability.isExopackSmeltingInstalled
}
}
}
val furnaceOutputs: List<OutputSlot> = capability.smelters.map {
object : OutputSlot(it.output, 0, onTake = { popFurnaceExp() }) {
val furnaceOutputs: List<OutputMenuSlot> = capability.smelters.map {
object : OutputMenuSlot(it.output, 0, onTake = { popFurnaceExp() }) {
override fun mayPickup(player: Player): Boolean {
return super.mayPickup(player) && capability.isExopackSmeltingInstalled
}
@ -115,7 +115,7 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
}
val enderChestSlots: List<MatterySlot>
val enderChestSlots: List<MatteryMenuSlot>
val enderChestOpenState = InstantBooleanInput(this)
val playerEnderSortSettings = IItemStackSortingSettings.inputs(this, capability.enderSortingSettings)
val sortEnderChest: SortInput?
@ -123,7 +123,7 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
init {
if (capability.isExopackEnderAccessInstalled) {
enderChestSlots = makeSlots(player.enderChestInventory) { a, b ->
MatterySlot(a, b).also {
MatteryMenuSlot(a, b).also {
addStorageSlot(it, condition = enderChestOpenState)
}
}

View File

@ -39,7 +39,6 @@ import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorSlots
import ru.dbotthepony.mc.otm.compat.curios.curiosSlots
import ru.dbotthepony.mc.otm.compat.curios.isCurioSlot
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
import ru.dbotthepony.mc.otm.container.IMatteryContainer
import ru.dbotthepony.mc.otm.container.computeSortedIndices
import ru.dbotthepony.mc.otm.container.sortWithIndices
import ru.dbotthepony.mc.otm.container.util.containerSlotOrNull
@ -66,7 +65,7 @@ import java.util.function.Predicate
data class PlayerSlot<A : Slot, B : Slot>(val functional: A, val cosmetic: B? = null)
data class EquipmentSlots(
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentSlot, Slot>>,
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentMenuSlot, Slot>>,
val curiosSlots: List<PlayerSlot<Slot, Slot>>
)
@ -87,7 +86,7 @@ abstract class MatteryMenu(
private val _playerInventorySlots = ArrayList<InventorySlot>()
private val _playerHotbarSlots = ArrayList<InventorySlot>()
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
private val _exopackChargeSlots = ArrayList<MatterySlot>()
private val _exopackChargeSlots = ArrayList<MatteryMenuSlot>()
private val playerInputs = ArrayList<PlayerInput<*>>()
@ -202,7 +201,7 @@ abstract class MatteryMenu(
*/
val playerCombinedInventorySlots: List<InventorySlot> = Collections.unmodifiableList(_playerCombinedInventorySlots)
val exopackChargeSlots: List<MatterySlot> = Collections.unmodifiableList(_exopackChargeSlots)
val exopackChargeSlots: List<MatteryMenuSlot> = Collections.unmodifiableList(_exopackChargeSlots)
val exopackPowerLevel = ProfiledLevelGaugeWidget<ProfiledEnergyStorage<*>>(mSynchronizer, player.matteryPlayer.exopackEnergy)
@ -223,7 +222,7 @@ abstract class MatteryMenu(
protected var inventorySlotIndexStart = 0
protected var inventorySlotIndexEnd = 0
open inner class InventorySlot(container: Container, index: Int) : UserFilteredSlot(container, index, 0, 0) {
open inner class InventorySlot(container: Container, index: Int) : UserFilteredMenuSlot(container, index, 0, 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return !isInventorySlotLocked(index) && super.mayPlace(itemStack)
}
@ -247,7 +246,7 @@ abstract class MatteryMenu(
}
}
open inner class EquipmentSlot(container: Container, index: Int, val type: net.minecraft.world.entity.EquipmentSlot) : InventorySlot(container, index) {
open inner class EquipmentMenuSlot(container: Container, index: Int, val type: net.minecraft.world.entity.EquipmentSlot) : InventorySlot(container, index) {
constructor(type: net.minecraft.world.entity.EquipmentSlot) : this(inventory, 34 + type.ordinal, type)
override fun setByPlayer(newItem: ItemStack, oldItem: ItemStack) {
@ -310,10 +309,10 @@ abstract class MatteryMenu(
}
if (mattery.hasExopack) {
_exopackChargeSlots.add(BatterySlot(mattery.exopackEnergy.parent, 0).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
_exopackChargeSlots.add(BatteryMenuSlot(mattery.exopackEnergy.parent, 0).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
for (i in 0 until mattery.exopackChargeSlots.containerSize)
_exopackChargeSlots.add(ChargeSlot(mattery.exopackChargeSlots, i).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
_exopackChargeSlots.add(ChargeMenuSlot(mattery.exopackChargeSlots, i).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
}
sortInventoryInput = SortInput(mattery.inventoryAndExopackNoHotbar, playerSortSettings)
@ -385,7 +384,7 @@ abstract class MatteryMenu(
if (!seenSlots.add(pSlot))
return pSlot
if (pSlot is MatterySlot) {
if (pSlot is MatteryMenuSlot) {
pSlot.setupNetworkControls(this)
}
@ -505,10 +504,10 @@ abstract class MatteryMenu(
}
override fun canTakeItemForPickAll(itemStack: ItemStack, slot: Slot): Boolean {
if (slot is EquipmentSlot)
if (slot is EquipmentMenuSlot)
return false
return super.canTakeItemForPickAll(itemStack, slot) && (slot !is MatterySlot || slot.canTakeItemForPickAll()) && !slot.isCurioSlot
return super.canTakeItemForPickAll(itemStack, slot) && (slot !is MatteryMenuSlot || slot.canTakeItemForPickAll()) && !slot.isCurioSlot
}
override fun moveItemStackTo(
@ -643,11 +642,11 @@ abstract class MatteryMenu(
return moveItemStackToSlots(item, slots, simulate)
}
private var armorSlots: ImmutableList<PlayerSlot<EquipmentSlot, Slot>>? = null
private var armorSlots: ImmutableList<PlayerSlot<EquipmentMenuSlot, Slot>>? = null
private var curiosSlots: ImmutableList<PlayerSlot<Slot, Slot>>? = null
private val equipmentSlots = ArrayList<Slot>()
fun makeArmorSlots(mapMoveToExternal: Boolean = false): List<PlayerSlot<EquipmentSlot, Slot>> {
fun makeArmorSlots(mapMoveToExternal: Boolean = false): List<PlayerSlot<EquipmentMenuSlot, Slot>> {
if (armorSlots != null) {
return armorSlots!!
}
@ -655,10 +654,10 @@ abstract class MatteryMenu(
val cosmetic = player.cosmeticArmorSlots
return ImmutableList.of(
PlayerSlot(EquipmentSlot(net.minecraft.world.entity.EquipmentSlot.HEAD), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.HEAD)),
PlayerSlot(EquipmentSlot(net.minecraft.world.entity.EquipmentSlot.CHEST), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.CHEST)),
PlayerSlot(EquipmentSlot(net.minecraft.world.entity.EquipmentSlot.LEGS), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.LEGS)),
PlayerSlot(EquipmentSlot(net.minecraft.world.entity.EquipmentSlot.FEET), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.FEET)),
PlayerSlot(EquipmentMenuSlot(net.minecraft.world.entity.EquipmentSlot.HEAD), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.HEAD)),
PlayerSlot(EquipmentMenuSlot(net.minecraft.world.entity.EquipmentSlot.CHEST), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.CHEST)),
PlayerSlot(EquipmentMenuSlot(net.minecraft.world.entity.EquipmentSlot.LEGS), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.LEGS)),
PlayerSlot(EquipmentMenuSlot(net.minecraft.world.entity.EquipmentSlot.FEET), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.FEET)),
).also {
armorSlots = it

View File

@ -15,7 +15,7 @@ abstract class MatteryPoweredMenu protected constructor(
tile: MatteryPoweredBlockEntity? = null
) : MatteryMenu(menuType, containerID, inventory, tile) {
val energyWidget = LevelGaugeWidget(this, tile?.energy)
val batterySlot = BatterySlot(tile?.batteryContainer ?: SimpleContainer(1), 0)
val batterySlot = BatteryMenuSlot(tile?.batteryContainer ?: SimpleContainer(1), 0)
val redstoneConfig = EnumInputWithFeedback<RedstoneSetting>(this)
init {

View File

@ -50,7 +50,7 @@ inline fun <S : Slot> makeSlots(containers: List<Container>?, size: Int, initial
return immutableList(size) { initializer(containers?.get(it) ?: SimpleContainer(1), 0) }
}
open class MatterySlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : Slot(container, index, x, y) {
open class MatteryMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : Slot(container, index, x, y) {
var ignoreSpectators = true
open fun setupNetworkControls(menu: MatteryMenu) {
@ -112,7 +112,7 @@ open class MatterySlot(container: Container, index: Int, x: Int = 0, y: Int = 0)
}
}
open class UserFilteredSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class UserFilteredMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
var filterInput: MatteryMenu.PlayerInput<Item?>? = null
private set
@ -126,7 +126,7 @@ open class UserFilteredSlot(container: Container, index: Int, x: Int = 0, y: Int
}
}
open class OutputSlot(container: Container, index: Int, x: Int = 0, y: Int = 0, val onTake: (ItemStack) -> Unit = {}) : MatterySlot(container, index, x, y) {
open class OutputMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0, val onTake: (ItemStack) -> Unit = {}) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return false
}
@ -142,50 +142,50 @@ open class OutputSlot(container: Container, index: Int, x: Int = 0, y: Int = 0,
}
}
open class BatterySlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class BatteryMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && (itemStack.energy?.canExtract() ?: false)
}
}
open class ChemicalFuelSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class ChemicalFuelMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && itemStack.getBurnTime(null) > 0
}
}
open class ChargeSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class ChargeMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && (itemStack.energy?.canReceive() ?: false)
}
}
open class EnergyContainerInputSlot(container: Container, index: Int, x: Int = 0, y: Int = 0, val direction: FlowDirection = FlowDirection.BI_DIRECTIONAL) : MatterySlot(container, index, x, y) {
open class EnergyContainerInputMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0, val direction: FlowDirection = FlowDirection.BI_DIRECTIONAL) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && (itemStack.getCapability(Capabilities.EnergyStorage.ITEM)?.let { direction.test(FlowDirection.of(it.canReceive(), it.canExtract())) } ?: false)
}
}
open class MatterContainerInputSlot(
open class MatterContainerInputMenuSlot(
container: Container,
index: Int,
x: Int = 0,
y: Int = 0,
val direction: FlowDirection = FlowDirection.BI_DIRECTIONAL
) : MatterySlot(container, index, x, y) {
) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
val handler = itemStack.getCapability(MatteryCapability.MATTER_ITEM)
return handler != null && super.mayPlace(itemStack) && this.direction.test(handler.matterFlow)
}
}
open class PatternSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class PatternMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && itemStack.getCapability(MatteryCapability.PATTERN_ITEM) != null
}
}
open class DriveSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatterySlot(container, index, x, y) {
open class DriveMenuSlot(container: Container, index: Int, x: Int = 0, y: Int = 0) : MatteryMenuSlot(container, index, x, y) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && itemStack.getCapability(MatteryCapability.CONDENSATION_DRIVE) != null
}
@ -255,7 +255,7 @@ fun MatteryMenu.addFilterControls(slots: KMutableProperty0<ItemFilter>?, amount:
* in classloading exceptions.
*/
data class UpgradeSlots(
val slots: List<MatterySlot>,
val slots: List<MatteryMenuSlot>,
val allowedTypes: Set<UpgradeType>,
val openState: Delegate<Boolean>,
val currentStats: IMatteryUpgrade,
@ -291,7 +291,7 @@ fun MatteryMenu.makeUpgradeSlots(count: Int, container: UpgradeContainer?): Upgr
return UpgradeSlots(
slots = immutableList(count) {
object : MatterySlot(syncContainer, it) {
object : MatteryMenuSlot(syncContainer, it) {
init {
mapQuickMoveToInventory(this)
}

View File

@ -1,13 +1,11 @@
package ru.dbotthepony.mc.otm.menu.decorative
import net.minecraft.world.Container
import net.minecraft.world.SimpleContainer
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import ru.dbotthepony.mc.otm.block.entity.decorative.CargoCrateBlockEntity
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.UserFilteredSlot
import ru.dbotthepony.mc.otm.menu.UserFilteredMenuSlot
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.registry.game.MMenus
@ -17,7 +15,7 @@ class CargoCrateMenu(
tile: CargoCrateBlockEntity? = null
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory, tile) {
val actualContainer = tile?.container ?: SlottedContainer.filtered(CargoCrateBlockEntity.CAPACITY)
val storageSlots = makeSlots(actualContainer, ::UserFilteredSlot)
val storageSlots = makeSlots(actualContainer, ::UserFilteredMenuSlot)
private val trackedPlayerOpen = !inventory.player.isSpectator
val sort = SortInput(actualContainer, playerSortSettings)

View File

@ -8,9 +8,9 @@ import net.neoforged.neoforge.fluids.capability.IFluidHandler
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.decorative.FluidTankBlockEntity
import ru.dbotthepony.mc.otm.capability.isNotEmpty
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -24,14 +24,14 @@ class FluidTankMenu(containerId: Int, inventory: Inventory, tile: FluidTankBlock
val redstoneConfig = EnumInputWithFeedback<RedstoneSetting>(this)
val fluidConfig = FluidConfigPlayerInput(this, tile?.fluidConfig)
val drainInput = object : MatterySlot(tile?.drainInput ?: SimpleContainer(1), 0) {
val drainInput = object : MatteryMenuSlot(tile?.drainInput ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) &&
(itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.isNotEmpty ?: false)
}
}
val fillInput = object : MatterySlot(tile?.fillInput ?: SimpleContainer(1), 0) {
val fillInput = object : MatteryMenuSlot(tile?.fillInput ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) &&
(if (itemStack.count <= 1) itemStack
@ -46,7 +46,7 @@ class FluidTankMenu(containerId: Int, inventory: Inventory, tile: FluidTankBlock
}
}
val output = OutputSlot(tile?.output ?: SimpleContainer(1), 0)
val output = OutputMenuSlot(tile?.output ?: SimpleContainer(1), 0)
init {
// сначала слот на заполнение из бака

View File

@ -12,9 +12,9 @@ import ru.dbotthepony.kommons.util.getValue
import ru.dbotthepony.mc.otm.block.entity.decorative.GrillBlockEntity
import ru.dbotthepony.mc.otm.container.MatteryContainer
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.menu.ChemicalFuelSlot
import ru.dbotthepony.mc.otm.menu.ChemicalFuelMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.menu.widget.IProgressGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.TakeExperienceWidget
@ -30,14 +30,14 @@ class GrillMenu(
override fun getMaxStackSize(): Int {
return 4
}
}, ::ChemicalFuelSlot)
}, ::ChemicalFuelMenuSlot)
val inputSlots = makeSlots<Container, MatterySlot>(tile?.inputSlots ?: object : MatteryContainer(GrillBlockEntity.SLOTS) {
val inputSlots = makeSlots<Container, MatteryMenuSlot>(tile?.inputSlots ?: object : MatteryContainer(GrillBlockEntity.SLOTS) {
override fun getMaxStackSize(): Int {
return 1
}
}) { c, i ->
object : MatterySlot(c, i) {
object : MatteryMenuSlot(c, i) {
override fun onTake(p_150645_: Player, p_150646_: ItemStack) {
super.onTake(p_150645_, p_150646_)

View File

@ -7,7 +7,7 @@ import net.minecraft.world.entity.player.Player
import ru.dbotthepony.mc.otm.block.entity.decorative.CargoCrateBlockEntity
import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.registry.game.MMenus
@ -17,7 +17,7 @@ class MinecartCargoCrateMenu(
val cart: MinecartCargoCrate? = null
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory) {
val actualContainer: Container = cart ?: SimpleContainer(CargoCrateBlockEntity.CAPACITY)
val storageSlots = makeSlots(actualContainer, ::MatterySlot)
val storageSlots = makeSlots(actualContainer, ::MatteryMenuSlot)
private val trackedPlayerOpen = !inventory.player.isSpectator

View File

@ -23,7 +23,7 @@ import ru.dbotthepony.mc.otm.core.collect.filter
import ru.dbotthepony.mc.otm.core.collect.maybe
import ru.dbotthepony.mc.otm.core.isNotEmpty
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.network.StreamCodecs
@ -56,7 +56,7 @@ class PainterMenu(
selectedRecipe = it
}
val inputSlot = object : MatterySlot(inputContainer, 0) {
val inputSlot = object : MatteryMenuSlot(inputContainer, 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
if (!itemStack.isEmpty && itemStack.`is`(ItemTags.DYEABLE)) {
return super.mayPlace(itemStack)
@ -66,7 +66,7 @@ class PainterMenu(
}
}
val outputSlot = object : MatterySlot(outputContainer, 0) {
val outputSlot = object : MatteryMenuSlot(outputContainer, 0) {
override fun tryRemove(p_150642_: Int, p_150643_: Int, p_150644_: Player): Optional<ItemStack> {
rescan()
return super.tryRemove(p_150642_, p_150643_, p_150644_)
@ -102,7 +102,7 @@ class PainterMenu(
}
}
val dyeSlot = object : MatterySlot(tile?.dyeInput ?: SimpleContainer(1), 0) {
val dyeSlot = object : MatteryMenuSlot(tile?.dyeInput ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && ((
itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.let {

View File

@ -1,7 +1,6 @@
package ru.dbotthepony.mc.otm.menu.matter
import com.google.common.collect.ImmutableList
import net.minecraft.world.SimpleContainer
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
@ -14,7 +13,7 @@ import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
@ -29,8 +28,8 @@ class MatterBottlerMenu(
val progressWidget = ProgressGaugeWidget(this)
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
val storageSlots: ImmutableList<MatterySlot> = makeSlots(CombinedContainer(tile?.bottling ?: SlottedContainer.simple(3), tile?.unbottling ?: SlottedContainer.simple(3))) { it, index ->
object : MatterySlot(it, index) {
val storageSlots: ImmutableList<MatteryMenuSlot> = makeSlots(CombinedContainer(tile?.bottling ?: SlottedContainer.simple(3), tile?.unbottling ?: SlottedContainer.simple(3))) { it, index ->
object : MatteryMenuSlot(it, index) {
override fun mayPlace(itemStack: ItemStack): Boolean {
val cap = itemStack.getCapability(MatteryCapability.MATTER_ITEM) ?: return false

View File

@ -4,7 +4,7 @@ import net.minecraft.world.SimpleContainer
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.block.entity.matter.MatterCapacitorBankBlockEntity
import ru.dbotthepony.mc.otm.menu.MatterContainerInputSlot
import ru.dbotthepony.mc.otm.menu.MatterContainerInputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
@ -20,7 +20,7 @@ class MatterCapacitorBankMenu @JvmOverloads constructor(
val totalMatterGauge = LevelGaugeWidget(this)
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
val storageSlots: List<MatterContainerInputSlot>
val storageSlots: List<MatterContainerInputMenuSlot>
init {
if (tile != null) {
@ -34,7 +34,7 @@ class MatterCapacitorBankMenu @JvmOverloads constructor(
val container = tile?.container ?: SimpleContainer(2 * 6)
storageSlots = immutableList(2 * 6) {
addStorageSlot(MatterContainerInputSlot(container, it))
addStorageSlot(MatterContainerInputMenuSlot(container, it))
}
addInventorySlots()

View File

@ -8,9 +8,9 @@ import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import net.minecraft.world.SimpleContainer
import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.matter.MatterManager
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
@ -22,12 +22,12 @@ class MatterDecomposerMenu @JvmOverloads constructor(
inventory: Inventory,
tile: MatterDecomposerBlockEntity? = null
) : MatteryPoweredMenu(MMenus.MATTER_DECOMPOSER, containerID, inventory, tile) {
val input = object : MatterySlot(tile?.inputContainer ?: SimpleContainer(1), 0) {
val input = object : MatteryMenuSlot(tile?.inputContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack) = MatterManager.canDecompose(itemStack)
}
val outputMain: OutputSlot
val outputStacking: OutputSlot
val outputMain: OutputMenuSlot
val outputStacking: OutputMenuSlot
val progressWidget = ProgressGaugeWidget(this, tile)
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
@ -39,8 +39,8 @@ class MatterDecomposerMenu @JvmOverloads constructor(
val container = tile?.outputContainer ?: SimpleContainer(2)
// Выход
outputMain = OutputSlot(container, 0)
outputStacking = OutputSlot(container, 1)
outputMain = OutputMenuSlot(container, 0)
outputStacking = OutputMenuSlot(container, 1)
addStorageSlot(outputMain)
addStorageSlot(outputStacking)

View File

@ -14,9 +14,9 @@ import ru.dbotthepony.mc.otm.container.get
import ru.dbotthepony.mc.otm.container.set
import ru.dbotthepony.mc.otm.core.isNotEmpty
import ru.dbotthepony.mc.otm.item.IQuantumLinked
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.makeSlots
@ -39,12 +39,12 @@ class MatterEntanglerMenu(
val progress = ProgressGaugeWidget(this, tile?.jobEventLoops?.get(0))
val inputs: List<MatterySlot> = makeSlots(tile?.inputs ?: object : MatteryCraftingContainer(3, 3) {
val inputs: List<MatteryMenuSlot> = makeSlots(tile?.inputs ?: object : MatteryCraftingContainer(3, 3) {
override fun getMaxStackSize(): Int {
return 1
}
}) { it, i ->
object : MatterySlot(it, i) {
object : MatteryMenuSlot(it, i) {
override fun mayPlace(itemStack: ItemStack): Boolean {
val list = it.toList()
list[i] = itemStack
@ -59,7 +59,7 @@ class MatterEntanglerMenu(
}
}
val outputs = makeSlots(tile?.output ?: SimpleContainer(1)) { a, b -> OutputSlot(a, b) { tile?.experience?.popExperience(player as ServerPlayer) } }
val outputs = makeSlots(tile?.output ?: SimpleContainer(1)) { a, b -> OutputMenuSlot(a, b) { tile?.experience?.popExperience(player as ServerPlayer) } }
val upgrades = makeUpgradeSlots(3, tile?.upgrades)
val experience = TakeExperienceWidget(this, tile?.experience)
@ -82,15 +82,15 @@ class MatterEntanglerMenu(
}
}
private inner class EntanglingInputSlot(index: Int) : MatterySlot(entangling, index) {
private inner class EntanglingInputMenuSlot(index: Int) : MatteryMenuSlot(entangling, index) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && itemStack.item is IQuantumLinked
}
}
val entanglingA: MatterySlot = EntanglingInputSlot(0)
val entanglingB: MatterySlot = EntanglingInputSlot(1)
val entanglingC: MatterySlot = object : MatterySlot(MatteryContainer(1), 0) {
val entanglingA: MatteryMenuSlot = EntanglingInputMenuSlot(0)
val entanglingB: MatteryMenuSlot = EntanglingInputMenuSlot(1)
val entanglingC: MatteryMenuSlot = object : MatteryMenuSlot(MatteryContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return false
}

View File

@ -5,7 +5,7 @@ import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
@ -20,7 +20,7 @@ class MatterReconstructorMenu(
tile: MatterReconstructorBlockEntity? = null
) : MatteryPoweredMenu(MMenus.ITEM_REPAIER, containerId, inventory, tile) {
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
val slot = object : MatterySlot(tile?.repairContainer ?: SimpleContainer(1), 0) {
val slot = object : MatteryMenuSlot(tile?.repairContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.isRepairable && itemStack.isDamaged && super.mayPlace(itemStack)
}

View File

@ -6,7 +6,7 @@ import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.block.entity.matter.MatterRecyclerBlockEntity
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
@ -20,7 +20,7 @@ class MatterRecyclerMenu @JvmOverloads constructor(
inventory: Inventory,
tile: MatterRecyclerBlockEntity? = null
) : MatteryPoweredMenu(MMenus.MATTER_RECYCLER, containerID, inventory, tile) {
val input = object : MatterySlot(tile?.container ?: SimpleContainer(1), 0) {
val input = object : MatteryMenuSlot(tile?.container ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.item is MatterDustItem && (itemStack.item as MatterDustItem).getMatterValue(itemStack) != null
}

View File

@ -6,12 +6,11 @@ import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
import net.minecraft.world.SimpleContainer
import ru.dbotthepony.mc.otm.container.CombinedContainer
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.core.isNotEmpty
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -27,7 +26,7 @@ class MatterReplicatorMenu @JvmOverloads constructor(
) : MatteryPoweredMenu(MMenus.MATTER_REPLICATOR, p_38852_, inventory, tile) {
val matter = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
val progress = ProgressGaugeWidget(this, tile)
val storageSlots: List<OutputSlot>
val storageSlots: List<OutputMenuSlot>
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
val energyConfig = EnergyConfigPlayerInput(this, tile?.energyConfig)
val profiledEnergy = ProfiledLevelGaugeWidget(this, tile?.energy, energyWidget)
@ -38,7 +37,7 @@ class MatterReplicatorMenu @JvmOverloads constructor(
val container = CombinedContainer(tile?.outputContainer ?: SlottedContainer.simple(3), tile?.dustContainer ?: SlottedContainer.simple(2))
storageSlots = immutableList(5) {
addStorageSlot(OutputSlot(container, it, onTake = {
addStorageSlot(OutputMenuSlot(container, it, onTake = {
if (inventory.player is ServerPlayer && it.isNotEmpty)
TakeItemOutOfReplicatorTrigger.trigger(inventory.player as ServerPlayer, it) }))
}

View File

@ -10,7 +10,7 @@ import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.core.math.Decimal
import ru.dbotthepony.mc.otm.matter.MatterManager
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
@ -22,7 +22,7 @@ class MatterScannerMenu @JvmOverloads constructor(
inventory: Inventory,
tile: MatterScannerBlockEntity? = null
) : MatteryPoweredMenu(MMenus.MATTER_SCANNER, p_38852_, inventory, tile) {
val input: MatterySlot
val input: MatteryMenuSlot
val progress = ProgressGaugeWidget(this, tile)
val patterns = LevelGaugeWidget(this)
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
@ -33,7 +33,7 @@ class MatterScannerMenu @JvmOverloads constructor(
init {
val container = tile?.container ?: SimpleContainer(1)
input = object : MatterySlot(container, 0, 64, 38) {
input = object : MatteryMenuSlot(container, 0, 64, 38) {
override fun mayPlace(itemStack: ItemStack) = MatterManager.canDecompose(itemStack)
}

View File

@ -6,7 +6,7 @@ import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.block.entity.matter.PatternStorageBlockEntity
import ru.dbotthepony.mc.otm.core.math.Decimal
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.PatternSlot
import ru.dbotthepony.mc.otm.menu.PatternMenuSlot
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.registry.game.MMenus
@ -20,7 +20,7 @@ class PatternStorageMenu @JvmOverloads constructor(
val storedGrid = LevelGaugeWidget(this)
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
val storageSlots: List<PatternSlot>
val storageSlots: List<PatternMenuSlot>
init {
if (tile != null) {
@ -34,7 +34,7 @@ class PatternStorageMenu @JvmOverloads constructor(
val patterns = tile?.container ?: SimpleContainer(2 * 4)
storageSlots = immutableList(2 * 4) {
addStorageSlot(PatternSlot(patterns, it))
addStorageSlot(PatternMenuSlot(patterns, it))
}
addInventorySlots()

View File

@ -4,7 +4,7 @@ import net.minecraft.world.SimpleContainer
import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.storage.DriveRackBlockEntity
import ru.dbotthepony.mc.otm.capability.FlowDirection
import ru.dbotthepony.mc.otm.menu.DriveSlot
import ru.dbotthepony.mc.otm.menu.DriveMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
@ -18,7 +18,7 @@ class DriveRackMenu @JvmOverloads constructor(
inventory: Inventory,
tile: DriveRackBlockEntity? = null
) : MatteryPoweredMenu(MMenus.DRIVE_RACK, containerId, inventory, tile) {
val storageSlots = makeSlots(tile?.container ?: SimpleContainer(4), ::DriveSlot)
val storageSlots = makeSlots(tile?.container ?: SimpleContainer(4), ::DriveMenuSlot)
val energyConfig = EnergyConfigPlayerInput(this, tile?.energyConfig)
val profiledEnergy = ProfiledLevelGaugeWidget(this, tile?.energy, energyWidget)
val insertPriority = IntInputWithFeedback(this, tile?.let { it::insertPriority })

View File

@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.core.util.ItemStorageStackSorter
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewProvider
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
@ -36,7 +36,7 @@ class DriveViewerMenu(
) : MatteryPoweredMenu(MMenus.DRIVE_VIEWER, containerID, inventory, tile), INetworkedItemViewProvider {
override val networkedItemView = NetworkedItemView(inventory.player, this, tile == null)
val driveSlot = object : MatterySlot(tile?.container ?: SimpleContainer(1), 0) {
val driveSlot = object : MatteryMenuSlot(tile?.container ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.getCapability(MatteryCapability.CONDENSATION_DRIVE) != null
}

View File

@ -16,7 +16,7 @@ import ru.dbotthepony.mc.otm.core.collect.map
import ru.dbotthepony.mc.otm.core.collect.reduce
import ru.dbotthepony.mc.otm.core.isNotEmpty
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewProvider
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
@ -27,7 +27,7 @@ import ru.dbotthepony.mc.otm.registry.game.MMenus
import ru.dbotthepony.mc.otm.storage.*
import java.util.*
private class ResultSlot(container: Container) : MatterySlot(container, 0) {
private class ResultMenuSlot(container: Container) : MatteryMenuSlot(container, 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return false
}
@ -105,16 +105,16 @@ class ItemMonitorMenu(
}
}
val craftingResult: MatterySlot
val craftingSlots: List<MatterySlot>
val craftingResult: MatteryMenuSlot
val craftingSlots: List<MatteryMenuSlot>
init {
if (tile != null) {
networkedItemView.component = tile.poweredView
}
craftingResult = ResultSlot(tile?.craftingResultContainer ?: SimpleContainer(1))
craftingSlots = makeSlots(tile?.craftingGrid ?: SimpleContainer(9), ::MatterySlot)
craftingResult = ResultMenuSlot(tile?.craftingResultContainer ?: SimpleContainer(1))
craftingSlots = makeSlots(tile?.craftingGrid ?: SimpleContainer(9), ::MatteryMenuSlot)
craftingSlots.forEach(this::addSlot)
addSlot(craftingResult)

View File

@ -12,7 +12,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryPlayer
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.config.MachinesConfig
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
import ru.dbotthepony.mc.otm.registry.game.MMenus
@ -90,7 +90,7 @@ class AndroidStationMenu @JvmOverloads constructor(
}
}
private inner class AndroidSlot(container: Container, private val condition: (ItemStack) -> Boolean) : MatterySlot(container, 0) {
private inner class AndroidMenuSlot(container: Container, private val condition: (ItemStack) -> Boolean) : MatteryMenuSlot(container, 0) {
override fun mayPickup(player: Player): Boolean {
if (tile is AndroidStationBlockEntity) {
return super.mayPickup(player) && tile.energy.batteryLevel >= MachinesConfig.AndroidStation.ENERGY_PER_OPERATION
@ -108,7 +108,7 @@ class AndroidStationMenu @JvmOverloads constructor(
}
}
val androidBattery: MatterySlot = AndroidSlot(container { it.androidEnergy::item }) {
val androidBattery: MatteryMenuSlot = AndroidMenuSlot(container { it.androidEnergy::item }) {
it.getCapability(Capabilities.EnergyStorage.ITEM) != null
}

View File

@ -6,9 +6,9 @@ import ru.dbotthepony.mc.otm.block.entity.tech.BatteryBankBlockEntity
import net.minecraft.world.SimpleContainer
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.menu.BatterySlot
import ru.dbotthepony.mc.otm.menu.BatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -21,7 +21,7 @@ class BatteryBankMenu(
tile: BatteryBankBlockEntity? = null,
) : MatteryMenu(MMenus.BATTERY_BANK, p_38852_, inventory, tile) {
val powerLevel = ProfiledLevelGaugeWidget(this, tile?.energyConfig?.energy)
val storageSlots: List<MatterySlot>
val storageSlots: List<MatteryMenuSlot>
val redstone = EnumInputWithFeedback(this, RedstoneSetting::class.java)
val energyConfig = EnergyConfigPlayerInput(this, allowPull = false, allowPush = true)
val itemConfig = ItemConfigPlayerInput(this, allowPull = false, allowPush = false)
@ -36,7 +36,7 @@ class BatteryBankMenu(
val container: Container = tile?.container ?: SimpleContainer(BatteryBankBlockEntity.CAPACITY)
storageSlots = immutableList(BatteryBankBlockEntity.CAPACITY) {
addStorageSlot(BatterySlot(container, it))
addStorageSlot(BatteryMenuSlot(container, it))
}
addInventorySlots()

View File

@ -9,7 +9,7 @@ import ru.dbotthepony.kommons.util.setValue
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.ChemicalGeneratorBlockEntity
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -30,19 +30,19 @@ class ChemicalGeneratorMenu @JvmOverloads constructor(id: Int, inv: Inventory, t
}
}
val fuelSlot = object : MatterySlot(tile?.fuelContainer ?: SimpleContainer(1), 0) {
val fuelSlot = object : MatteryMenuSlot(tile?.fuelContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.getBurnTime(null) > 0
}
}
val residueSlot = object : MatterySlot(tile?.residueContainer ?: SimpleContainer(1), 0) {
val residueSlot = object : MatteryMenuSlot(tile?.residueContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return false
}
}
val batterySlot = object : MatterySlot(tile?.batteryContainer ?: SimpleContainer(1), 0) {
val batterySlot = object : MatteryMenuSlot(tile?.batteryContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.getCapability(Capabilities.EnergyStorage.ITEM)?.canReceive() ?: false
}

View File

@ -5,7 +5,7 @@ import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.CobblerBlockEntity
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -17,7 +17,7 @@ class CobblerMenu @JvmOverloads constructor(
inventory: Inventory,
tile: CobblerBlockEntity? = null
) : MatteryMenu(MMenus.COBBLESTONE_GENERATOR, p_38852_, inventory, tile) {
val storageSlots = (tile?.container ?: SimpleContainer(CobblerBlockEntity.CONTAINER_SIZE)).let { c -> immutableList(c.containerSize) { addStorageSlot(OutputSlot(c, it)) } }
val storageSlots = (tile?.container ?: SimpleContainer(CobblerBlockEntity.CONTAINER_SIZE)).let { c -> immutableList(c.containerSize) { addStorageSlot(OutputMenuSlot(c, it)) } }
val redstone = EnumInputWithFeedback<RedstoneSetting>(this)
val itemConfig = ItemConfigPlayerInput(this)

View File

@ -6,7 +6,7 @@ import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.EnergyHatchBlockEntity
import ru.dbotthepony.mc.otm.capability.FlowDirection
import ru.dbotthepony.mc.otm.menu.EnergyContainerInputSlot
import ru.dbotthepony.mc.otm.menu.EnergyContainerInputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.makeSlots
@ -22,7 +22,7 @@ class EnergyHatchMenu(
val container: Container = tile?.container ?: SimpleContainer(EnergyHatchBlockEntity.CAPACITY)
val inputSlots = makeSlots(container) { a, b ->
EnergyContainerInputSlot(a, b, direction = FlowDirection.input(isInput))
EnergyContainerInputMenuSlot(a, b, direction = FlowDirection.input(isInput))
}
val gauge = ProfiledLevelGaugeWidget(this, tile?.energy)

View File

@ -7,7 +7,7 @@ import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.EnergyServoBlockEntity
import ru.dbotthepony.mc.otm.capability.energy
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -19,13 +19,13 @@ class EnergyServoMenu @JvmOverloads constructor(
inventory: Inventory,
tile: EnergyServoBlockEntity? = null
) : MatteryMenu(MMenus.ENERGY_SERVO, p_38852_, inventory, tile) {
val dischargeSlot = object : MatterySlot(tile?.discharge ?: SimpleContainer(1), 0) {
val dischargeSlot = object : MatteryMenuSlot(tile?.discharge ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && (itemStack.energy?.canExtract() ?: false)
}
}
val chargeSlot = object : MatterySlot(tile?.charge ?: SimpleContainer(1), 0) {
val chargeSlot = object : MatteryMenuSlot(tile?.charge ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(itemStack) && (itemStack.energy?.canReceive() ?: false)
}

View File

@ -13,7 +13,7 @@ import ru.dbotthepony.mc.otm.core.util.getTotalXpRequiredForLevel
import ru.dbotthepony.mc.otm.item.consumables.EssenceCapsuleItem
import ru.dbotthepony.mc.otm.item.EssenceServoItem
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -31,19 +31,19 @@ class EssenceStorageMenu(
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
val fluidConfig = FluidConfigPlayerInput(this, tile?.fluidConfig)
val capsuleSlot = object : MatterySlot(tile?.capsuleContainer ?: SimpleContainer(1), 0) {
val capsuleSlot = object : MatteryMenuSlot(tile?.capsuleContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.item is EssenceCapsuleItem && super.mayPlace(itemStack)
}
}
val servoSlot = object : MatterySlot(tile?.servoContainer ?: SimpleContainer(1), 0) {
val servoSlot = object : MatteryMenuSlot(tile?.servoContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.item == MItems.ESSENCE_SERVO && super.mayPlace(itemStack)
}
}
val mendingSlot = object : MatterySlot(tile?.mendingContainer ?: SimpleContainer(1), 0) {
val mendingSlot = object : MatteryMenuSlot(tile?.mendingContainer ?: SimpleContainer(1), 0) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return itemStack.isDamaged && EnchantmentHelper.has(itemStack, EnchantmentEffectComponents.REPAIR_WITH_XP)
}

View File

@ -8,7 +8,7 @@ import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.ItemHatchBlockEntity
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.UserFilteredSlot
import ru.dbotthepony.mc.otm.menu.UserFilteredMenuSlot
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.makeSlots
import ru.dbotthepony.mc.otm.registry.game.MMenus
@ -20,8 +20,8 @@ class ItemHatchMenu(
tile: ItemHatchBlockEntity? = null
) : MatteryMenu(if (isInput) MMenus.ITEM_INPUT_HATCH else MMenus.ITEM_OUTPUT_HATCH, containerId, inventory, tile) {
val actualContainer: Container = tile?.container ?: SimpleContainer(ItemHatchBlockEntity.CAPACITY)
val storageSlots: ImmutableList<UserFilteredSlot> = makeSlots(actualContainer) { a, b ->
object : UserFilteredSlot(a, b) {
val storageSlots: ImmutableList<UserFilteredMenuSlot> = makeSlots(actualContainer) { a, b ->
object : UserFilteredMenuSlot(a, b) {
override fun mayPlace(itemStack: ItemStack): Boolean {
return isInput && super.mayPlace(itemStack)
}

View File

@ -6,7 +6,7 @@ import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
import ru.dbotthepony.mc.otm.block.entity.tech.MatterHatchBlockEntity
import ru.dbotthepony.mc.otm.capability.FlowDirection
import ru.dbotthepony.mc.otm.menu.MatterContainerInputSlot
import ru.dbotthepony.mc.otm.menu.MatterContainerInputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
import ru.dbotthepony.mc.otm.menu.makeSlots
@ -22,7 +22,7 @@ class MatterHatchMenu(
val container: Container = tile?.container ?: SimpleContainer(MatterHatchBlockEntity.CAPACITY)
val inputSlots = makeSlots(container) { a, b ->
MatterContainerInputSlot(a, b, direction = FlowDirection.input(isInput))
MatterContainerInputMenuSlot(a, b, direction = FlowDirection.input(isInput))
}
val gauge = ProfiledLevelGaugeWidget(this, tile?.matter)

View File

@ -8,8 +8,8 @@ import net.minecraft.world.inventory.MenuType
import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity
import ru.dbotthepony.mc.otm.compat.jei.PlatePressRecipeCategory
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -28,8 +28,8 @@ class PlatePressMenu(
tile: PlatePressBlockEntity? = null,
isTwin: Boolean
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
val inputSlots = makeSlots(tile?.inputContainer ?: SimpleContainer(if (isTwin) 2 else 1), ::MatterySlot)
val outputSlots = makeSlots(tile?.outputContainer ?: SimpleContainer(if (isTwin) 2 else 1)) { a, b -> OutputSlot(a, b) { tile?.experience?.popExperience(player as ServerPlayer) } }
val inputSlots = makeSlots(tile?.inputContainer ?: SimpleContainer(if (isTwin) 2 else 1), ::MatteryMenuSlot)
val outputSlots = makeSlots(tile?.outputContainer ?: SimpleContainer(if (isTwin) 2 else 1)) { a, b -> OutputMenuSlot(a, b) { tile?.experience?.popExperience(player as ServerPlayer) } }
val gauges = immutableList(if (isTwin) 2 else 1) { ProgressGaugeWidget(this, tile?.jobEventLoops?.get(it)) }
override val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig, allowPush = true)

View File

@ -12,8 +12,8 @@ import ru.dbotthepony.mc.otm.block.entity.tech.PoweredFurnaceBlockEntity
import ru.dbotthepony.mc.otm.block.entity.tech.PoweredSmokerBlockEntity
import ru.dbotthepony.mc.otm.compat.jei.MicrowaveRecipeCategory
import ru.dbotthepony.mc.otm.core.immutableList
import ru.dbotthepony.mc.otm.menu.OutputSlot
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.OutputMenuSlot
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
@ -31,8 +31,8 @@ class PoweredFurnaceMenu(
inventory: Inventory,
tile: AbstractPoweredFurnaceBlockEntity<*, *>? = null
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
val inputSlots = makeSlots(tile?.inputs ?: SimpleContainer(2), ::MatterySlot)
val outputSlots = makeSlots(tile?.outputs ?: SimpleContainer(2)) { c, s -> OutputSlot(c, s) { tile?.experience?.popExperience(player as ServerPlayer) } }
val inputSlots = makeSlots(tile?.inputs ?: SimpleContainer(2), ::MatteryMenuSlot)
val outputSlots = makeSlots(tile?.outputs ?: SimpleContainer(2)) { c, s -> OutputMenuSlot(c, s) { tile?.experience?.popExperience(player as ServerPlayer) } }
val progressGauge = immutableList(2) { ProgressGaugeWidget(this, tile?.jobEventLoops?.get(it)) }
override val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig, allowPush = true)