diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/PatternState.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/PatternState.kt index a982c17b5..4fd31a930 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/PatternState.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/PatternState.kt @@ -67,27 +67,6 @@ private fun codec(builder: RecordCodecBuilder.Instance): ) } -private fun deserializeNBT(nbt: Tag?, mutable: Boolean): IPatternState? { - if (nbt !is CompoundTag) - return null - - if (!nbt.contains("id", "researchPercent", "item")) - return null - - val id = nbt.getUUID("id") - val researchPercent = nbt.getDouble("researchPercent") - val item = ForgeRegistries.ITEMS.getValue(ResourceLocation(nbt.getString("item"))) ?: return null - - if (item == Items.AIR) - return null - - if (mutable) { - return MutablePatternState(id, item, researchPercent) - } else { - return PatternState(id, item, researchPercent) - } -} - private fun read(buff: FriendlyByteBuf, mutable: Boolean): IPatternState? { val id = buff.readUUID() val item = buff.readItemType() @@ -121,7 +100,8 @@ data class PatternState( companion object { fun deserializeNBT(tag: Tag?): PatternState? { - return deserializeNBT(tag, false) as PatternState? + tag ?: return null + return CODEC.decode(NbtOps.INSTANCE, tag).result().map { it.first }.orElse(null) } fun read(buff: FriendlyByteBuf): PatternState? { @@ -155,7 +135,8 @@ data class MutablePatternState( companion object { fun deserializeNBT(tag: Tag?): MutablePatternState? { - return deserializeNBT(tag, true) as MutablePatternState? + tag ?: return null + return CODEC.decode(NbtOps.INSTANCE, tag).result().map { it.first }.orElse(null) } fun read(buff: FriendlyByteBuf): MutablePatternState? { @@ -169,7 +150,3 @@ data class MutablePatternState( } } } - -fun FriendlyByteBuf.writePatternState(state: IPatternState) = state.write(this) -fun FriendlyByteBuf.readPatternState() = PatternState.read(this) -fun FriendlyByteBuf.readMutablePatternState() = MutablePatternState.read(this)