Update FLUID_STACK component to use SimpleFluidContent

This commit is contained in:
DBotThePony 2024-08-28 18:18:01 +07:00
parent 0446e5adb3
commit 5af896e476
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 17 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.capability.fluid
import net.minecraft.world.item.ItemStack
import net.neoforged.neoforge.fluids.FluidStack
import net.neoforged.neoforge.fluids.SimpleFluidContent
import net.neoforged.neoforge.fluids.capability.IFluidHandler
import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
@ -12,8 +13,8 @@ import java.util.function.IntSupplier
*/
open class ItemMatteryFluidHandler(val itemStack: ItemStack, private val _capacity: IntSupplier) : AbstractMatteryFluidHandler(), IFluidHandlerItem {
override var fluid: FluidStack
get() = itemStack[MDataComponentTypes.FLUID_STACK] ?: FluidStack.EMPTY
set(value) { itemStack[MDataComponentTypes.FLUID_STACK] = value }
get() = (itemStack[MDataComponentTypes.FLUID_STACK] ?: SimpleFluidContent.EMPTY).copy()
set(value) { itemStack[MDataComponentTypes.FLUID_STACK] = SimpleFluidContent.copyOf(value) }
final override val capacity: Int
get() = _capacity.asInt

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.item.matter
import com.google.common.collect.ImmutableList
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item
@ -119,7 +120,7 @@ class PatternStorageItem : Item, CapabilitiesRegisterListener {
}
patterns[i] = pattern
stack[MDataComponentTypes.PATTERNS] = patterns
stack[MDataComponentTypes.PATTERNS] = ImmutableList.copyOf(patterns)
return PatternInsertUpdated(pattern, ePattern)
}
}
@ -129,7 +130,7 @@ class PatternStorageItem : Item, CapabilitiesRegisterListener {
if (!simulate) {
patterns.add(pattern)
stack[MDataComponentTypes.PATTERNS] = patterns
stack[MDataComponentTypes.PATTERNS] = ImmutableList.copyOf(patterns)
}
return PatternInsertInserted(pattern)

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.registry
import com.google.common.collect.ImmutableList
import com.mojang.serialization.Codec
import net.minecraft.core.UUIDUtil
import net.minecraft.core.component.DataComponentType
@ -8,6 +9,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf
import net.minecraft.network.codec.StreamCodec
import net.neoforged.bus.api.IEventBus
import net.neoforged.neoforge.fluids.FluidStack
import net.neoforged.neoforge.fluids.SimpleFluidContent
import ru.dbotthepony.mc.otm.capability.matter.PatternState
import ru.dbotthepony.mc.otm.container.ItemFilter
import ru.dbotthepony.mc.otm.core.math.Decimal
@ -30,13 +32,13 @@ object MDataComponentTypes {
}
val FLUID_STACK by registry.register("fluid_stack") {
object : DataComponentType<FluidStack> {
override fun codec(): Codec<FluidStack> {
return FluidStack.OPTIONAL_CODEC
object : DataComponentType<SimpleFluidContent> {
override fun codec(): Codec<SimpleFluidContent> {
return SimpleFluidContent.CODEC
}
override fun streamCodec(): StreamCodec<in RegistryFriendlyByteBuf, FluidStack> {
return FluidStack.OPTIONAL_STREAM_CODEC
override fun streamCodec(): StreamCodec<in RegistryFriendlyByteBuf, SimpleFluidContent> {
return SimpleFluidContent.STREAM_CODEC
}
}
}
@ -53,7 +55,10 @@ object MDataComponentTypes {
val EXOPACK_UPGRADE_ID: DataComponentType<UUID> by registry.register("exopack_upgrade_id") { uuid() }
val QUANTUM_LINK_ID: DataComponentType<UUID> by registry.register("quantum_link_id") { uuid() }
val CONDENSATION_DRIVE_UUID: DataComponentType<UUID> by registry.register("condensation_drive_uuid") { uuid() }
val PATTERNS: DataComponentType<List<PatternState>> by registry.register("patterns") { DataComponentType.builder<List<PatternState>>().persistent(Codec.list(PatternState.CODEC)).build() }
val PATTERNS: DataComponentType<ImmutableList<PatternState>> by registry.register("patterns") {
DataComponentType.builder<ImmutableList<PatternState>>().persistent(Codec.list(PatternState.CODEC).xmap({ ImmutableList.copyOf(it) }, { it })).build()
}
val ITEM_FILTER: DataComponentType<ItemFilter> by registry.register("item_filter") { DataComponentType.builder<ItemFilter>().persistent(ItemFilter.CODEC).build() }
val EXPERIENCE: DataComponentType<Long> by registry.register("experience") { DataComponentType.builder<Long>().persistent(Codec.LONG).networkSynchronized(StreamCodecs.LONG).build() }