Fixed observed item stacks are not properly synched
This commit is contained in:
parent
74afafd904
commit
5166bf20ad
@ -0,0 +1,22 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.network
|
||||||
|
|
||||||
|
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||||
|
import net.minecraft.world.item.ItemStack
|
||||||
|
|
||||||
|
object ItemStackCodec : MatteryStreamCodec<RegistryFriendlyByteBuf, ItemStack> {
|
||||||
|
override fun decode(stream: RegistryFriendlyByteBuf): ItemStack {
|
||||||
|
return ItemStack.OPTIONAL_STREAM_CODEC.decode(stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun encode(stream: RegistryFriendlyByteBuf, value: ItemStack) {
|
||||||
|
return ItemStack.OPTIONAL_STREAM_CODEC.encode(stream, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun copy(value: ItemStack): ItemStack {
|
||||||
|
return value.copy()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun compare(a: ItemStack, b: ItemStack): Boolean {
|
||||||
|
return ItemStack.isSameItemSameComponents(a, b)
|
||||||
|
}
|
||||||
|
}
|
@ -21,6 +21,7 @@ import ru.dbotthepony.mc.otm.OTM_CLEANER
|
|||||||
import ru.dbotthepony.mc.otm.core.collect.filterNotNull
|
import ru.dbotthepony.mc.otm.core.collect.filterNotNull
|
||||||
import ru.dbotthepony.mc.otm.core.collect.map
|
import ru.dbotthepony.mc.otm.core.collect.map
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
import ru.dbotthepony.mc.otm.network.ItemStackCodec
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
||||||
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
import ru.dbotthepony.mc.otm.network.StreamCodecs
|
||||||
import ru.dbotthepony.mc.otm.network.decodePayload
|
import ru.dbotthepony.mc.otm.network.decodePayload
|
||||||
@ -282,15 +283,15 @@ class SynchableGroup : Observer, ISynchable, Iterable<ISynchable> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun item(value: ItemStack = ItemStack.EMPTY, setter: DelegateSetter<ItemStack> = DelegateSetter.passthrough(), getter: DelegateGetter<ItemStack> = DelegateGetter.passthrough()): SynchableDelegate<ItemStack> {
|
fun item(value: ItemStack = ItemStack.EMPTY, setter: DelegateSetter<ItemStack> = DelegateSetter.passthrough(), getter: DelegateGetter<ItemStack> = DelegateGetter.passthrough()): SynchableDelegate<ItemStack> {
|
||||||
return add(ListenableDelegate.maskSmart(value, getter, setter), ItemStack.OPTIONAL_STREAM_CODEC.wrap())
|
return add(ListenableDelegate.maskSmart(value, getter, setter), ItemStackCodec)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun computedItem(delegate: Supplier<ItemStack>): SynchableDelegate<ItemStack> {
|
fun computedItem(delegate: Supplier<ItemStack>): SynchableDelegate<ItemStack> {
|
||||||
return computed(delegate, ItemStack.OPTIONAL_STREAM_CODEC.wrap())
|
return computed(delegate, ItemStackCodec)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun observedItem(value: ItemStack = ItemStack.EMPTY, setter: DelegateSetter<ItemStack> = DelegateSetter.passthrough(), getter: DelegateGetter<ItemStack> = DelegateGetter.passthrough()): SynchableObservedDelegate<ItemStack> {
|
fun observedItem(value: ItemStack = ItemStack.EMPTY, setter: DelegateSetter<ItemStack> = DelegateSetter.passthrough(), getter: DelegateGetter<ItemStack> = DelegateGetter.passthrough()): SynchableObservedDelegate<ItemStack> {
|
||||||
return add(Delegate.maskSmart(value, getter, setter), ItemStack.OPTIONAL_STREAM_CODEC.wrap())
|
return add(Delegate.maskSmart(value, getter, setter), ItemStackCodec)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user