@Override public Block getBlockAt(Vector3i pos) { if (isInBounds(pos)) { return chunkView.getBlock(pos); } return null; }
/** * Checks if the position is within the boundaries of the chunk represented by this class * * @param pos The position to check, in world coordinates */ public boolean isInBounds(Vector3i pos) { return chunkView.getWorldRegion().encompasses(pos); } }
@Test public void testSimpleWorldView() { Chunk chunk = createChunk(0, 0, 0); chunk.setBlock(new Vector3i(0, 0, 0), solidBlock); ChunkViewCore chunkView = new ChunkViewCoreImpl(new Chunk[]{chunk}, Region3i.createFromCenterExtents(Vector3i.zero(), Vector3i.zero()), new Vector3i(), airBlock); assertEquals(solidBlock, chunkView.getBlock(0, 0, 0)); }
@Test public void testOffsetChunksWorldView() { Chunk chunk = createChunk(1, 0, 1); chunk.setBlock(new Vector3i(0, 0, 0), solidBlock); Chunk[] chunks = new Chunk[]{createChunk(0, 0, 0), createChunk(1, 0, 0), createChunk(2, 0, 0), createChunk(0, 0, 1), chunk, createChunk(2, 0, 1), createChunk(0, 0, 2), createChunk(1, 0, 2), createChunk(2, 0, 2)}; ChunkViewCore chunkView = new ChunkViewCoreImpl(chunks, Region3i.createFromCenterExtents(new Vector3i(1, 0, 1), new Vector3i(1, 0, 1)), new Vector3i(1, 0, 1), airBlock); assertEquals(solidBlock, chunkView.getBlock(0, 0, 0)); }
@Test public void testOffsetWorldViewBeforeMainChunk() { Chunk chunk = createChunk(0, 0, 0); chunk.setBlock(new Vector3i(ChunkConstants.SIZE_X - 1, 0, ChunkConstants.SIZE_Z - 1), solidBlock); Chunk[] chunks = new Chunk[]{chunk, createChunk(0, 0, -1), createChunk(1, 0, -1), createChunk(-1, 0, 0), createChunk(0, 0, 0), createChunk(1, 0, 0), createChunk(-1, 0, 1), createChunk(0, 0, 1), createChunk(1, 0, 1)}; ChunkViewCore chunkView = new ChunkViewCoreImpl(chunks, Region3i.createFromCenterExtents(new Vector3i(0, 0, 0), new Vector3i(1, 0, 1)), new Vector3i(1, 0, 1), airBlock); assertEquals(solidBlock, chunkView.getBlock(-1, 0, -1)); }
@Test public void testOffsetWorldView() { Chunk chunk = createChunk(0, 0, 0); chunk.setBlock(new Vector3i(0, 0, 0), solidBlock); Chunk[] chunks = new Chunk[]{createChunk(-1, 0, -1), createChunk(0, 0, -1), createChunk(1, 0, -1), createChunk(-1, 0, 0), chunk, createChunk(1, 0, 0), createChunk(-1, 0, 1), createChunk(0, 0, 1), createChunk(1, 0, 1)}; ChunkViewCore chunkView = new ChunkViewCoreImpl(chunks, Region3i.createFromCenterExtents(new Vector3i(0, 0, 0), new Vector3i(1, 0, 1)), new Vector3i(1, 0, 1), airBlock); assertEquals(solidBlock, chunkView.getBlock(0, 0, 0)); }
@Test public void testOffsetWorldViewAfterMainChunk() { Chunk chunk = createChunk(0, 0, 0); chunk.setBlock(new Vector3i(0, 0, 0), solidBlock); Chunk[] chunks = new Chunk[]{createChunk(-1, 0, -1), createChunk(0, 0, -1), createChunk(1, 0, -1), createChunk(-1, 0, 0), createChunk(0, 0, 0), createChunk(1, 0, 0), createChunk(-1, 0, 1), createChunk(0, 0, 1), chunk}; ChunkViewCore chunkView = new ChunkViewCoreImpl(chunks, Region3i.createFromCenterExtents(new Vector3i(0, 0, 0), new Vector3i(1, 0, 1)), new Vector3i(1, 0, 1), airBlock); assertEquals(solidBlock, chunkView.getBlock(ChunkConstants.SIZE_X, 0, ChunkConstants.SIZE_Z)); }