From 7679e4e012b6434b5f5a5ca973e2e81df334904f Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 3 Mar 2022 19:57:08 +0100 Subject: [PATCH] fix some crashes in chunk section data --- .../data/world/container/BlockSectionDataProvider.kt | 4 ++-- .../minosoft/data/world/container/SectionDataProvider.kt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/world/container/BlockSectionDataProvider.kt b/src/main/java/de/bixilon/minosoft/data/world/container/BlockSectionDataProvider.kt index 698157c9d..a6ae65b8c 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/container/BlockSectionDataProvider.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/container/BlockSectionDataProvider.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.data.world.container -import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock @@ -27,10 +26,11 @@ class BlockSectionDataProvider( override fun recalculate() { super.recalculate() - val data: Array = data?.nullCast() ?: return // ToDo: ClassCastException + val data: Array = data ?: return // ToDo: ClassCastException fluidCount = 0 for (blockState in data) { + blockState as BlockState? if (blockState.isFluid()) { fluidCount++ } diff --git a/src/main/java/de/bixilon/minosoft/data/world/container/SectionDataProvider.kt b/src/main/java/de/bixilon/minosoft/data/world/container/SectionDataProvider.kt index b75cfaeba..da277541c 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/container/SectionDataProvider.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/container/SectionDataProvider.kt @@ -23,7 +23,7 @@ open class SectionDataProvider( data: Array? = null, val checkSize: Boolean = false, ) : Iterable { - protected var data: Array? = data?.unsafeCast() + protected var data: Array? = data?.unsafeCast() private set protected val lock = SimpleLock() // lock while reading (blocks writing) var count: Int = 0 @@ -142,7 +142,7 @@ open class SectionDataProvider( if (count == 0) { this.data = null unlock() - return previous + return previous.unsafeCast() } } else if (previous == null) { count++ @@ -163,7 +163,7 @@ open class SectionDataProvider( } } unlock() - return previous + return previous.unsafeCast() } fun acquire() { @@ -188,7 +188,7 @@ open class SectionDataProvider( fun setData(data: Array) { lock() check(data.size == ProtocolDefinition.BLOCKS_PER_SECTION) { "Size does not match!" } - this.data = data as Array + this.data = data as Array recalculate() unlock() }