mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 01:48:04 -04:00
fix some bugs in new block entity provider
This commit is contained in:
parent
0c7ba090f0
commit
d37ef51ca3
@ -38,6 +38,7 @@ class ChunkSection(
|
||||
|
||||
fun setData(chunkSection: ChunkSection) {
|
||||
blocks = chunkSection.blocks.clone()
|
||||
blockEntities = chunkSection.blockEntities.clone()
|
||||
}
|
||||
|
||||
fun getBlockEntity(inChunkSectionPositions: Vec3i): BlockEntity? {
|
||||
|
@ -18,19 +18,18 @@ import de.bixilon.minosoft.data.world.ChunkSection.Companion.index
|
||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
import glm_.vec3.Vec3i
|
||||
|
||||
class ArrayBlockEntityProvider() : BlockEntityProvider {
|
||||
class ArrayBlockEntityProvider(
|
||||
var blockEntities: Array<BlockEntity?> = arrayOfNulls(ProtocolDefinition.BLOCKS_PER_SECTION),
|
||||
) : BlockEntityProvider {
|
||||
override var size: Int = 0
|
||||
private set
|
||||
|
||||
|
||||
constructor(blockEntityProvider: MapBlockEntityProvider) : this() {
|
||||
for ((position, blockEntity) in blockEntityProvider.blockEntities) {
|
||||
blockEntities[position.index] = blockEntity
|
||||
}
|
||||
}
|
||||
|
||||
var blockEntities: Array<BlockEntity?> = arrayOfNulls(ProtocolDefinition.BLOCKS_PER_SECTION)
|
||||
|
||||
override fun get(inChunkSectionPosition: Vec3i): BlockEntity? {
|
||||
return blockEntities[inChunkSectionPosition.index]
|
||||
}
|
||||
@ -44,4 +43,8 @@ class ArrayBlockEntityProvider() : BlockEntityProvider {
|
||||
size++
|
||||
}
|
||||
}
|
||||
|
||||
override fun clone(): ArrayBlockEntityProvider {
|
||||
return ArrayBlockEntityProvider(blockEntities.clone())
|
||||
}
|
||||
}
|
||||
|
@ -23,9 +23,10 @@ interface BlockEntityProvider {
|
||||
|
||||
operator fun set(inChunkSectionPosition: Vec3i, blockEntity: BlockEntity?)
|
||||
|
||||
companion object {
|
||||
const val BLOCK_ENTITY_MAP_LIMIT_UP = 100
|
||||
const val BLOCK_ENTITY_MAP_LIMIT_DOWN = 80
|
||||
}
|
||||
fun clone(): BlockEntityProvider
|
||||
|
||||
companion object {
|
||||
const val BLOCK_ENTITY_MAP_LIMIT_UP = 15
|
||||
const val BLOCK_ENTITY_MAP_LIMIT_DOWN = 5
|
||||
}
|
||||
}
|
||||
|
@ -17,12 +17,12 @@ import de.bixilon.minosoft.data.entities.block.BlockEntity
|
||||
import de.bixilon.minosoft.data.world.ChunkSection.Companion.indexPosition
|
||||
import glm_.vec3.Vec3i
|
||||
|
||||
class MapBlockEntityProvider() : BlockEntityProvider {
|
||||
class MapBlockEntityProvider(
|
||||
var blockEntities: MutableMap<Vec3i, BlockEntity> = mutableMapOf(),
|
||||
) : BlockEntityProvider {
|
||||
override val size: Int
|
||||
get() = blockEntities.size
|
||||
|
||||
var blockEntities: MutableMap<Vec3i, BlockEntity> = mutableMapOf()
|
||||
|
||||
constructor(blockEntityProvider: ArrayBlockEntityProvider) : this() {
|
||||
for ((index, blockEntity) in blockEntityProvider.blockEntities.withIndex()) {
|
||||
if (blockEntity == null) {
|
||||
@ -43,4 +43,8 @@ class MapBlockEntityProvider() : BlockEntityProvider {
|
||||
}
|
||||
blockEntities[inChunkSectionPosition] = blockEntity
|
||||
}
|
||||
|
||||
override fun clone(): MapBlockEntityProvider {
|
||||
return MapBlockEntityProvider(blockEntities.toMutableMap())
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user