mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-09 07:20:04 -04:00
chunk neighbour block tracing test
This commit is contained in:
parent
d45c80e062
commit
301e5d9df1
@ -17,6 +17,9 @@ import de.bixilon.kutil.concurrent.worker.task.TaskWorker
|
||||
import de.bixilon.kutil.environment.Environment
|
||||
import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
|
||||
import de.bixilon.minosoft.assets.IntegratedAssets
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.building.stone.Andesite
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.building.stone.Cobblestone
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.building.stone.StoneBlock
|
||||
import de.bixilon.minosoft.data.registries.fallback.tags.FallbackTags
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystemFactory
|
||||
import de.bixilon.minosoft.gui.rendering.system.dummy.DummyRenderSystem
|
||||
@ -81,5 +84,9 @@ internal object MinosoftSIT {
|
||||
IT.VERSION = version
|
||||
IT.REGISTRIES = registries
|
||||
IT.FALLBACK_TAGS = FallbackTags.map(registries)
|
||||
|
||||
IT::BLOCK_1.forceSet(registries.block[StoneBlock.Block]!!.states.default)
|
||||
IT::BLOCK_2.forceSet(registries.block[Cobblestone.Block]!!.states.default)
|
||||
IT::BLOCK_3.forceSet(registries.block[Andesite.Block]!!.states.default)
|
||||
}
|
||||
}
|
||||
|
@ -13,10 +13,15 @@
|
||||
|
||||
package de.bixilon.minosoft.data.world.chunk.neighbours
|
||||
|
||||
import de.bixilon.minosoft.data.direction.Directions
|
||||
import de.bixilon.minosoft.data.world.World
|
||||
import de.bixilon.minosoft.data.world.positions.BlockPosition
|
||||
import de.bixilon.minosoft.data.world.positions.ChunkPosition
|
||||
import de.bixilon.minosoft.data.world.positions.InChunkPosition
|
||||
import de.bixilon.minosoft.protocol.network.session.play.SessionTestUtil
|
||||
import de.bixilon.minosoft.test.IT
|
||||
import org.testng.Assert.assertEquals
|
||||
import org.testng.Assert.assertNull
|
||||
import org.testng.annotations.Test
|
||||
|
||||
/**
|
||||
@ -43,4 +48,76 @@ class ChunkNeighboursTest {
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(1, 0))?.position, ChunkPosition(1, 0))
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(1, 1))?.position, ChunkPosition(1, 1))
|
||||
}
|
||||
|
||||
fun `trace 2 in x- direction`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[0, 0]!!
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(-2, 0))?.position, ChunkPosition(-2, 0))
|
||||
}
|
||||
|
||||
fun `trace 2 in x+ direction`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[0, 0]!!
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(2, 0))?.position, ChunkPosition(2, 0))
|
||||
}
|
||||
|
||||
fun `trace 2 in z- direction`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[0, 0]!!
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(0, -2))?.position, ChunkPosition(0, -2))
|
||||
}
|
||||
|
||||
fun `trace 2 in z+ direction`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[0, 0]!!
|
||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(0, 2))?.position, ChunkPosition(0, 2))
|
||||
}
|
||||
|
||||
fun `trace non-existent chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[0, 0]!!
|
||||
assertNull(chunk.neighbours.traceChunk(ChunkPosition(0, 5)))
|
||||
}
|
||||
|
||||
fun `trace block absolut same chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 1]!!
|
||||
chunk[InChunkPosition(1, 2, 3)] = IT.BLOCK_1
|
||||
assertEquals(chunk.neighbours.traceBlock(BlockPosition(17, 2, 19)), IT.BLOCK_1)
|
||||
}
|
||||
|
||||
fun `trace block relative direction same chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 1]!!
|
||||
chunk[InChunkPosition(1, 2, 3)] = IT.BLOCK_1
|
||||
assertEquals(chunk.neighbours.traceBlock(InChunkPosition(1, 1, 3), Directions.UP), IT.BLOCK_1)
|
||||
}
|
||||
|
||||
fun `trace block relative offset same chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 1]!!
|
||||
chunk[InChunkPosition(3, 5, 7)] = IT.BLOCK_1
|
||||
assertEquals(chunk.neighbours.traceBlock(InChunkPosition(1, 0, 3), BlockPosition(2, 5, 4)), IT.BLOCK_1)
|
||||
}
|
||||
|
||||
fun `trace block absolut neighbour chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 1]!!
|
||||
chunk[InChunkPosition(1, 2, 3)] = IT.BLOCK_1
|
||||
assertEquals(world.chunks[0, 0]!!.neighbours.traceBlock(BlockPosition(17, 2, 19)), IT.BLOCK_1)
|
||||
}
|
||||
|
||||
fun `trace block relative direction neighbour chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 0]!!
|
||||
chunk[InChunkPosition(0, 1, 3)] = IT.BLOCK_1
|
||||
assertEquals(world.chunks[0, 0]!!.neighbours.traceBlock(InChunkPosition(15, 1, 3), Directions.EAST), IT.BLOCK_1)
|
||||
}
|
||||
|
||||
fun `trace block relative offset neighbour chunk`() {
|
||||
val world = create()
|
||||
val chunk = world.chunks[1, 1]!!
|
||||
chunk[InChunkPosition(2, 5, 8)] = IT.BLOCK_1 // 18 5 24
|
||||
assertEquals(world.chunks[-1, 0]!!.neighbours.traceBlock(InChunkPosition(3, 1, 3), BlockPosition(31, 4, 21)), IT.BLOCK_1)
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
package de.bixilon.minosoft.test
|
||||
|
||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
||||
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
import de.bixilon.minosoft.protocol.network.session.play.PlaySession
|
||||
import de.bixilon.minosoft.protocol.versions.Version
|
||||
@ -27,4 +28,9 @@ object IT {
|
||||
var REGISTRIES: Registries = unsafeNull()
|
||||
var FALLBACK_TAGS: TagManager = unsafeNull()
|
||||
val NULL_CONNECTION = OBJENESIS.newInstance(PlaySession::class.java)
|
||||
|
||||
|
||||
val BLOCK_1: BlockState = unsafeNull()
|
||||
val BLOCK_2: BlockState = unsafeNull()
|
||||
val BLOCK_3: BlockState = unsafeNull()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user