Exemple #1
0
 protected void UpdateBlocks(Level world)
 {
     world.GetBlock(Coordinates.BlockUp()).BlockUpdate(world, Coordinates);
     world.GetBlock(Coordinates.BlockDown()).BlockUpdate(world, Coordinates);
     world.GetBlock(Coordinates.BlockWest()).BlockUpdate(world, Coordinates);
     world.GetBlock(Coordinates.BlockEast()).BlockUpdate(world, Coordinates);
     world.GetBlock(Coordinates.BlockSouth()).BlockUpdate(world, Coordinates);
     world.GetBlock(Coordinates.BlockNorth()).BlockUpdate(world, Coordinates);
 }
Exemple #2
0
        public override void DoPhysics(Level level)
        {
            if (level.GameMode == GameMode.Creative)
            {
                return;
            }

            if (level.GetSubtractedLight(Coordinates.BlockUp()) < 4)
            {
                Block dirt = BlockFactory.GetBlockById(3);
                dirt.Coordinates = Coordinates;
                level.SetBlock(dirt, true, false, false);
            }
        }
Exemple #3
0
        public override void OnTick(Level level, bool isRandom)
        {
            if (level.GameMode == GameMode.Creative)
            {
                return;
            }
            if (!isRandom)
            {
                return;
            }

            var lightLevel = level.GetSubtractedLight(Coordinates.BlockUp());

            if (lightLevel < 4 /* && check opacity */)
            {
                Block dirt = BlockFactory.GetBlockById(3);
                dirt.Coordinates = Coordinates;
                level.SetBlock(dirt, true, false, false);
            }
            else
            {
                if (lightLevel >= 9)
                {
                    Random random = new Random();
                    for (int i = 0; i < 4; i++)
                    {
                        var   coordinates = Coordinates + new BlockCoordinates(random.Next(3) - 1, random.Next(5) - 3, random.Next(3) - 1);
                        Block next        = level.GetBlock(coordinates);
                        if (next is Dirt && next.Metadata == 0)
                        {
                            Block nextUp = level.GetBlock(coordinates.BlockUp());
                            if (nextUp.IsTransparent && (nextUp.BlockLight >= 4 || nextUp.SkyLight >= 4))
                            {
                                level.SetBlock(new Grass {
                                    Coordinates = coordinates
                                });
                            }
                        }
                    }
                }
            }
        }
Exemple #4
0
        public override void BlockUpdate(Level level, BlockCoordinates blockCoordinates)
        {
            bool shouldKeep = true;

            shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockUp()));
            shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockDown()));

            if (Metadata < 2)
            {
                shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockWest()));
                shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockEast()));
            }
            else
            {
                shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockSouth()));
                shouldKeep &= IsValid(level.GetBlock(Coordinates.BlockNorth()));
            }

            if (!shouldKeep)
            {
                Fill(level, Coordinates);
            }
        }