Update painter menu

This commit is contained in:
DBotThePony 2024-08-21 20:15:01 +07:00
parent 87b87b9b82
commit bec6f65636
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 8 additions and 5 deletions

View File

@ -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)
}

View File

@ -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) },