Fix ReplicatorJob not serializing it's values

This commit is contained in:
DBotThePony 2022-09-03 15:58:42 +07:00
parent 86660e639e
commit 49fd0dc105
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 25 additions and 6 deletions

View File

@ -15,7 +15,7 @@ abstract class MatteryWorkerBlockEntity<JobType : MatteryWorkerBlockEntity.Job>(
type: BlockEntityType<*>,
blockPos: BlockPos,
blockState: BlockState,
val jobDeserializer: (tag: CompoundTag) -> JobType
val jobDeserializer: (tag: CompoundTag) -> JobType?
) : MatteryPoweredBlockEntity(type, blockPos, blockState) {
open class Job(
open val ticks: Double,

View File

@ -31,7 +31,13 @@ import ru.dbotthepony.mc.otm.container.set
import ru.dbotthepony.mc.otm.core.*
class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
MatteryWorkerBlockEntity<MatterReplicatorBlockEntity.ReplicatorJob>(MBlockEntities.MATTER_REPLICATOR, p_155229_, p_155230_, ::ReplicatorJob), IMatterGraphNode {
MatteryWorkerBlockEntity<MatterReplicatorBlockEntity.ReplicatorJob>(MBlockEntities.MATTER_REPLICATOR, p_155229_, p_155230_, {
try {
ReplicatorJob(it)
} catch(err: NoSuchElementException) {
null
}
}), IMatterGraphNode {
class ReplicatorJob : ItemJob {
val matterPerTick: ImpreciseFraction
@ -41,11 +47,11 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
val asDust: Boolean
constructor(tag: CompoundTag) : super(tag) {
matterPerTick = tag.getImpreciseFraction("matter_per_tick")
matterValue = tag.getImpreciseFraction("value")
matterPerTick = tag.getImpreciseFraction("matterPerTick")
matterValue = tag.getImpreciseFraction("matterValue")
pattern = tag.map("pattern", PatternState::deserializeNBT)
asDust = tag.getBoolean("as_dust")
task = tag.map("task", ReplicationTask::deserializeNBT) ?: throw NullPointerException("Unable to deserialize matter task")
asDust = tag.getBoolean("asDust")
task = tag.map("task", ReplicationTask::deserializeNBT) ?: throw NoSuchElementException("Unable to deserialize matter task")
}
constructor(
@ -63,6 +69,19 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
this.pattern = pattern
this.asDust = asDust
}
override fun serializeNBT(): CompoundTag {
return super.serializeNBT().also {
it["matterPerTick"] = this.matterPerTick
it["task"] = this.task.serializeNBT()
it["matterValue"] = this.matterValue
if (this.pattern != null)
it["pattern"] = this.pattern.serializeNBT()
it["asDust"] = this.asDust
}
}
}
override val energy = WorkerEnergyStorage(this::powerLevelUpdated, STORAGE, MAX_IO)