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.network.chat.Component
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.inventory.Slot
|
import net.minecraft.world.inventory.Slot
|
||||||
import net.minecraft.world.item.Item
|
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.neoforged.neoforge.client.event.ContainerScreenEvent
|
import net.neoforged.neoforge.client.event.ContainerScreenEvent
|
||||||
import net.neoforged.neoforge.common.NeoForge
|
import net.neoforged.neoforge.common.NeoForge
|
||||||
import org.lwjgl.opengl.GL11
|
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.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||||
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
|
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.component2
|
||||||
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
|
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.LevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -407,7 +404,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
|||||||
matter: LevelGaugeWidget? = null,
|
matter: LevelGaugeWidget? = null,
|
||||||
profiledMatter: ProfiledLevelGaugeWidget<*>? = null,
|
profiledMatter: ProfiledLevelGaugeWidget<*>? = null,
|
||||||
patterns: LevelGaugeWidget? = null,
|
patterns: LevelGaugeWidget? = null,
|
||||||
batterySlot: MatterySlot? = null,
|
batterySlot: MatteryMenuSlot? = null,
|
||||||
) {
|
) {
|
||||||
var bars = 0
|
var bars = 0
|
||||||
if (energy != null) bars++
|
if (energy != null) bars++
|
||||||
|
@ -60,7 +60,7 @@ open class PlayerEquipmentPanel<S : MatteryScreen<*>>(
|
|||||||
parent: EditablePanel<*>?,
|
parent: EditablePanel<*>?,
|
||||||
x: Float = 0f,
|
x: Float = 0f,
|
||||||
y: 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) {
|
) : EditablePanel<S>(screen, parent, x, y, height = HEIGHT, width = WIDTH) {
|
||||||
val armorSlotsStrip = EditablePanel(screen, this, width = AbstractSlotPanel.SIZE)
|
val armorSlotsStrip = EditablePanel(screen, this, width = AbstractSlotPanel.SIZE)
|
||||||
val entityPanel = EntityRendererPanel(screen, this, minecraft.player!!)
|
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 com.mojang.blaze3d.platform.InputConstants
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.client.gui.screens.Screen
|
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import ru.dbotthepony.kommons.math.RGBAColor
|
|
||||||
import ru.dbotthepony.kommons.util.Delegate
|
import ru.dbotthepony.kommons.util.Delegate
|
||||||
import ru.dbotthepony.kommons.util.value
|
import ru.dbotthepony.kommons.util.value
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity
|
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.IGUIRenderable
|
||||||
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
|
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
|
||||||
import ru.dbotthepony.mc.otm.client.render.ItemStackIcon
|
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.render.Widgets18
|
||||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.Dock
|
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.ItemStackSorter
|
||||||
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
|
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.UpgradeSlots
|
||||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
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)
|
val grid = GridPanel(screen, frame, columns = columns, rows = rows)
|
||||||
|
|
||||||
for (slot in upgrades.slots) {
|
for (slot in upgrades.slots) {
|
||||||
object : SlotPanel<S, MatterySlot>(screen, grid, slot) {
|
object : SlotPanel<S, MatteryMenuSlot>(screen, grid, slot) {
|
||||||
override val cursorType: CursorType
|
override val cursorType: CursorType
|
||||||
get() = if (upgrades.areLocked.get()) CursorType.NOT_ALLOWED else super.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.client.screen.panels.EditablePanel
|
||||||
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
|
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.util.containerSlot
|
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,
|
screen: S,
|
||||||
parent: EditablePanel<*>?,
|
parent: EditablePanel<*>?,
|
||||||
slot: T,
|
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.client.gui.GuiCosArmorInventory
|
||||||
import lain.mods.cos.impl.network.payload.PayloadSetSkinArmor
|
import lain.mods.cos.impl.network.payload.PayloadSetSkinArmor
|
||||||
import net.minecraft.client.gui.screens.Screen
|
import net.minecraft.client.gui.screens.Screen
|
||||||
import net.minecraft.network.chat.Component
|
|
||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.world.Container
|
import net.minecraft.world.Container
|
||||||
@ -20,9 +19,6 @@ import net.neoforged.neoforge.network.PacketDistributor
|
|||||||
import ru.dbotthepony.kommons.math.RGBAColor
|
import ru.dbotthepony.kommons.math.RGBAColor
|
||||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
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.render.sprites.sprite
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel
|
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.container.util.iterator
|
||||||
import ru.dbotthepony.mc.otm.core.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.core.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.core.collect.emptyIterator
|
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
|
import java.util.stream.Stream
|
||||||
|
|
||||||
val isCosmeticArmorLoaded by lazy {
|
val isCosmeticArmorLoaded by lazy {
|
||||||
@ -47,7 +43,7 @@ val Player.cosmeticArmorSlots: Map<EquipmentSlot, Slot>? get() {
|
|||||||
return cosmeticArmorSlotsImpl
|
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.FEET -> 0
|
||||||
EquipmentSlot.LEGS -> 1
|
EquipmentSlot.LEGS -> 1
|
||||||
EquipmentSlot.CHEST -> 2
|
EquipmentSlot.CHEST -> 2
|
||||||
@ -127,10 +123,10 @@ private val Player.cosmeticArmorSlotsImpl: Map<EquipmentSlot, Slot>? get() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return mapOf(
|
return mapOf(
|
||||||
EquipmentSlot.HEAD to CosmeticSlot(container, EquipmentSlot.HEAD, this),
|
EquipmentSlot.HEAD to CosmeticMenuSlot(container, EquipmentSlot.HEAD, this),
|
||||||
EquipmentSlot.CHEST to CosmeticSlot(container, EquipmentSlot.CHEST, this),
|
EquipmentSlot.CHEST to CosmeticMenuSlot(container, EquipmentSlot.CHEST, this),
|
||||||
EquipmentSlot.LEGS to CosmeticSlot(container, EquipmentSlot.LEGS, this),
|
EquipmentSlot.LEGS to CosmeticMenuSlot(container, EquipmentSlot.LEGS, this),
|
||||||
EquipmentSlot.FEET to CosmeticSlot(container, EquipmentSlot.FEET, 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.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.MatterySlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
|
private val menuConfigurations = WeakHashMap<AbstractContainerMenu, MenuConfiguration>()
|
||||||
@ -47,9 +47,9 @@ private class MenuConfiguration(
|
|||||||
|
|
||||||
for (i in 0 .. 8) {
|
for (i in 0 .. 8) {
|
||||||
if (matteryPlayer.exopackContainer.containerSize > i + offset) {
|
if (matteryPlayer.exopackContainer.containerSize > i + offset) {
|
||||||
row.add(MatterySlot(matteryPlayer.exopackContainer, i + offset))
|
row.add(MatteryMenuSlot(matteryPlayer.exopackContainer, i + offset))
|
||||||
} else {
|
} 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 {
|
override fun mayPickup(player: Player): Boolean {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import net.neoforged.bus.api.IEventBus
|
|||||||
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
|
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ class MatteryChestMenu(
|
|||||||
inventory: Inventory, val rows: Int, val columns: Int,
|
inventory: Inventory, val rows: Int, val columns: Int,
|
||||||
val container: Container = SimpleContainer(rows * columns)
|
val container: Container = SimpleContainer(rows * columns)
|
||||||
) : MatteryMenu(type, containerId, inventory) {
|
) : MatteryMenu(type, containerId, inventory) {
|
||||||
val chestSlots = makeSlots(container, ::MatterySlot)
|
val chestSlots = makeSlots(container, ::MatteryMenuSlot)
|
||||||
val sort = SortInput(container, playerSortSettings)
|
val sort = SortInput(container, playerSortSettings)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -21,7 +21,7 @@ import ru.dbotthepony.mc.otm.network.ExopackSlotPacket
|
|||||||
|
|
||||||
class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CONTAINER_ID, capability.ply.inventory) {
|
class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CONTAINER_ID, capability.ply.inventory) {
|
||||||
val craftingGrid: CraftingContainer
|
val craftingGrid: CraftingContainer
|
||||||
val craftingSlots: List<MatterySlot>
|
val craftingSlots: List<MatteryMenuSlot>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (capability.isExopackCraftingUpgraded) {
|
if (capability.isExopackCraftingUpgraded) {
|
||||||
@ -30,10 +30,10 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
|
|||||||
craftingGrid = TransientCraftingContainer(this, 2, 2)
|
craftingGrid = TransientCraftingContainer(this, 2, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
val builder = ImmutableList.builder<MatterySlot>()
|
val builder = ImmutableList.builder<MatteryMenuSlot>()
|
||||||
|
|
||||||
for (i in 0 until craftingGrid.containerSize) {
|
for (i in 0 until craftingGrid.containerSize) {
|
||||||
builder.add(MatterySlot(craftingGrid, i))
|
builder.add(MatteryMenuSlot(craftingGrid, i))
|
||||||
}
|
}
|
||||||
|
|
||||||
craftingSlots = builder.build()
|
craftingSlots = builder.build()
|
||||||
@ -91,16 +91,16 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val furnaceInputs: List<MatterySlot> = capability.smelters.map {
|
val furnaceInputs: List<MatteryMenuSlot> = capability.smelters.map {
|
||||||
object : MatterySlot(it.input, 0) {
|
object : MatteryMenuSlot(it.input, 0) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && capability.isExopackSmeltingInstalled
|
return super.mayPlace(itemStack) && capability.isExopackSmeltingInstalled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val furnaceOutputs: List<OutputSlot> = capability.smelters.map {
|
val furnaceOutputs: List<OutputMenuSlot> = capability.smelters.map {
|
||||||
object : OutputSlot(it.output, 0, onTake = { popFurnaceExp() }) {
|
object : OutputMenuSlot(it.output, 0, onTake = { popFurnaceExp() }) {
|
||||||
override fun mayPickup(player: Player): Boolean {
|
override fun mayPickup(player: Player): Boolean {
|
||||||
return super.mayPickup(player) && capability.isExopackSmeltingInstalled
|
return super.mayPickup(player) && capability.isExopackSmeltingInstalled
|
||||||
}
|
}
|
||||||
@ -115,7 +115,7 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
|
|||||||
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
||||||
}
|
}
|
||||||
|
|
||||||
val enderChestSlots: List<MatterySlot>
|
val enderChestSlots: List<MatteryMenuSlot>
|
||||||
val enderChestOpenState = InstantBooleanInput(this)
|
val enderChestOpenState = InstantBooleanInput(this)
|
||||||
val playerEnderSortSettings = IItemStackSortingSettings.inputs(this, capability.enderSortingSettings)
|
val playerEnderSortSettings = IItemStackSortingSettings.inputs(this, capability.enderSortingSettings)
|
||||||
val sortEnderChest: SortInput?
|
val sortEnderChest: SortInput?
|
||||||
@ -123,7 +123,7 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
|
|||||||
init {
|
init {
|
||||||
if (capability.isExopackEnderAccessInstalled) {
|
if (capability.isExopackEnderAccessInstalled) {
|
||||||
enderChestSlots = makeSlots(player.enderChestInventory) { a, b ->
|
enderChestSlots = makeSlots(player.enderChestInventory) { a, b ->
|
||||||
MatterySlot(a, b).also {
|
MatteryMenuSlot(a, b).also {
|
||||||
addStorageSlot(it, condition = enderChestOpenState)
|
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.curiosSlots
|
||||||
import ru.dbotthepony.mc.otm.compat.curios.isCurioSlot
|
import ru.dbotthepony.mc.otm.compat.curios.isCurioSlot
|
||||||
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
|
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.computeSortedIndices
|
||||||
import ru.dbotthepony.mc.otm.container.sortWithIndices
|
import ru.dbotthepony.mc.otm.container.sortWithIndices
|
||||||
import ru.dbotthepony.mc.otm.container.util.containerSlotOrNull
|
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 PlayerSlot<A : Slot, B : Slot>(val functional: A, val cosmetic: B? = null)
|
||||||
|
|
||||||
data class EquipmentSlots(
|
data class EquipmentSlots(
|
||||||
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentSlot, Slot>>,
|
val armorSlots: List<PlayerSlot<MatteryMenu.EquipmentMenuSlot, Slot>>,
|
||||||
val curiosSlots: List<PlayerSlot<Slot, Slot>>
|
val curiosSlots: List<PlayerSlot<Slot, Slot>>
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -87,7 +86,7 @@ abstract class MatteryMenu(
|
|||||||
private val _playerInventorySlots = ArrayList<InventorySlot>()
|
private val _playerInventorySlots = ArrayList<InventorySlot>()
|
||||||
private val _playerHotbarSlots = ArrayList<InventorySlot>()
|
private val _playerHotbarSlots = ArrayList<InventorySlot>()
|
||||||
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
|
private val _playerCombinedInventorySlots = ArrayList<InventorySlot>()
|
||||||
private val _exopackChargeSlots = ArrayList<MatterySlot>()
|
private val _exopackChargeSlots = ArrayList<MatteryMenuSlot>()
|
||||||
|
|
||||||
private val playerInputs = ArrayList<PlayerInput<*>>()
|
private val playerInputs = ArrayList<PlayerInput<*>>()
|
||||||
|
|
||||||
@ -202,7 +201,7 @@ abstract class MatteryMenu(
|
|||||||
*/
|
*/
|
||||||
val playerCombinedInventorySlots: List<InventorySlot> = Collections.unmodifiableList(_playerCombinedInventorySlots)
|
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)
|
val exopackPowerLevel = ProfiledLevelGaugeWidget<ProfiledEnergyStorage<*>>(mSynchronizer, player.matteryPlayer.exopackEnergy)
|
||||||
|
|
||||||
@ -223,7 +222,7 @@ abstract class MatteryMenu(
|
|||||||
protected var inventorySlotIndexStart = 0
|
protected var inventorySlotIndexStart = 0
|
||||||
protected var inventorySlotIndexEnd = 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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return !isInventorySlotLocked(index) && super.mayPlace(itemStack)
|
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)
|
constructor(type: net.minecraft.world.entity.EquipmentSlot) : this(inventory, 34 + type.ordinal, type)
|
||||||
|
|
||||||
override fun setByPlayer(newItem: ItemStack, oldItem: ItemStack) {
|
override fun setByPlayer(newItem: ItemStack, oldItem: ItemStack) {
|
||||||
@ -310,10 +309,10 @@ abstract class MatteryMenu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mattery.hasExopack) {
|
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)
|
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)
|
sortInventoryInput = SortInput(mattery.inventoryAndExopackNoHotbar, playerSortSettings)
|
||||||
@ -385,7 +384,7 @@ abstract class MatteryMenu(
|
|||||||
if (!seenSlots.add(pSlot))
|
if (!seenSlots.add(pSlot))
|
||||||
return pSlot
|
return pSlot
|
||||||
|
|
||||||
if (pSlot is MatterySlot) {
|
if (pSlot is MatteryMenuSlot) {
|
||||||
pSlot.setupNetworkControls(this)
|
pSlot.setupNetworkControls(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,10 +504,10 @@ abstract class MatteryMenu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun canTakeItemForPickAll(itemStack: ItemStack, slot: Slot): Boolean {
|
override fun canTakeItemForPickAll(itemStack: ItemStack, slot: Slot): Boolean {
|
||||||
if (slot is EquipmentSlot)
|
if (slot is EquipmentMenuSlot)
|
||||||
return false
|
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(
|
override fun moveItemStackTo(
|
||||||
@ -643,11 +642,11 @@ abstract class MatteryMenu(
|
|||||||
return moveItemStackToSlots(item, slots, simulate)
|
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 var curiosSlots: ImmutableList<PlayerSlot<Slot, Slot>>? = null
|
||||||
private val equipmentSlots = ArrayList<Slot>()
|
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) {
|
if (armorSlots != null) {
|
||||||
return armorSlots!!
|
return armorSlots!!
|
||||||
}
|
}
|
||||||
@ -655,10 +654,10 @@ abstract class MatteryMenu(
|
|||||||
val cosmetic = player.cosmeticArmorSlots
|
val cosmetic = player.cosmeticArmorSlots
|
||||||
|
|
||||||
return ImmutableList.of(
|
return ImmutableList.of(
|
||||||
PlayerSlot(EquipmentSlot(net.minecraft.world.entity.EquipmentSlot.HEAD), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.HEAD)),
|
PlayerSlot(EquipmentMenuSlot(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(EquipmentMenuSlot(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(EquipmentMenuSlot(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.FEET), cosmetic?.get(net.minecraft.world.entity.EquipmentSlot.FEET)),
|
||||||
).also {
|
).also {
|
||||||
armorSlots = it
|
armorSlots = it
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ abstract class MatteryPoweredMenu protected constructor(
|
|||||||
tile: MatteryPoweredBlockEntity? = null
|
tile: MatteryPoweredBlockEntity? = null
|
||||||
) : MatteryMenu(menuType, containerID, inventory, tile) {
|
) : MatteryMenu(menuType, containerID, inventory, tile) {
|
||||||
val energyWidget = LevelGaugeWidget(this, tile?.energy)
|
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)
|
val redstoneConfig = EnumInputWithFeedback<RedstoneSetting>(this)
|
||||||
|
|
||||||
init {
|
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) }
|
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
|
var ignoreSpectators = true
|
||||||
|
|
||||||
open fun setupNetworkControls(menu: MatteryMenu) {
|
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
|
var filterInput: MatteryMenu.PlayerInput<Item?>? = null
|
||||||
private set
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return false
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && (itemStack.energy?.canExtract() ?: false)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && itemStack.getBurnTime(null) > 0
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && (itemStack.energy?.canReceive() ?: false)
|
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 {
|
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)
|
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,
|
container: Container,
|
||||||
index: Int,
|
index: Int,
|
||||||
x: Int = 0,
|
x: Int = 0,
|
||||||
y: Int = 0,
|
y: Int = 0,
|
||||||
val direction: FlowDirection = FlowDirection.BI_DIRECTIONAL
|
val direction: FlowDirection = FlowDirection.BI_DIRECTIONAL
|
||||||
) : MatterySlot(container, index, x, y) {
|
) : MatteryMenuSlot(container, index, x, y) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
val handler = itemStack.getCapability(MatteryCapability.MATTER_ITEM)
|
val handler = itemStack.getCapability(MatteryCapability.MATTER_ITEM)
|
||||||
return handler != null && super.mayPlace(itemStack) && this.direction.test(handler.matterFlow)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && itemStack.getCapability(MatteryCapability.PATTERN_ITEM) != null
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && itemStack.getCapability(MatteryCapability.CONDENSATION_DRIVE) != null
|
return super.mayPlace(itemStack) && itemStack.getCapability(MatteryCapability.CONDENSATION_DRIVE) != null
|
||||||
}
|
}
|
||||||
@ -255,7 +255,7 @@ fun MatteryMenu.addFilterControls(slots: KMutableProperty0<ItemFilter>?, amount:
|
|||||||
* in classloading exceptions.
|
* in classloading exceptions.
|
||||||
*/
|
*/
|
||||||
data class UpgradeSlots(
|
data class UpgradeSlots(
|
||||||
val slots: List<MatterySlot>,
|
val slots: List<MatteryMenuSlot>,
|
||||||
val allowedTypes: Set<UpgradeType>,
|
val allowedTypes: Set<UpgradeType>,
|
||||||
val openState: Delegate<Boolean>,
|
val openState: Delegate<Boolean>,
|
||||||
val currentStats: IMatteryUpgrade,
|
val currentStats: IMatteryUpgrade,
|
||||||
@ -291,7 +291,7 @@ fun MatteryMenu.makeUpgradeSlots(count: Int, container: UpgradeContainer?): Upgr
|
|||||||
|
|
||||||
return UpgradeSlots(
|
return UpgradeSlots(
|
||||||
slots = immutableList(count) {
|
slots = immutableList(count) {
|
||||||
object : MatterySlot(syncContainer, it) {
|
object : MatteryMenuSlot(syncContainer, it) {
|
||||||
init {
|
init {
|
||||||
mapQuickMoveToInventory(this)
|
mapQuickMoveToInventory(this)
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
package ru.dbotthepony.mc.otm.menu.decorative
|
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.Inventory
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import ru.dbotthepony.mc.otm.block.entity.decorative.CargoCrateBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.decorative.CargoCrateBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.menu.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
||||||
|
|
||||||
@ -17,7 +15,7 @@ class CargoCrateMenu(
|
|||||||
tile: CargoCrateBlockEntity? = null
|
tile: CargoCrateBlockEntity? = null
|
||||||
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory, tile) {
|
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory, tile) {
|
||||||
val actualContainer = tile?.container ?: SlottedContainer.filtered(CargoCrateBlockEntity.CAPACITY)
|
val actualContainer = tile?.container ?: SlottedContainer.filtered(CargoCrateBlockEntity.CAPACITY)
|
||||||
val storageSlots = makeSlots(actualContainer, ::UserFilteredSlot)
|
val storageSlots = makeSlots(actualContainer, ::UserFilteredMenuSlot)
|
||||||
private val trackedPlayerOpen = !inventory.player.isSpectator
|
private val trackedPlayerOpen = !inventory.player.isSpectator
|
||||||
|
|
||||||
val sort = SortInput(actualContainer, playerSortSettings)
|
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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.decorative.FluidTankBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.decorative.FluidTankBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.isNotEmpty
|
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.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.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
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 redstoneConfig = EnumInputWithFeedback<RedstoneSetting>(this)
|
||||||
val fluidConfig = FluidConfigPlayerInput(this, tile?.fluidConfig)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) &&
|
return super.mayPlace(itemStack) &&
|
||||||
(itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.isNotEmpty ?: false)
|
(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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) &&
|
return super.mayPlace(itemStack) &&
|
||||||
(if (itemStack.count <= 1) 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 {
|
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.block.entity.decorative.GrillBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
import ru.dbotthepony.mc.otm.container.MatteryContainer
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
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.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.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.IProgressGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.IProgressGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.TakeExperienceWidget
|
import ru.dbotthepony.mc.otm.menu.widget.TakeExperienceWidget
|
||||||
@ -30,14 +30,14 @@ class GrillMenu(
|
|||||||
override fun getMaxStackSize(): Int {
|
override fun getMaxStackSize(): Int {
|
||||||
return 4
|
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 {
|
override fun getMaxStackSize(): Int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
}) { c, i ->
|
}) { c, i ->
|
||||||
object : MatterySlot(c, i) {
|
object : MatteryMenuSlot(c, i) {
|
||||||
override fun onTake(p_150645_: Player, p_150646_: ItemStack) {
|
override fun onTake(p_150645_: Player, p_150646_: ItemStack) {
|
||||||
super.onTake(p_150645_, p_150646_)
|
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.block.entity.decorative.CargoCrateBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate
|
import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ class MinecartCargoCrateMenu(
|
|||||||
val cart: MinecartCargoCrate? = null
|
val cart: MinecartCargoCrate? = null
|
||||||
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory) {
|
) : MatteryMenu(MMenus.CARGO_CRATE, containerId, inventory) {
|
||||||
val actualContainer: Container = cart ?: SimpleContainer(CargoCrateBlockEntity.CAPACITY)
|
val actualContainer: Container = cart ?: SimpleContainer(CargoCrateBlockEntity.CAPACITY)
|
||||||
val storageSlots = makeSlots(actualContainer, ::MatterySlot)
|
val storageSlots = makeSlots(actualContainer, ::MatteryMenuSlot)
|
||||||
|
|
||||||
private val trackedPlayerOpen = !inventory.player.isSpectator
|
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.collect.maybe
|
||||||
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.BooleanInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
||||||
@ -56,7 +56,7 @@ class PainterMenu(
|
|||||||
selectedRecipe = it
|
selectedRecipe = it
|
||||||
}
|
}
|
||||||
|
|
||||||
val inputSlot = object : MatterySlot(inputContainer, 0) {
|
val inputSlot = object : MatteryMenuSlot(inputContainer, 0) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
if (!itemStack.isEmpty && itemStack.`is`(ItemTags.DYEABLE)) {
|
if (!itemStack.isEmpty && itemStack.`is`(ItemTags.DYEABLE)) {
|
||||||
return super.mayPlace(itemStack)
|
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> {
|
override fun tryRemove(p_150642_: Int, p_150643_: Int, p_150644_: Player): Optional<ItemStack> {
|
||||||
rescan()
|
rescan()
|
||||||
return super.tryRemove(p_150642_, p_150643_, p_150644_)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && ((
|
return super.mayPlace(itemStack) && ((
|
||||||
itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.let {
|
itemStack.getCapability(Capabilities.FluidHandler.ITEM)?.let {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package ru.dbotthepony.mc.otm.menu.matter
|
package ru.dbotthepony.mc.otm.menu.matter
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList
|
import com.google.common.collect.ImmutableList
|
||||||
import net.minecraft.world.SimpleContainer
|
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
|
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.LevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||||
@ -29,8 +28,8 @@ class MatterBottlerMenu(
|
|||||||
val progressWidget = ProgressGaugeWidget(this)
|
val progressWidget = ProgressGaugeWidget(this)
|
||||||
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
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 ->
|
val storageSlots: ImmutableList<MatteryMenuSlot> = makeSlots(CombinedContainer(tile?.bottling ?: SlottedContainer.simple(3), tile?.unbottling ?: SlottedContainer.simple(3))) { it, index ->
|
||||||
object : MatterySlot(it, index) {
|
object : MatteryMenuSlot(it, index) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
val cap = itemStack.getCapability(MatteryCapability.MATTER_ITEM) ?: return false
|
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 net.minecraft.world.entity.player.Inventory
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
import ru.dbotthepony.mc.otm.core.immutableList
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterCapacitorBankBlockEntity
|
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.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||||
@ -20,7 +20,7 @@ class MatterCapacitorBankMenu @JvmOverloads constructor(
|
|||||||
val totalMatterGauge = LevelGaugeWidget(this)
|
val totalMatterGauge = LevelGaugeWidget(this)
|
||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
|
|
||||||
val storageSlots: List<MatterContainerInputSlot>
|
val storageSlots: List<MatterContainerInputMenuSlot>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
@ -34,7 +34,7 @@ class MatterCapacitorBankMenu @JvmOverloads constructor(
|
|||||||
val container = tile?.container ?: SimpleContainer(2 * 6)
|
val container = tile?.container ?: SimpleContainer(2 * 6)
|
||||||
|
|
||||||
storageSlots = immutableList(2 * 6) {
|
storageSlots = immutableList(2 * 6) {
|
||||||
addStorageSlot(MatterContainerInputSlot(container, it))
|
addStorageSlot(MatterContainerInputMenuSlot(container, it))
|
||||||
}
|
}
|
||||||
|
|
||||||
addInventorySlots()
|
addInventorySlots()
|
||||||
|
@ -8,9 +8,9 @@ import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
|||||||
import net.minecraft.world.SimpleContainer
|
import net.minecraft.world.SimpleContainer
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
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.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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||||
@ -22,12 +22,12 @@ class MatterDecomposerMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: MatterDecomposerBlockEntity? = null
|
tile: MatterDecomposerBlockEntity? = null
|
||||||
) : MatteryPoweredMenu(MMenus.MATTER_DECOMPOSER, containerID, inventory, tile) {
|
) : 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)
|
override fun mayPlace(itemStack: ItemStack) = MatterManager.canDecompose(itemStack)
|
||||||
}
|
}
|
||||||
|
|
||||||
val outputMain: OutputSlot
|
val outputMain: OutputMenuSlot
|
||||||
val outputStacking: OutputSlot
|
val outputStacking: OutputMenuSlot
|
||||||
val progressWidget = ProgressGaugeWidget(this, tile)
|
val progressWidget = ProgressGaugeWidget(this, tile)
|
||||||
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
@ -39,8 +39,8 @@ class MatterDecomposerMenu @JvmOverloads constructor(
|
|||||||
val container = tile?.outputContainer ?: SimpleContainer(2)
|
val container = tile?.outputContainer ?: SimpleContainer(2)
|
||||||
|
|
||||||
// Выход
|
// Выход
|
||||||
outputMain = OutputSlot(container, 0)
|
outputMain = OutputMenuSlot(container, 0)
|
||||||
outputStacking = OutputSlot(container, 1)
|
outputStacking = OutputMenuSlot(container, 1)
|
||||||
|
|
||||||
addStorageSlot(outputMain)
|
addStorageSlot(outputMain)
|
||||||
addStorageSlot(outputStacking)
|
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.container.set
|
||||||
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.item.IQuantumLinked
|
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.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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.makeSlots
|
import ru.dbotthepony.mc.otm.menu.makeSlots
|
||||||
@ -39,12 +39,12 @@ class MatterEntanglerMenu(
|
|||||||
|
|
||||||
val progress = ProgressGaugeWidget(this, tile?.jobEventLoops?.get(0))
|
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 {
|
override fun getMaxStackSize(): Int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
}) { it, i ->
|
}) { it, i ->
|
||||||
object : MatterySlot(it, i) {
|
object : MatteryMenuSlot(it, i) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
val list = it.toList()
|
val list = it.toList()
|
||||||
list[i] = itemStack
|
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 upgrades = makeUpgradeSlots(3, tile?.upgrades)
|
||||||
val experience = TakeExperienceWidget(this, tile?.experience)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && itemStack.item is IQuantumLinked
|
return super.mayPlace(itemStack) && itemStack.item is IQuantumLinked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val entanglingA: MatterySlot = EntanglingInputSlot(0)
|
val entanglingA: MatteryMenuSlot = EntanglingInputMenuSlot(0)
|
||||||
val entanglingB: MatterySlot = EntanglingInputSlot(1)
|
val entanglingB: MatteryMenuSlot = EntanglingInputMenuSlot(1)
|
||||||
val entanglingC: MatterySlot = object : MatterySlot(MatteryContainer(1), 0) {
|
val entanglingC: MatteryMenuSlot = object : MatteryMenuSlot(MatteryContainer(1), 0) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import net.minecraft.world.entity.player.Inventory
|
|||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||||
@ -20,7 +20,7 @@ class MatterReconstructorMenu(
|
|||||||
tile: MatterReconstructorBlockEntity? = null
|
tile: MatterReconstructorBlockEntity? = null
|
||||||
) : MatteryPoweredMenu(MMenus.ITEM_REPAIER, containerId, inventory, tile) {
|
) : MatteryPoweredMenu(MMenus.ITEM_REPAIER, containerId, inventory, tile) {
|
||||||
val matterWidget = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.isRepairable && itemStack.isDamaged && super.mayPlace(itemStack)
|
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.block.entity.matter.MatterRecyclerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
import ru.dbotthepony.mc.otm.item.matter.MatterDustItem
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||||
@ -20,7 +20,7 @@ class MatterRecyclerMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: MatterRecyclerBlockEntity? = null
|
tile: MatterRecyclerBlockEntity? = null
|
||||||
) : MatteryPoweredMenu(MMenus.MATTER_RECYCLER, containerID, inventory, tile) {
|
) : 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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.item is MatterDustItem && (itemStack.item as MatterDustItem).getMatterValue(itemStack) != null
|
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.block.entity.matter.MatterReplicatorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
|
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.CombinedContainer
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
import ru.dbotthepony.mc.otm.core.immutableList
|
||||||
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
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.MatteryPoweredMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -27,7 +26,7 @@ class MatterReplicatorMenu @JvmOverloads constructor(
|
|||||||
) : MatteryPoweredMenu(MMenus.MATTER_REPLICATOR, p_38852_, inventory, tile) {
|
) : MatteryPoweredMenu(MMenus.MATTER_REPLICATOR, p_38852_, inventory, tile) {
|
||||||
val matter = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
val matter = ProfiledLevelGaugeWidget(this, tile?.matter, LevelGaugeWidget(this, tile?.matter))
|
||||||
val progress = ProgressGaugeWidget(this, tile)
|
val progress = ProgressGaugeWidget(this, tile)
|
||||||
val storageSlots: List<OutputSlot>
|
val storageSlots: List<OutputMenuSlot>
|
||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
val energyConfig = EnergyConfigPlayerInput(this, tile?.energyConfig)
|
val energyConfig = EnergyConfigPlayerInput(this, tile?.energyConfig)
|
||||||
val profiledEnergy = ProfiledLevelGaugeWidget(this, tile?.energy, energyWidget)
|
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))
|
val container = CombinedContainer(tile?.outputContainer ?: SlottedContainer.simple(3), tile?.dustContainer ?: SlottedContainer.simple(2))
|
||||||
|
|
||||||
storageSlots = immutableList(5) {
|
storageSlots = immutableList(5) {
|
||||||
addStorageSlot(OutputSlot(container, it, onTake = {
|
addStorageSlot(OutputMenuSlot(container, it, onTake = {
|
||||||
if (inventory.player is ServerPlayer && it.isNotEmpty)
|
if (inventory.player is ServerPlayer && it.isNotEmpty)
|
||||||
TakeItemOutOfReplicatorTrigger.trigger(inventory.player as ServerPlayer, it) }))
|
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.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
import ru.dbotthepony.mc.otm.menu.makeUpgradeSlots
|
||||||
@ -22,7 +22,7 @@ class MatterScannerMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: MatterScannerBlockEntity? = null
|
tile: MatterScannerBlockEntity? = null
|
||||||
) : MatteryPoweredMenu(MMenus.MATTER_SCANNER, p_38852_, inventory, tile) {
|
) : MatteryPoweredMenu(MMenus.MATTER_SCANNER, p_38852_, inventory, tile) {
|
||||||
val input: MatterySlot
|
val input: MatteryMenuSlot
|
||||||
val progress = ProgressGaugeWidget(this, tile)
|
val progress = ProgressGaugeWidget(this, tile)
|
||||||
val patterns = LevelGaugeWidget(this)
|
val patterns = LevelGaugeWidget(this)
|
||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
@ -33,7 +33,7 @@ class MatterScannerMenu @JvmOverloads constructor(
|
|||||||
init {
|
init {
|
||||||
val container = tile?.container ?: SimpleContainer(1)
|
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)
|
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.block.entity.matter.PatternStorageBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.input.ItemConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
||||||
@ -20,7 +20,7 @@ class PatternStorageMenu @JvmOverloads constructor(
|
|||||||
val storedGrid = LevelGaugeWidget(this)
|
val storedGrid = LevelGaugeWidget(this)
|
||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
|
|
||||||
val storageSlots: List<PatternSlot>
|
val storageSlots: List<PatternMenuSlot>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
@ -34,7 +34,7 @@ class PatternStorageMenu @JvmOverloads constructor(
|
|||||||
val patterns = tile?.container ?: SimpleContainer(2 * 4)
|
val patterns = tile?.container ?: SimpleContainer(2 * 4)
|
||||||
|
|
||||||
storageSlots = immutableList(2 * 4) {
|
storageSlots = immutableList(2 * 4) {
|
||||||
addStorageSlot(PatternSlot(patterns, it))
|
addStorageSlot(PatternMenuSlot(patterns, it))
|
||||||
}
|
}
|
||||||
|
|
||||||
addInventorySlots()
|
addInventorySlots()
|
||||||
|
@ -4,7 +4,7 @@ import net.minecraft.world.SimpleContainer
|
|||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
import ru.dbotthepony.mc.otm.block.entity.storage.DriveRackBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.storage.DriveRackBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
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.MatteryPoweredMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
@ -18,7 +18,7 @@ class DriveRackMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: DriveRackBlockEntity? = null
|
tile: DriveRackBlockEntity? = null
|
||||||
) : MatteryPoweredMenu(MMenus.DRIVE_RACK, containerId, inventory, tile) {
|
) : 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 energyConfig = EnergyConfigPlayerInput(this, tile?.energyConfig)
|
||||||
val profiledEnergy = ProfiledLevelGaugeWidget(this, tile?.energy, energyWidget)
|
val profiledEnergy = ProfiledLevelGaugeWidget(this, tile?.energy, energyWidget)
|
||||||
val insertPriority = IntInputWithFeedback(this, tile?.let { it::insertPriority })
|
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.core.util.ItemStorageStackSorter
|
||||||
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem
|
import ru.dbotthepony.mc.otm.item.PortableCondensationDriveItem
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.INetworkedItemViewProvider
|
||||||
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
|
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
|
||||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
||||||
@ -36,7 +36,7 @@ class DriveViewerMenu(
|
|||||||
) : MatteryPoweredMenu(MMenus.DRIVE_VIEWER, containerID, inventory, tile), INetworkedItemViewProvider {
|
) : MatteryPoweredMenu(MMenus.DRIVE_VIEWER, containerID, inventory, tile), INetworkedItemViewProvider {
|
||||||
override val networkedItemView = NetworkedItemView(inventory.player, this, tile == null)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.getCapability(MatteryCapability.CONDENSATION_DRIVE) != null
|
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.collect.reduce
|
||||||
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.INetworkedItemViewProvider
|
||||||
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
|
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
|
||||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
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 ru.dbotthepony.mc.otm.storage.*
|
||||||
import java.util.*
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -105,16 +105,16 @@ class ItemMonitorMenu(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val craftingResult: MatterySlot
|
val craftingResult: MatteryMenuSlot
|
||||||
val craftingSlots: List<MatterySlot>
|
val craftingSlots: List<MatteryMenuSlot>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
networkedItemView.component = tile.poweredView
|
networkedItemView.component = tile.poweredView
|
||||||
}
|
}
|
||||||
|
|
||||||
craftingResult = ResultSlot(tile?.craftingResultContainer ?: SimpleContainer(1))
|
craftingResult = ResultMenuSlot(tile?.craftingResultContainer ?: SimpleContainer(1))
|
||||||
craftingSlots = makeSlots(tile?.craftingGrid ?: SimpleContainer(9), ::MatterySlot)
|
craftingSlots = makeSlots(tile?.craftingGrid ?: SimpleContainer(9), ::MatteryMenuSlot)
|
||||||
craftingSlots.forEach(this::addSlot)
|
craftingSlots.forEach(this::addSlot)
|
||||||
addSlot(craftingResult)
|
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.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
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 {
|
override fun mayPickup(player: Player): Boolean {
|
||||||
if (tile is AndroidStationBlockEntity) {
|
if (tile is AndroidStationBlockEntity) {
|
||||||
return super.mayPickup(player) && tile.energy.batteryLevel >= MachinesConfig.AndroidStation.ENERGY_PER_OPERATION
|
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
|
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 net.minecraft.world.SimpleContainer
|
||||||
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
|
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
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.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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -21,7 +21,7 @@ class BatteryBankMenu(
|
|||||||
tile: BatteryBankBlockEntity? = null,
|
tile: BatteryBankBlockEntity? = null,
|
||||||
) : MatteryMenu(MMenus.BATTERY_BANK, p_38852_, inventory, tile) {
|
) : MatteryMenu(MMenus.BATTERY_BANK, p_38852_, inventory, tile) {
|
||||||
val powerLevel = ProfiledLevelGaugeWidget(this, tile?.energyConfig?.energy)
|
val powerLevel = ProfiledLevelGaugeWidget(this, tile?.energyConfig?.energy)
|
||||||
val storageSlots: List<MatterySlot>
|
val storageSlots: List<MatteryMenuSlot>
|
||||||
val redstone = EnumInputWithFeedback(this, RedstoneSetting::class.java)
|
val redstone = EnumInputWithFeedback(this, RedstoneSetting::class.java)
|
||||||
val energyConfig = EnergyConfigPlayerInput(this, allowPull = false, allowPush = true)
|
val energyConfig = EnergyConfigPlayerInput(this, allowPull = false, allowPush = true)
|
||||||
val itemConfig = ItemConfigPlayerInput(this, allowPull = false, allowPush = false)
|
val itemConfig = ItemConfigPlayerInput(this, allowPull = false, allowPush = false)
|
||||||
@ -36,7 +36,7 @@ class BatteryBankMenu(
|
|||||||
val container: Container = tile?.container ?: SimpleContainer(BatteryBankBlockEntity.CAPACITY)
|
val container: Container = tile?.container ?: SimpleContainer(BatteryBankBlockEntity.CAPACITY)
|
||||||
|
|
||||||
storageSlots = immutableList(BatteryBankBlockEntity.CAPACITY) {
|
storageSlots = immutableList(BatteryBankBlockEntity.CAPACITY) {
|
||||||
addStorageSlot(BatterySlot(container, it))
|
addStorageSlot(BatteryMenuSlot(container, it))
|
||||||
}
|
}
|
||||||
|
|
||||||
addInventorySlots()
|
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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.ChemicalGeneratorBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.ChemicalGeneratorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.getBurnTime(null) > 0
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return false
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.getCapability(Capabilities.EnergyStorage.ITEM)?.canReceive() ?: false
|
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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.CobblerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.CobblerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
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.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -17,7 +17,7 @@ class CobblerMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: CobblerBlockEntity? = null
|
tile: CobblerBlockEntity? = null
|
||||||
) : MatteryMenu(MMenus.COBBLESTONE_GENERATOR, p_38852_, inventory, tile) {
|
) : 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 redstone = EnumInputWithFeedback<RedstoneSetting>(this)
|
||||||
val itemConfig = ItemConfigPlayerInput(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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.EnergyHatchBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.EnergyHatchBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
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.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.makeSlots
|
import ru.dbotthepony.mc.otm.menu.makeSlots
|
||||||
@ -22,7 +22,7 @@ class EnergyHatchMenu(
|
|||||||
val container: Container = tile?.container ?: SimpleContainer(EnergyHatchBlockEntity.CAPACITY)
|
val container: Container = tile?.container ?: SimpleContainer(EnergyHatchBlockEntity.CAPACITY)
|
||||||
|
|
||||||
val inputSlots = makeSlots(container) { a, b ->
|
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)
|
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.block.entity.tech.EnergyServoBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.energy
|
import ru.dbotthepony.mc.otm.capability.energy
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -19,13 +19,13 @@ class EnergyServoMenu @JvmOverloads constructor(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: EnergyServoBlockEntity? = null
|
tile: EnergyServoBlockEntity? = null
|
||||||
) : MatteryMenu(MMenus.ENERGY_SERVO, p_38852_, inventory, tile) {
|
) : 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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && (itemStack.energy?.canExtract() ?: false)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return super.mayPlace(itemStack) && (itemStack.energy?.canReceive() ?: false)
|
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.consumables.EssenceCapsuleItem
|
||||||
import ru.dbotthepony.mc.otm.item.EssenceServoItem
|
import ru.dbotthepony.mc.otm.item.EssenceServoItem
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -31,19 +31,19 @@ class EssenceStorageMenu(
|
|||||||
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig)
|
||||||
val fluidConfig = FluidConfigPlayerInput(this, tile?.fluidConfig)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.item is EssenceCapsuleItem && super.mayPlace(itemStack)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.item == MItems.ESSENCE_SERVO && super.mayPlace(itemStack)
|
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 {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return itemStack.isDamaged && EnchantmentHelper.has(itemStack, EnchantmentEffectComponents.REPAIR_WITH_XP)
|
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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.ItemHatchBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.ItemHatchBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
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.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.makeSlots
|
import ru.dbotthepony.mc.otm.menu.makeSlots
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
import ru.dbotthepony.mc.otm.registry.game.MMenus
|
||||||
@ -20,8 +20,8 @@ class ItemHatchMenu(
|
|||||||
tile: ItemHatchBlockEntity? = null
|
tile: ItemHatchBlockEntity? = null
|
||||||
) : MatteryMenu(if (isInput) MMenus.ITEM_INPUT_HATCH else MMenus.ITEM_OUTPUT_HATCH, containerId, inventory, tile) {
|
) : MatteryMenu(if (isInput) MMenus.ITEM_INPUT_HATCH else MMenus.ITEM_OUTPUT_HATCH, containerId, inventory, tile) {
|
||||||
val actualContainer: Container = tile?.container ?: SimpleContainer(ItemHatchBlockEntity.CAPACITY)
|
val actualContainer: Container = tile?.container ?: SimpleContainer(ItemHatchBlockEntity.CAPACITY)
|
||||||
val storageSlots: ImmutableList<UserFilteredSlot> = makeSlots(actualContainer) { a, b ->
|
val storageSlots: ImmutableList<UserFilteredMenuSlot> = makeSlots(actualContainer) { a, b ->
|
||||||
object : UserFilteredSlot(a, b) {
|
object : UserFilteredMenuSlot(a, b) {
|
||||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||||
return isInput && super.mayPlace(itemStack)
|
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.RedstoneSetting
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.MatterHatchBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.MatterHatchBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
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.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.makeSlots
|
import ru.dbotthepony.mc.otm.menu.makeSlots
|
||||||
@ -22,7 +22,7 @@ class MatterHatchMenu(
|
|||||||
val container: Container = tile?.container ?: SimpleContainer(MatterHatchBlockEntity.CAPACITY)
|
val container: Container = tile?.container ?: SimpleContainer(MatterHatchBlockEntity.CAPACITY)
|
||||||
|
|
||||||
val inputSlots = makeSlots(container) { a, b ->
|
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)
|
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.block.entity.tech.PlatePressBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.compat.jei.PlatePressRecipeCategory
|
import ru.dbotthepony.mc.otm.compat.jei.PlatePressRecipeCategory
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
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.MatterySlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -28,8 +28,8 @@ class PlatePressMenu(
|
|||||||
tile: PlatePressBlockEntity? = null,
|
tile: PlatePressBlockEntity? = null,
|
||||||
isTwin: Boolean
|
isTwin: Boolean
|
||||||
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
|
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
|
||||||
val inputSlots = makeSlots(tile?.inputContainer ?: SimpleContainer(if (isTwin) 2 else 1), ::MatterySlot)
|
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 -> OutputSlot(a, b) { tile?.experience?.popExperience(player as ServerPlayer) } }
|
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)) }
|
val gauges = immutableList(if (isTwin) 2 else 1) { ProgressGaugeWidget(this, tile?.jobEventLoops?.get(it)) }
|
||||||
|
|
||||||
override val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig, allowPush = true)
|
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.block.entity.tech.PoweredSmokerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.compat.jei.MicrowaveRecipeCategory
|
import ru.dbotthepony.mc.otm.compat.jei.MicrowaveRecipeCategory
|
||||||
import ru.dbotthepony.mc.otm.core.immutableList
|
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.MatterySlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
||||||
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.EnergyConfigPlayerInput
|
||||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||||
@ -31,8 +31,8 @@ class PoweredFurnaceMenu(
|
|||||||
inventory: Inventory,
|
inventory: Inventory,
|
||||||
tile: AbstractPoweredFurnaceBlockEntity<*, *>? = null
|
tile: AbstractPoweredFurnaceBlockEntity<*, *>? = null
|
||||||
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
|
) : AbstractProcessingMachineMenu(type, containerID, inventory, tile) {
|
||||||
val inputSlots = makeSlots(tile?.inputs ?: SimpleContainer(2), ::MatterySlot)
|
val inputSlots = makeSlots(tile?.inputs ?: SimpleContainer(2), ::MatteryMenuSlot)
|
||||||
val outputSlots = makeSlots(tile?.outputs ?: SimpleContainer(2)) { c, s -> OutputSlot(c, s) { tile?.experience?.popExperience(player as ServerPlayer) } }
|
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)) }
|
val progressGauge = immutableList(2) { ProgressGaugeWidget(this, tile?.jobEventLoops?.get(it)) }
|
||||||
|
|
||||||
override val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig, allowPush = true)
|
override val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig, allowPush = true)
|
||||||
|
Loading…
Reference in New Issue
Block a user