Пример #1
0
        private void DestroyBlock(Vector4 pos)
        {
            PositionBlock posBlock = PositionBlock.FromVector(pos);
            Block         block    = Block.FromId(World.Instance.GetBlock(posBlock));

            block.OnDestroy(posBlock);
            World.Instance.SetBlock(posBlock, 0);
            PositionChunk posChunk = PositionChunk.CreateFrom(posBlock);
            Chunk         chunk    = World.Instance.GetChunk(posChunk);

            chunk.InvalidateMeAndNeighbors();
        }
Пример #2
0
        private void UseBlockOnBlock()
        {
            Vector4       pos      = World.Instance.PlayerVoxelTrace.BuildPosition;
            PositionBlock posBlock = new PositionBlock((int)pos.X, (int)pos.Y, (int)pos.Z);

            World.Instance.SetBlock(posBlock, SelectedStack.Id);
            PositionChunk posChunk = PositionChunk.CreateFrom(posBlock);
            Chunk         chunk    = World.Instance.GetChunk(posChunk);

            chunk.InvalidateMeAndNeighbors();
            SelectedStack.Remove(1);
            NeedsRest();
        }
Пример #3
0
        private void UseItemOnBlock()
        {
            // used on a block!
            Vector4       pos      = World.Instance.PlayerVoxelTrace.ImpactPosition;
            PositionBlock posBlock = new PositionBlock((int)pos.X, (int)pos.Y, (int)pos.Z);
            Item          item     = Item.FromId(SelectedStack.Id);

            if (item.OnUseOnBlock(posBlock))
            {
                // here if world is changed
                PositionChunk posChunk = PositionChunk.CreateFrom(posBlock);
                Chunk         chunk    = World.Instance.GetChunk(posChunk);
                chunk.InvalidateMeAndNeighbors();
                if (item.Consumable)
                {
                    SelectedStack.Remove(1);
                }
            }
        }