public void SetBlock(Block block, bool broadcast = true, bool applyPhysics = true) { var chunk = Generator.GenerateChunkColumn(new ChunkCoordinates((int)block.Coordinates.X >> 4, (int)block.Coordinates.Z >> 4)); chunk.SetBlock((int)block.Coordinates.X & 0x0f, (int)block.Coordinates.Y & 0x7f, (int)block.Coordinates.Z & 0x0f, block); chunk.IsDirty = true; if (applyPhysics) { ApplyPhysics((int)block.Coordinates.X, (int)block.Coordinates.Y, (int)block.Coordinates.Z); } if (!broadcast) { return; } BlockChange.Broadcast(block, this); }
public override void SetBlock(Block block, Level level, bool broadcast) { ChunkColumn c; lock (ChunkCache) { if ( !ChunkCache.TryGetValue(new Tuple <int, int>((int)block.Coordinates.X >> 4, (int)block.Coordinates.Z >> 4), out c)) { throw new Exception("No chunk found!"); } } c.SetBlock(((int)block.Coordinates.X & 0x0f), ((int)block.Coordinates.Y & 0x7f), ((int)block.Coordinates.Z & 0x0f), block); if (!broadcast) { return; } BlockChange.Broadcast(block, level); }