diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/data/world/WorldTestUtil.kt b/src/integration-test/kotlin/de/bixilon/minosoft/data/world/WorldTestUtil.kt index ea71d7826..f8a4449fb 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/data/world/WorldTestUtil.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/data/world/WorldTestUtil.kt @@ -37,11 +37,11 @@ import de.bixilon.minosoft.test.IT object WorldTestUtil { - fun createWorld(connection: PlayConnection?, light: Boolean = false): World { + fun createWorld(connection: PlayConnection?, light: Boolean = false, capacity: Int = 0): World { val world = IT.OBJENESIS.newInstance(World::class.java) world::occlusion.forceSet(DataObserver(0)) world::lock.forceSet(SimpleLock()) - world::chunks.forceSet(ChunkManager(world)) + world::chunks.forceSet(ChunkManager(world, maxOf(0, capacity), 0)) world::border.forceSet(WorldBorder()) world::dimension.forceSet(DataObserver(DimensionProperties(light = light, skyLight = light))) world::connection.forceSet(connection) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/connection/play/ConnectionTestUtil.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/connection/play/ConnectionTestUtil.kt index 525d06223..64c2d2445 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/connection/play/ConnectionTestUtil.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/network/connection/play/ConnectionTestUtil.kt @@ -13,6 +13,7 @@ package de.bixilon.minosoft.protocol.network.connection.play +import de.bixilon.kotlinglm.pow import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.assets.TestAssetsManager @@ -52,7 +53,7 @@ object ConnectionTestUtil { connection::version.forceSet(version) connection::registries.forceSet(Registries()) connection.registries.parent = if (version == IT.VERSION) IT.REGISTRIES else ITUtil.loadPixlyzerData(version) - connection::world.forceSet(createWorld(connection, light)) + connection::world.forceSet(createWorld(connection, light, (worldSize * 2 + 1).pow(2))) connection::player.forceSet(LocalPlayerEntity(connection.account, connection, SignatureKeyManagement(connection, TestAccount))) connection.player.startInit() connection::network.forceSet(TestNetwork()) diff --git a/src/main/java/de/bixilon/minosoft/data/world/World.kt b/src/main/java/de/bixilon/minosoft/data/world/World.kt index ba2204fae..06e21064f 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/World.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/World.kt @@ -61,7 +61,7 @@ class World( val lock = SimpleLock() val random = Random() var cacheBiomeAccessor: NoiseBiomeAccessor? = null - val chunks = ChunkManager(this) + val chunks = ChunkManager(this, 1000, 100) val entities = WorldEntities() var hardcore by observed(false) var dimension: DimensionProperties by observed(DimensionProperties()) diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/manager/ChunkManager.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/manager/ChunkManager.kt index 6f540c8a5..20141f802 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/manager/ChunkManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/manager/ChunkManager.kt @@ -32,9 +32,9 @@ import de.bixilon.minosoft.data.world.chunk.update.chunk.prototype.PrototypeChan import de.bixilon.minosoft.data.world.chunk.update.chunk.prototype.PrototypeChangeUpdate import de.bixilon.minosoft.data.world.positions.ChunkPosition -class ChunkManager(val world: World) { - val chunks: LockMap = LockMap(hashMapOf(), world.lock) - val prototypes: LockMap = LockMap(hashMapOf(), world.lock) +class ChunkManager(val world: World, chunkCapacity: Int = 0, prototypeCapacity: Int = 0) { + val chunks: LockMap = LockMap(HashMap(chunkCapacity), world.lock) + val prototypes: LockMap = LockMap(HashMap(prototypeCapacity), world.lock) val size = WorldSizeManager(world) val ticker = ChunkTicker(this) var revision by observed(0)