Rename "MatteryMenu" to "MatteryMenuSlot", along with all other slot classes to include "menu" in their name
This commit is contained in:
parent
f79b49d422
commit
1702f95370
@ -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++
|
||||
|
@ -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!!)
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
// сначала слот на заполнение из бака
|
||||
|
@ -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_)
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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) }))
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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 })
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user