Move SortInput to upper level
This commit is contained in:
parent
cf32fd9d2a
commit
d5a9632c97
@ -35,8 +35,8 @@ import ru.dbotthepony.mc.otm.core.immutableList
|
|||||||
import ru.dbotthepony.mc.otm.core.math.RelativeSide
|
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.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
import ru.dbotthepony.mc.otm.menu.SortInput
|
||||||
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
|
||||||
@ -449,7 +449,7 @@ class DeviceControls<out S : MatteryScreen<*>>(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sortingButtons(input: MatteryMenu.SortInput, unfoldableSettings: Boolean = true) {
|
fun sortingButtons(input: SortInput, unfoldableSettings: Boolean = true) {
|
||||||
object : ButtonPanel<S>(screen, this@DeviceControls, width = 18f, height = 18f) {
|
object : ButtonPanel<S>(screen, this@DeviceControls, width = 18f, height = 18f) {
|
||||||
var buttons: List<EditablePanel<*>>? = null
|
var buttons: List<EditablePanel<*>>? = null
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import net.minecraft.world.entity.player.Player
|
|||||||
import net.minecraft.world.inventory.MenuType
|
import net.minecraft.world.inventory.MenuType
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
import ru.dbotthepony.mc.otm.menu.SortInput
|
||||||
|
|
||||||
abstract class AbstractVanillaChestMenu(
|
abstract class AbstractVanillaChestMenu(
|
||||||
type: MenuType<*>,
|
type: MenuType<*>,
|
||||||
@ -17,7 +18,7 @@ abstract class AbstractVanillaChestMenu(
|
|||||||
abstract val columns: Int
|
abstract val columns: Int
|
||||||
|
|
||||||
abstract val containerSlots: List<MatteryMenuSlot>
|
abstract val containerSlots: List<MatteryMenuSlot>
|
||||||
val sort = SortInput(container, playerSortSettings)
|
val sort = SortInput(this, container, playerSortSettings)
|
||||||
|
|
||||||
override fun stillValid(player: Player): Boolean {
|
override fun stillValid(player: Player): Boolean {
|
||||||
return container.stillValid(player)
|
return container.stillValid(player)
|
||||||
|
@ -135,7 +135,7 @@ class ExopackInventoryMenu(val capability: MatteryPlayer) : MatteryMenu(null, CO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sortEnderChest = SortInput(player.enderChestInventory, playerEnderSortSettings)
|
sortEnderChest = SortInput(this, player.enderChestInventory, playerEnderSortSettings)
|
||||||
} else {
|
} else {
|
||||||
enderChestSlots = listOf()
|
enderChestSlots = listOf()
|
||||||
sortEnderChest = null
|
sortEnderChest = null
|
||||||
|
@ -3,8 +3,6 @@ package ru.dbotthepony.mc.otm.menu
|
|||||||
import com.google.common.collect.ImmutableList
|
import com.google.common.collect.ImmutableList
|
||||||
import com.mojang.datafixers.util.Pair
|
import com.mojang.datafixers.util.Pair
|
||||||
import it.unimi.dsi.fastutil.bytes.ByteArrayList
|
import it.unimi.dsi.fastutil.bytes.ByteArrayList
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntCollection
|
|
||||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectFunction
|
import it.unimi.dsi.fastutil.objects.Reference2ObjectFunction
|
||||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||||
import it.unimi.dsi.fastutil.objects.ReferenceArrayList
|
import it.unimi.dsi.fastutil.objects.ReferenceArrayList
|
||||||
@ -15,7 +13,6 @@ import net.minecraft.network.protocol.common.custom.CustomPacketPayload
|
|||||||
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.util.RandomSource
|
import net.minecraft.util.RandomSource
|
||||||
import net.minecraft.world.Container
|
|
||||||
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 net.minecraft.world.inventory.AbstractContainerMenu
|
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||||
@ -41,8 +38,6 @@ 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.IEnhancedContainer
|
import ru.dbotthepony.mc.otm.container.IEnhancedContainer
|
||||||
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
|
import ru.dbotthepony.mc.otm.container.IFilteredContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.computeSortedIndices
|
|
||||||
import ru.dbotthepony.mc.otm.container.sortWithIndices
|
|
||||||
import ru.dbotthepony.mc.otm.container.util.containerSlotOrNull
|
import ru.dbotthepony.mc.otm.container.util.containerSlotOrNull
|
||||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.core.collect.ConditionalSet
|
import ru.dbotthepony.mc.otm.core.collect.ConditionalSet
|
||||||
@ -165,16 +160,6 @@ abstract class MatteryMenu(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class SortInput(val container: Container, val settings: IItemStackSortingSettings) {
|
|
||||||
val input = PlayerInput(MatteryStreamCodec.Collection<RegistryFriendlyByteBuf, Int, IntCollection>(StreamCodecs.VAR_INT, ::IntArrayList)) {
|
|
||||||
container.sortWithIndices(it)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun clientInput() {
|
|
||||||
input.accept(container.computeSortedIndices(settings.actualComparator))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun oneWayInput(allowSpectators: Boolean = false, handler: () -> Unit): PlayerInput<Nothing?> {
|
fun oneWayInput(allowSpectators: Boolean = false, handler: () -> Unit): PlayerInput<Nothing?> {
|
||||||
return PlayerInput(StreamCodecs.NOTHING, allowSpectators) {
|
return PlayerInput(StreamCodecs.NOTHING, allowSpectators) {
|
||||||
handler.invoke()
|
handler.invoke()
|
||||||
@ -316,7 +301,7 @@ abstract class MatteryMenu(
|
|||||||
_exopackChargeSlots.add(BatteryMenuSlot(mattery.exopackChargeSlots, i, direction = FlowDirection.INPUT).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
|
_exopackChargeSlots.add(BatteryMenuSlot(mattery.exopackChargeSlots, i, direction = FlowDirection.INPUT).also { mapQuickMoveToExternal(it); mapQuickMoveToInventory(it); addSlot(it) })
|
||||||
}
|
}
|
||||||
|
|
||||||
sortInventoryInput = SortInput(mattery.inventoryAndExopackNoHotbar, playerSortSettings)
|
sortInventoryInput = SortInput(this, mattery.inventoryAndExopackNoHotbar, playerSortSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var broadcastOnce = false
|
private var broadcastOnce = false
|
||||||
|
20
src/main/kotlin/ru/dbotthepony/mc/otm/menu/SortInput.kt
Normal file
20
src/main/kotlin/ru/dbotthepony/mc/otm/menu/SortInput.kt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.menu
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.ints.IntArrayList
|
||||||
|
import it.unimi.dsi.fastutil.ints.IntCollection
|
||||||
|
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||||
|
import net.minecraft.world.Container
|
||||||
|
import ru.dbotthepony.mc.otm.container.computeSortedIndices
|
||||||
|
import ru.dbotthepony.mc.otm.container.sortWithIndices
|
||||||
|
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
||||||
|
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
||||||
|
|
||||||
|
class SortInput(menu: MatteryMenu, val container: Container, val settings: IItemStackSortingSettings) {
|
||||||
|
val input = menu.PlayerInput(MatteryStreamCodec.Collection<RegistryFriendlyByteBuf, Int, IntCollection>(StreamCodecs.VAR_INT, ::IntArrayList)) {
|
||||||
|
container.sortWithIndices(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clientInput() {
|
||||||
|
input.accept(container.computeSortedIndices(settings.actualComparator))
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,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.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.SortInput
|
||||||
import ru.dbotthepony.mc.otm.menu.UserFilteredMenuSlot
|
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
|
||||||
@ -18,7 +19,7 @@ class CargoCrateMenu(
|
|||||||
val storageSlots = makeSlots(actualContainer, ::UserFilteredMenuSlot)
|
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(this, actualContainer, playerSortSettings)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (trackedPlayerOpen) {
|
if (trackedPlayerOpen) {
|
||||||
|
@ -8,6 +8,7 @@ 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.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
import ru.dbotthepony.mc.otm.menu.SortInput
|
||||||
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
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ class MinecartCargoCrateMenu(
|
|||||||
|
|
||||||
private val trackedPlayerOpen = !inventory.player.isSpectator
|
private val trackedPlayerOpen = !inventory.player.isSpectator
|
||||||
|
|
||||||
val sort = SortInput(actualContainer, playerSortSettings)
|
val sort = SortInput(this, actualContainer, playerSortSettings)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (trackedPlayerOpen) {
|
if (trackedPlayerOpen) {
|
||||||
|
@ -8,6 +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.SortInput
|
||||||
import ru.dbotthepony.mc.otm.menu.UserFilteredMenuSlot
|
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
|
||||||
@ -28,7 +29,7 @@ class ItemHatchMenu(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val sort = SortInput(actualContainer, playerSortSettings)
|
val sort = SortInput(this, actualContainer, playerSortSettings)
|
||||||
val redstone = EnumInputWithFeedback<RedstoneSetting>(this)
|
val redstone = EnumInputWithFeedback<RedstoneSetting>(this)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
Loading…
Reference in New Issue
Block a user