Update painter menu
This commit is contained in:
parent
87b87b9b82
commit
bec6f65636
@ -1,5 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.menu.decorative
|
||||
|
||||
import net.minecraft.tags.ItemTags
|
||||
import net.minecraft.world.SimpleContainer
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.entity.player.Player
|
||||
@ -9,7 +10,6 @@ import net.minecraft.world.level.material.Fluids
|
||||
import net.neoforged.neoforge.capabilities.Capabilities
|
||||
import net.neoforged.neoforge.fluids.FluidStack
|
||||
import net.neoforged.neoforge.fluids.capability.IFluidHandler
|
||||
import ru.dbotthepony.kommons.io.nullable
|
||||
import ru.dbotthepony.kommons.util.Listenable
|
||||
import ru.dbotthepony.kommons.util.ListenableDelegate
|
||||
import ru.dbotthepony.kommons.util.getValue
|
||||
@ -22,11 +22,12 @@ import ru.dbotthepony.mc.otm.core.collect.SupplierMap
|
||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||
import ru.dbotthepony.mc.otm.core.collect.maybe
|
||||
import ru.dbotthepony.mc.otm.core.isNotEmpty
|
||||
import ru.dbotthepony.mc.otm.core.util.ResourceLocationValueCodec
|
||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||
import ru.dbotthepony.mc.otm.menu.MatterySlot
|
||||
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
|
||||
import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput
|
||||
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
||||
import ru.dbotthepony.mc.otm.network.nullable
|
||||
import ru.dbotthepony.mc.otm.recipe.AbstractPainterRecipe
|
||||
import ru.dbotthepony.mc.otm.registry.MMenus
|
||||
import ru.dbotthepony.mc.otm.registry.MRecipes
|
||||
@ -47,17 +48,17 @@ class PainterMenu(
|
||||
val inputContainer = MatteryContainer(::rescan, 1)
|
||||
val outputContainer = MatteryContainer(1)
|
||||
private var lastRecipe: RecipeHolder<out AbstractPainterRecipe>? = null
|
||||
var selectedRecipe by mSynchronizer.Slot(ListenableDelegate.Box(null), ResourceLocationValueCodec.nullable()).also { it.addListener(Runnable { rescan() }) }
|
||||
var selectedRecipe by mSynchronizer.Slot(ListenableDelegate.Box(null), StreamCodecs.RESOURCE_LOCATION.nullable()).also { it.addListener(Runnable { rescan() }) }
|
||||
|
||||
val isBulk = BooleanInputWithFeedback(this, tile?.let { it::isBulk })
|
||||
|
||||
val selectRecipe = PlayerInput(ResourceLocationValueCodec) {
|
||||
val selectRecipe = PlayerInput(StreamCodecs.RESOURCE_LOCATION) {
|
||||
selectedRecipe = it
|
||||
}
|
||||
|
||||
val inputSlot = object : MatterySlot(inputContainer, 0) {
|
||||
override fun mayPlace(itemStack: ItemStack): Boolean {
|
||||
if (!itemStack.isEmpty && itemStack.item is DyeableArmorItem) {
|
||||
if (!itemStack.isEmpty && itemStack.`is`(ItemTags.DYEABLE)) {
|
||||
return super.mayPlace(itemStack)
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import net.minecraft.network.codec.ByteBufCodecs
|
||||
import net.minecraft.network.codec.StreamCodec
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.util.valueproviders.FloatProvider
|
||||
import ru.dbotthepony.kommons.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.readDecimal
|
||||
@ -28,6 +29,7 @@ object StreamCodecs {
|
||||
val BOOLEAN = ByteBufCodecs.BOOL.wrap()
|
||||
val STRING = ByteBufCodecs.STRING_UTF8.wrap()
|
||||
val UUID = UUIDUtil.STREAM_CODEC.wrap()
|
||||
val RESOURCE_LOCATION = ResourceLocation.STREAM_CODEC.wrap()
|
||||
|
||||
val RGBA: MatteryStreamCodec<ByteBuf, RGBAColor> = StreamCodec.of<ByteBuf, RGBAColor>(
|
||||
{ s, v -> s.writeFloat(v.red); s.writeFloat(v.green); s.writeFloat(v.blue); s.writeFloat(v.alpha) },
|
||||
|
Loading…
Reference in New Issue
Block a user