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<*>,
|
type: BlockEntityType<*>,
|
||||||
blockPos: BlockPos,
|
blockPos: BlockPos,
|
||||||
blockState: BlockState,
|
blockState: BlockState,
|
||||||
val jobDeserializer: (tag: CompoundTag) -> JobType
|
val jobDeserializer: (tag: CompoundTag) -> JobType?
|
||||||
) : MatteryPoweredBlockEntity(type, blockPos, blockState) {
|
) : MatteryPoweredBlockEntity(type, blockPos, blockState) {
|
||||||
open class Job(
|
open class Job(
|
||||||
open val ticks: Double,
|
open val ticks: Double,
|
||||||
|
@ -31,7 +31,13 @@ import ru.dbotthepony.mc.otm.container.set
|
|||||||
import ru.dbotthepony.mc.otm.core.*
|
import ru.dbotthepony.mc.otm.core.*
|
||||||
|
|
||||||
class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
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 {
|
class ReplicatorJob : ItemJob {
|
||||||
val matterPerTick: ImpreciseFraction
|
val matterPerTick: ImpreciseFraction
|
||||||
@ -41,11 +47,11 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
|||||||
val asDust: Boolean
|
val asDust: Boolean
|
||||||
|
|
||||||
constructor(tag: CompoundTag) : super(tag) {
|
constructor(tag: CompoundTag) : super(tag) {
|
||||||
matterPerTick = tag.getImpreciseFraction("matter_per_tick")
|
matterPerTick = tag.getImpreciseFraction("matterPerTick")
|
||||||
matterValue = tag.getImpreciseFraction("value")
|
matterValue = tag.getImpreciseFraction("matterValue")
|
||||||
pattern = tag.map("pattern", PatternState::deserializeNBT)
|
pattern = tag.map("pattern", PatternState::deserializeNBT)
|
||||||
asDust = tag.getBoolean("as_dust")
|
asDust = tag.getBoolean("asDust")
|
||||||
task = tag.map("task", ReplicationTask::deserializeNBT) ?: throw NullPointerException("Unable to deserialize matter task")
|
task = tag.map("task", ReplicationTask::deserializeNBT) ?: throw NoSuchElementException("Unable to deserialize matter task")
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@ -63,6 +69,19 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
|||||||
this.pattern = pattern
|
this.pattern = pattern
|
||||||
this.asDust = asDust
|
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)
|
override val energy = WorkerEnergyStorage(this::powerLevelUpdated, STORAGE, MAX_IO)
|
||||||
|
Loading…
Reference in New Issue
Block a user