mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-09 15:29:20 -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.environment.Environment
|
||||||
import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
|
import de.bixilon.kutil.reflection.ReflectionUtil.forceSet
|
||||||
import de.bixilon.minosoft.assets.IntegratedAssets
|
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.data.registries.fallback.tags.FallbackTags
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystemFactory
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystemFactory
|
||||||
import de.bixilon.minosoft.gui.rendering.system.dummy.DummyRenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.dummy.DummyRenderSystem
|
||||||
@ -81,5 +84,9 @@ internal object MinosoftSIT {
|
|||||||
IT.VERSION = version
|
IT.VERSION = version
|
||||||
IT.REGISTRIES = registries
|
IT.REGISTRIES = registries
|
||||||
IT.FALLBACK_TAGS = FallbackTags.map(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
|
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.World
|
||||||
|
import de.bixilon.minosoft.data.world.positions.BlockPosition
|
||||||
import de.bixilon.minosoft.data.world.positions.ChunkPosition
|
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.protocol.network.session.play.SessionTestUtil
|
||||||
|
import de.bixilon.minosoft.test.IT
|
||||||
import org.testng.Assert.assertEquals
|
import org.testng.Assert.assertEquals
|
||||||
|
import org.testng.Assert.assertNull
|
||||||
import org.testng.annotations.Test
|
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, 0))?.position, ChunkPosition(1, 0))
|
||||||
assertEquals(chunk.neighbours.traceChunk(ChunkPosition(1, 1))?.position, ChunkPosition(1, 1))
|
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
|
package de.bixilon.minosoft.test
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeNull
|
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.data.registries.registries.Registries
|
||||||
import de.bixilon.minosoft.protocol.network.session.play.PlaySession
|
import de.bixilon.minosoft.protocol.network.session.play.PlaySession
|
||||||
import de.bixilon.minosoft.protocol.versions.Version
|
import de.bixilon.minosoft.protocol.versions.Version
|
||||||
@ -27,4 +28,9 @@ object IT {
|
|||||||
var REGISTRIES: Registries = unsafeNull()
|
var REGISTRIES: Registries = unsafeNull()
|
||||||
var FALLBACK_TAGS: TagManager = unsafeNull()
|
var FALLBACK_TAGS: TagManager = unsafeNull()
|
||||||
val NULL_CONNECTION = OBJENESIS.newInstance(PlaySession::class.java)
|
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