Fix ReplicatorJob not serializing it's values
This commit is contained in:
parent
86660e639e
commit
49fd0dc105
@ -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,
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user