Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }