From c976c3f607f8107d463eff3e3405661456a5df60 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sun, 28 Feb 2021 22:47:54 -0500 Subject: [PATCH] Add DeviceBlockEntity common tag helpers --- .../phycon/block/DeviceBlockEntity.kt | 20 ++++++++++------ .../block/extractor/ExtractorBlockEntity.kt | 18 ++++----------- .../block/inserter/InserterBlockEntity.kt | 23 ++++--------------- .../RedstoneControllerBlockEntity.kt | 21 ++++------------- .../block/terminal/TerminalBlockEntity.kt | 18 ++++----------- 5 files changed, 29 insertions(+), 71 deletions(-) diff --git a/src/main/kotlin/net/shadowfacts/phycon/block/DeviceBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/block/DeviceBlockEntity.kt index 6fca181..0a30c12 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/block/DeviceBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/block/DeviceBlockEntity.kt @@ -147,27 +147,33 @@ abstract class DeviceBlockEntity(type: BlockEntityType<*>): BlockEntity(type), } } - override fun toTag(tag: CompoundTag): CompoundTag { + protected open fun toCommonTag(tag: CompoundTag) { tag.putInt("IPAddress", ipAddress.address) tag.putLong("MACAddress", macAddress.address) + } + + protected open fun fromCommonTag(tag: CompoundTag) { + ipAddress = IPAddress(tag.getInt("IPAddress")) + macAddress = MACAddress(tag.getLong("MACAddress")) + } + + override fun toTag(tag: CompoundTag): CompoundTag { + toCommonTag(tag) return super.toTag(tag) } override fun fromTag(state: BlockState, tag: CompoundTag) { super.fromTag(state, tag) - ipAddress = IPAddress(tag.getInt("IPAddress")) - macAddress = MACAddress(tag.getLong("MACAddress")) + fromCommonTag(tag) } override fun toClientTag(tag: CompoundTag): CompoundTag { - tag.putInt("IPAddress", ipAddress.address) - tag.putLong("MACAddress", macAddress.address) + toCommonTag(tag) return tag } override fun fromClientTag(tag: CompoundTag) { - ipAddress = IPAddress(tag.getInt("IPAddress")) - macAddress = MACAddress(tag.getLong("MACAddress")) + fromCommonTag(tag) } fun onBreak() { diff --git a/src/main/kotlin/net/shadowfacts/phycon/block/extractor/ExtractorBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/block/extractor/ExtractorBlockEntity.kt index ed8f4cd..33888cd 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/block/extractor/ExtractorBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/block/extractor/ExtractorBlockEntity.kt @@ -99,23 +99,13 @@ class ExtractorBlockEntity: DeviceBlockEntity(PhyBlockEntities.EXTRACTOR), return false } - override fun toTag(tag: CompoundTag): CompoundTag { + override fun toCommonTag(tag: CompoundTag) { + super.toCommonTag(tag) tag.putString("ActivationMode", controller.activationMode.name) - return super.toTag(tag) } - override fun fromTag(state: BlockState, tag: CompoundTag) { - super.fromTag(state, tag) - controller.activationMode = ActivationMode.valueOf(tag.getString("ActivationMode")) - } - - override fun toClientTag(tag: CompoundTag): CompoundTag { - tag.putString("ActivationMode", controller.activationMode.name) - return super.toClientTag(tag) - } - - override fun fromClientTag(tag: CompoundTag) { - super.fromClientTag(tag) + override fun fromCommonTag(tag: CompoundTag) { + super.fromCommonTag(tag) controller.activationMode = ActivationMode.valueOf(tag.getString("ActivationMode")) } diff --git a/src/main/kotlin/net/shadowfacts/phycon/block/inserter/InserterBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/block/inserter/InserterBlockEntity.kt index 5170400..72acefe 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/block/inserter/InserterBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/block/inserter/InserterBlockEntity.kt @@ -125,34 +125,19 @@ class InserterBlockEntity: DeviceBlockEntity(PhyBlockEntities.INSERTER), currentRequest = null } - override fun toTag(tag: CompoundTag): CompoundTag { + override fun toCommonTag(tag: CompoundTag) { + super.toCommonTag(tag) tag.putString("ActivationMode", controller.activationMode.name) tag.put("StackToExtract", stackToExtract.toTag(CompoundTag())) tag.putInt("AmountToExtract", amountToExtract) - return super.toTag(tag) } - override fun fromTag(state: BlockState, tag: CompoundTag) { - super.fromTag(state, tag) + override fun fromCommonTag(tag: CompoundTag) { + super.fromCommonTag(tag) controller.activationMode = ActivationMode.valueOf(tag.getString("ActivationMode")) stackToExtract = ItemStack.fromTag(tag.getCompound("StackToExtract")) amountToExtract = tag.getInt("AmountToExtract") } - - override fun toClientTag(tag: CompoundTag): CompoundTag { - tag.putString("ActivationMode", controller.activationMode.name) - tag.put("StackToExtract", stackToExtract.toTag(CompoundTag())) - tag.putInt("AmountToExtract", amountToExtract) - return super.toClientTag(tag) - } - - override fun fromClientTag(tag: CompoundTag) { - super.fromClientTag(tag) - controller.activationMode = ActivationMode.valueOf(tag.getString("ActivationMode")) - stackToExtract = ItemStack.fromTag(tag.getCompound("StackToExtract")) - amountToExtract = tag.getInt("AmountToExtract") - } - class PendingExtractRequest( val stack: ItemStack, val timestamp: Long, diff --git a/src/main/kotlin/net/shadowfacts/phycon/block/redstone_controller/RedstoneControllerBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/block/redstone_controller/RedstoneControllerBlockEntity.kt index 384d42e..899c957 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/block/redstone_controller/RedstoneControllerBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/block/redstone_controller/RedstoneControllerBlockEntity.kt @@ -46,27 +46,14 @@ class RedstoneControllerBlockEntity: DeviceBlockEntity(PhyBlockEntities.REDSTONE } } - override fun toTag(tag: CompoundTag): CompoundTag { + override fun toCommonTag(tag: CompoundTag) { + super.toCommonTag(tag) tag.putIntArray("ManagedDevices", managedDevices.mapNotNull { it?.address }) tag.putString("RedstoneMode", redstoneMode.name) - return super.toTag(tag) } - override fun fromTag(state: BlockState, tag: CompoundTag) { - super.fromTag(state, tag) - val addresses = tag.getIntArray("ManagedDevices") - managedDevices = (0..4).map { if (it >= addresses.size) null else IPAddress(addresses[it]) }.toTypedArray() - redstoneMode = RedstoneMode.valueOf(tag.getString("RedstoneMode")) - } - - override fun toClientTag(tag: CompoundTag): CompoundTag { - tag.putIntArray("ManagedDevices", managedDevices.mapNotNull { it?.address }) - tag.putString("RedstoneMode", redstoneMode.name) - return super.toClientTag(tag) - } - - override fun fromClientTag(tag: CompoundTag) { - super.fromClientTag(tag) + override fun fromCommonTag(tag: CompoundTag) { + super.fromCommonTag(tag) val addresses = tag.getIntArray("ManagedDevices") managedDevices = (0..4).map { if (it >= addresses.size) null else IPAddress(addresses[it]) }.toTypedArray() redstoneMode = RedstoneMode.valueOf(tag.getString("RedstoneMode")) diff --git a/src/main/kotlin/net/shadowfacts/phycon/block/terminal/TerminalBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/block/terminal/TerminalBlockEntity.kt index 986dd0f..fedb5ae 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/block/terminal/TerminalBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/block/terminal/TerminalBlockEntity.kt @@ -239,25 +239,15 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), } } - override fun toTag(tag: CompoundTag): CompoundTag { + override fun toCommonTag(tag: CompoundTag) { + super.toCommonTag(tag) tag.put("InternalBuffer", internalBuffer.toTag()) - return super.toTag(tag) } - override fun fromTag(state: BlockState, tag: CompoundTag) { - super.fromTag(state, tag) + override fun fromCommonTag(tag: CompoundTag) { + super.fromCommonTag(tag) internalBuffer.fromTag(tag.getCompound("InternalBuffer")) } - - override fun toClientTag(tag: CompoundTag): CompoundTag { - tag.put("InternalBuffer", internalBuffer.toTag()) - return tag - } - - override fun fromClientTag(tag: CompoundTag) { - internalBuffer.fromTag(tag.getCompound("InternalBuffer")) - } - interface NetItemObserver { fun netItemsChanged() }