public Vector3i getAdjacentPos(Vector3i position) { Vector3i result = new Vector3i(position); result.add(vector3iDir); return result; }
@Override public Vector3i next() { Vector3i result = new Vector3i(next); updateNext(); return result; }
@Override public void setValueAt(Vector3i pos, byte value) { if (!relevantRegion.encompasses(pos)) { throw new IllegalArgumentException("Position out of bounds: " + pos); } lightData.put(new Vector3i(pos), value); }
private Vector3i calcPlayerChunkPos() { final LocalPlayer p = CoreRegistry.get(LocalPlayer.class); if (p != null) { return ChunkMath.calcChunkPos(new Vector3i(p.getPosition())); } return null; }
/** * Create a region with center point and extents size * @param center the center point of region * @param extent the extents size of region * @return a new region base on the center point and extents size */ public static Region3i createFromCenterExtents(BaseVector3i center, int extent) { Vector3i min = new Vector3i(center.x() - extent, center.y() - extent, center.z() - extent); Vector3i max = new Vector3i(center.x() + extent, center.y() + extent, center.z() + extent); return createFromMinMax(min, max); }
private boolean canAttachTo(Vector3i doorPos, Side side) { Vector3i adjacentBlockPos = new Vector3i(doorPos); adjacentBlockPos.add(side.getVector3i()); Block adjacentBlock = worldProvider.getBlock(adjacentBlockPos); return adjacentBlock.isAttachmentAllowed(); }
@Test public void testAddWeakLightNextToStrongLight() { StubPropagatorWorldView worldView = new StubPropagatorWorldView(testingRegion, air); worldView.setBlockAt(new Vector3i(0, 0, 0), fullLight); BatchPropagator propagator = new StandardBatchPropagator(lightRules, worldView); propagator.process(new BlockChange(new Vector3i(0, 0, 0), air, fullLight)); worldView.setBlockAt(new Vector3i(1, 0, 0), weakLight); propagator.process(new BlockChange(new Vector3i(1, 0, 0), air, weakLight)); assertEquals(14, worldView.getValueAt(new Vector3i(1, 0, 0))); }
@Override public ChunkViewCore getSubviewAroundBlock(Vector3i blockPos, int extent) { Region3i region = ChunkMath.getChunkRegionAroundWorldPos(blockPos, extent); return createWorldView(region, new Vector3i(-region.min().x, -region.min().y, -region.min().z)); }
@Override public ChunkViewCore getSubviewAroundBlock(Vector3i blockPos, int extent) { Region3i region = ChunkMath.getChunkRegionAroundWorldPos(blockPos, extent); return createWorldView(region, new Vector3i(-region.min().x, -region.min().y, -region.min().z)); }
@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)); }
protected final Vector3i worldToRelative(int x, int y, int z) { return new Vector3i( x - worldRegion.minX() + relativeRegion.minX(), y - worldRegion.minY() + relativeRegion.minY(), z - worldRegion.minZ() + relativeRegion.minZ()); }
protected final Vector3i relativeToWorld(int x, int y, int z) { return new Vector3i( x - relativeRegion.minX() + worldRegion.minX(), y - relativeRegion.minY() + worldRegion.minY(), z - relativeRegion.minZ() + worldRegion.minZ()); }
/** * Chunk position of the player. * * @return The player offset on the x-axis */ private Vector3i calcCamChunkOffset() { return new Vector3i((int) (getActiveCamera().getPosition().x / ChunkConstants.SIZE_X), (int) (getActiveCamera().getPosition().y / ChunkConstants.SIZE_Y), (int) (getActiveCamera().getPosition().z / ChunkConstants.SIZE_Z)); }
@Test public void testSetCopy() { Vector3i v = new Vector3i(); v.set(v2); assertEquals(v2, v); }
@Test public void testTwoDistanceIteration() { Set<Vector3i> iter = Sets.newHashSet(Diamond3iIterator.iterate(Vector3i.zero(), 2)); assertEquals(25, iter.size()); for (Vector3i pos : iter) { assertTrue(pos.gridDistance(new Vector3i()) <= 2); } }
@Test public void testPrefabUpdatedWhenBlockChanged() { worldProvider.setBlock(Vector3i.zero(), blockWithString); assertEquals(blockWithString.getPrefab().get().getName(), worldProvider.getBlockEntityAt(new Vector3i(0, 0, 0)).getParentPrefab().getName()); worldProvider.setBlock(Vector3i.zero(), blockWithDifferentString); assertEquals(blockWithDifferentString.getPrefab().get().getName(), worldProvider.getBlockEntityAt(new Vector3i(0, 0, 0)).getParentPrefab().getName()); }
@Test public void testEntityMissingComponentsAddedBeforeCleanUp() { worldStub.setBlock(Vector3i.zero(), blockWithString); EntityRef entity = worldProvider.getBlockEntityAt(new Vector3i(0, 0, 0)); entity.removeComponent(StringComponent.class); LifecycleEventChecker checker = new LifecycleEventChecker(entityManager.getEventSystem(), StringComponent.class); worldProvider.update(1.0f); assertEquals(Lists.newArrayList(new EventInfo(OnAddedComponent.newInstance(), entity), new EventInfo(OnActivatedComponent.newInstance(), entity)), checker.receivedEvents); }
@Test public void testMetworkComponentAddedWhenChangedToNonTemporary() { LifecycleEventChecker checker = new LifecycleEventChecker(entityManager.getEventSystem(), NetworkComponent.class); EntityRef entity = worldProvider.getBlockEntityAt(new Vector3i(0, 0, 0)); entity.addComponent(new RetainedOnBlockChangeComponent(2)); assertEquals(Lists.newArrayList(new EventInfo(OnAddedComponent.newInstance(), entity), new EventInfo(OnActivatedComponent.newInstance(), entity)), checker.receivedEvents); assertTrue(entity.hasComponent(NetworkComponent.class)); }
@Test public void testEntityBecomesTemporaryIfForceBlockActiveComponentRemoved() { EntityRef blockEntity = worldProvider.getBlockEntityAt(new Vector3i(0, 0, 0)); blockEntity.addComponent(new ForceBlockActiveComponent()); worldProvider.update(1.0f); blockEntity.removeComponent(ForceBlockActiveComponent.class); worldProvider.update(1.0f); assertFalse(blockEntity.exists()); assertFalse(blockEntity.isActive()); }