/// <inheritdoc /> public void AddChunk(ChunkColumn chunk, ChunkCoordinates position, bool doUpdates = false) { //chunk.CalculateHeight(); Chunks.AddOrUpdate( position, coordinates => chunk, (coordinates, column) => { if (!ReferenceEquals(column, chunk)) { column.Dispose(); } return(chunk); }); if (chunk.IsNew) { var chunkpos = new BlockCoordinates(position.X << 4, 0, position.Z << 4); foreach (var ls in chunk.GetLightSources()) { BlockLightCalculations.Enqueue(chunkpos + ls); } //SkyLightCalculations s = new SkyLightCalculations(); //SkyLightCalculator.Calculate(chunk, position); } foreach (var blockEntity in chunk.GetBlockEntities) { var coordinates = new BlockCoordinates(blockEntity.X, blockEntity.Y, blockEntity.Z); //World.SetBlockEntity(coordinates.X, coordinates.Y, coordinates.Z, blockEntity); World.EntityManager.AddBlockEntity(coordinates, blockEntity); } ScheduleChunkUpdate(position, ScheduleType.Full); //UpdateQueue.Enqueue(position); }
/// <inheritdoc /> public bool TryGetChunk(ChunkCoordinates coordinates, out ChunkColumn chunk) { return(Chunks.TryGetValue(coordinates, out chunk)); }
public SkyLightBlockAccess(ChunkManager worldProvider, ChunkColumn chunk) : this(worldProvider, -1) { _chunk = chunk; _coord = new ChunkCoordinates(chunk.X, chunk.Z); }
public void SetSkyLight(BlockCoordinates coordinates, byte skyLight) { ChunkColumn chunk = GetChunk(coordinates, true); chunk?.SetSkyLight(coordinates.X & 0x0f, coordinates.Y & 0xff, coordinates.Z & 0x0f, skyLight); }
public void SetBlock(Block block, bool broadcast = true, bool applyPhysics = true, bool calculateLight = true, ChunkColumn possibleChunk = null) { }
public Block GetBlock(BlockCoordinates coord, ChunkColumn tryChunk = null) { return(null); }
public BlockCoordinates FindBlockPosition(BlockCoordinates coords, out ChunkColumn chunk) { ChunkManager.TryGetChunk(new ChunkCoordinates(coords.X >> 4, coords.Z >> 4), out chunk); return(new BlockCoordinates(coords.X & 0xf, coords.Y & 0xff, coords.Z & 0xf)); }
public void SetBlock(Block block, bool broadcast = true, bool applyPhysics = true, bool calculateLight = true, ChunkColumn possibleChunk = null) { throw new System.NotImplementedException(); }
public BlockCoordinates FindBlockPosition(BlockCoordinates coords, out ChunkColumn chunk) { throw new System.NotImplementedException(); }