Exemple #1
0
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            if (BlockData.BlockMaterial(world.GetBlock(i, j, k)) != Material.Water)
            {
                return(false);
            }
            int l  = random.nextInt(numberOfBlocks - 2) + 2;
            int i1 = 1;

            for (int j1 = i - l; j1 <= i + l; j1++)
            {
                for (int k1 = k - l; k1 <= k + l; k1++)
                {
                    int l1 = j1 - i;
                    int i2 = k1 - k;
                    if (l1 * l1 + i2 * i2 > l * l)
                    {
                        continue;
                    }
                    for (int j2 = j - i1; j2 <= j + i1; j2++)
                    {
                        int k2 = world.GetBlock(j1, j2, k1);
                        if (k2 == (byte)Blocks.Dirt || k2 == (byte)Blocks.ClayBlock)
                        {
                            world.SetBlock(j1, j2, k1, (byte)clayBlockId);
                        }
                    }
                }
            }

            return(true);
        }
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            if (BlockData.BlockMaterial(world.GetBlock(i, j, k)) != Material.Water)
            {
                return(false);
            }
            int  l     = random.nextInt(field_35290_b - 2) + 2;
            byte byte0 = 2;

            for (int i1 = i - l; i1 <= i + l; i1++)
            {
                for (int j1 = k - l; j1 <= k + l; j1++)
                {
                    int k1 = i1 - i;
                    int l1 = j1 - k;
                    if (k1 * k1 + l1 * l1 > l * l)
                    {
                        continue;
                    }
                    for (int i2 = j - byte0; i2 <= j + byte0; i2++)
                    {
                        int j2 = world.GetBlock(i1, i2, j1);
                        if (j2 == (byte)Blocks.Dirt || j2 == (byte)Blocks.Grass)
                        {
                            world.SetBlock(i1, i2, j1, (byte)field_35291_a);
                        }
                    }
                }
            }

            return(true);
        }
Exemple #3
0
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            for (int l = 0; l < 20; l++)
            {
                int i1 = (i + random.nextInt(4)) - random.nextInt(4);
                int j1 = j;
                int k1 = (k + random.nextInt(4)) - random.nextInt(4);
                if (!world.IsAirBlock(i1, j1, k1) || BlockData.BlockMaterial(world.GetBlock(i1 - 1, j1 - 1, k1)) != Material.Water && BlockData.BlockMaterial(world.GetBlock(i1 + 1, j1 - 1, k1)) != Material.Water && BlockData.BlockMaterial(world.GetBlock(i1, j1 - 1, k1 - 1)) != Material.Water && BlockData.BlockMaterial(world.GetBlock(i1, j1 - 1, k1 + 1)) != Material.Water)
                {
                    continue;
                }
                int l1 = 2 + random.nextInt(random.nextInt(3) + 1);
                for (int i2 = 0; i2 < l1; i2++)
                {
                    if (world.CanBlockStay((byte)Blocks.SugarCane, i1, j1 + i2, k1))
                    {
                        world.SetBlock(i1, j1 + i2, k1, (byte)Blocks.SugarCane);
                    }
                }
            }

            return(true);
        }
Exemple #4
0
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            i -= 8;
            for (k -= 8; j > 0 && world.IsAirBlock(i, j, k); j--)
            {
            }
            j -= 4;
            bool[] aflag = new bool[2048];
            int    l     = random.nextInt(4) + 4;

            for (int i1 = 0; i1 < l; i1++)
            {
                double d  = random.nextDouble() * 6D + 3D;
                double d1 = random.nextDouble() * 4D + 2D;
                double d2 = random.nextDouble() * 6D + 3D;
                double d3 = random.nextDouble() * (16D - d - 2D) + 1.0D + d / 2D;
                double d4 = random.nextDouble() * (8D - d1 - 4D) + 2D + d1 / 2D;
                double d5 = random.nextDouble() * (16D - d2 - 2D) + 1.0D + d2 / 2D;
                for (int j4 = 1; j4 < 15; j4++)
                {
                    for (int k4 = 1; k4 < 15; k4++)
                    {
                        for (int l4 = 1; l4 < 7; l4++)
                        {
                            double d6 = ((double)j4 - d3) / (d / 2D);
                            double d7 = ((double)l4 - d4) / (d1 / 2D);
                            double d8 = ((double)k4 - d5) / (d2 / 2D);
                            double d9 = d6 * d6 + d7 * d7 + d8 * d8;
                            if (d9 < 1.0D)
                            {
                                aflag[(j4 * 16 + k4) * 8 + l4] = true;
                            }
                        }
                    }
                }
            }

            for (int j1 = 0; j1 < 16; j1++)
            {
                for (int j2 = 0; j2 < 16; j2++)
                {
                    for (int j3 = 0; j3 < 8; j3++)
                    {
                        bool flag = !aflag[(j1 * 16 + j2) * 8 + j3] && (j1 < 15 && aflag[((j1 + 1) * 16 + j2) * 8 + j3] || j1 > 0 && aflag[((j1 - 1) * 16 + j2) * 8 + j3] || j2 < 15 && aflag[(j1 * 16 + (j2 + 1)) * 8 + j3] || j2 > 0 && aflag[(j1 * 16 + (j2 - 1)) * 8 + j3] || j3 < 7 && aflag[(j1 * 16 + j2) * 8 + (j3 + 1)] || j3 > 0 && aflag[(j1 * 16 + j2) * 8 + (j3 - 1)]);
                        if (!flag)
                        {
                            continue;
                        }
                        byte block = world.GetBlock(i + j1, j + j3, k + j2);
                        if (j3 >= 4 && BlockData.IsLiquid(block))
                        {
                            return(false);
                        }
                        if (j3 < 4 && !BlockData.IsSolid(block) && world.GetBlock(i + j1, j + j3, k + j2) != blockIndex)
                        {
                            return(false);
                        }
                    }
                }
            }

            for (int k1 = 0; k1 < 16; k1++)
            {
                for (int k2 = 0; k2 < 16; k2++)
                {
                    for (int k3 = 0; k3 < 8; k3++)
                    {
                        if (aflag[(k1 * 16 + k2) * 8 + k3])
                        {
                            world.SetBlock(i + k1, j + k3, k + k2, (byte)(k3 < 4 ? blockIndex : 0));
                        }
                    }
                }
            }

            for (int l1 = 0; l1 < 16; l1++)
            {
                for (int l2 = 0; l2 < 16; l2++)
                {
                    for (int l3 = 4; l3 < 8; l3++)
                    {
                        if (aflag[(l1 * 16 + l2) * 8 + l3] && world.GetBlock(i + l1, (j + l3) - 1, k + l2) == (byte)Blocks.Dirt /*&& world.getSavedLightValue(EnumSkyBlock.Sky, i + l1, j + l3, k + l2) > 0*/) // TODO: Lighting stuffs!
                        {
                            world.SetBlock(i + l1, (j + l3) - 1, k + l2, (byte)Blocks.Grass);
                        }
                    }
                }
            }

            if (BlockData.BlockMaterial((byte)blockIndex) == Material.Lava)
            {
                for (int i2 = 0; i2 < 16; i2++)
                {
                    for (int i3 = 0; i3 < 16; i3++)
                    {
                        for (int i4 = 0; i4 < 8; i4++)
                        {
                            bool flag1 = !aflag[(i2 * 16 + i3) * 8 + i4] && (i2 < 15 && aflag[((i2 + 1) * 16 + i3) * 8 + i4] || i2 > 0 && aflag[((i2 - 1) * 16 + i3) * 8 + i4] || i3 < 15 && aflag[(i2 * 16 + (i3 + 1)) * 8 + i4] || i3 > 0 && aflag[(i2 * 16 + (i3 - 1)) * 8 + i4] || i4 < 7 && aflag[(i2 * 16 + i3) * 8 + (i4 + 1)] || i4 > 0 && aflag[(i2 * 16 + i3) * 8 + (i4 - 1)]);
                            if (flag1 && (i4 < 4 || random.nextInt(2) != 0) && BlockData.IsSolid(world.GetBlock(i + i2, j + i4, k + i3)))
                            {
                                world.SetBlock(i + i2, j + i4, k + i3, (byte)Blocks.Stone);
                            }
                        }
                    }
                }
            }
            return(true);
        }
Exemple #5
0
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            int  l;
            bool flag;

label0:
            {
                l = random.nextInt(4) + 5;
                for (; BlockData.BlockMaterial(world.GetBlock(i, j - 1, k)) == Material.Water; j--)
                {
                }
                flag = true;
                bool label0 = false;
                if (j >= 1)
                {
                    if (j + l + 1 <= 128)
                    {
                        label0 = true;
                    }
                }
                if (!label0)
                {
                    return(false);
                }
            }
label1:
            {
                for (int i1 = j; i1 <= j + 1 + l; i1++)
                {
                    byte byte0 = 1;
                    if (i1 == j)
                    {
                        byte0 = 0;
                    }
                    if (i1 >= (j + 1 + l) - 2)
                    {
                        byte0 = 3;
                    }
                    for (int j2 = i - byte0; j2 <= i + byte0 && flag; j2++)
                    {
                        for (int j3 = k - byte0; j3 <= k + byte0 && flag; j3++)
                        {
                            if (i1 >= 0)
                            {
                                if (i1 < 128)
                                {
                                    int i4 = world.GetBlock(j2, i1, j3);
                                    if (i4 == 0 || i4 == (byte)Blocks.Leaves)
                                    {
                                        continue;
                                    }
                                    if (i4 == (byte)Blocks.SWater || i4 == (byte)Blocks.AWater)
                                    {
                                        if (i1 > j)
                                        {
                                            flag = false;
                                        }
                                    }
                                    else
                                    {
                                        flag = false;
                                    }
                                    continue;
                                }
                            }
                            flag = false;
                        }
                    }
                }

                if (!flag)
                {
                    return(false);
                }
                int  j1     = world.GetBlock(i, j - 1, k);
                bool label1 = false;
                if (j1 == (byte)Blocks.Grass || j1 == (byte)Blocks.Dirt)
                {
                    if (j < 128 - l - 1)
                    {
                        label1 = true;
                    }
                }
                if (!label1)
                {
                    return(false);
                }
            }
            world.SetBlock(i, j - 1, k, (byte)Blocks.Dirt);
            for (int k1 = (j - 3) + l; k1 <= j + l; k1++)
            {
                int k2 = k1 - (j + l);
                int k3 = 2 - k2 / 2;
                for (int j4 = i - k3; j4 <= i + k3; j4++)
                {
                    int l4 = j4 - i;
                    for (int j5 = k - k3; j5 <= k + k3; j5++)
                    {
                        int k5 = j5 - k;
                        if ((java.lang.Math.abs(l4) != k3 || java.lang.Math.abs(k5) != k3 || random.nextInt(2) != 0 && k2 != 0) && Chunk.LightOpacity[world.GetBlock(j4, k1, j5)] < 0xf)
                        {
                            world.SetBlock(j4, k1, j5, (byte)Blocks.Leaves);
                        }
                    }
                }
            }

            for (int l1 = 0; l1 < l; l1++)
            {
                int l2 = world.GetBlock(i, j + l1, k);
                if (l2 == 0 || l2 == (byte)Blocks.Leaves || l2 == (byte)Blocks.AWater || l2 == (byte)Blocks.SWater)
                {
                    world.SetBlock(i, j + l1, k, (byte)Blocks.Wood);
                }
            }

            for (int i2 = (j - 3) + l; i2 <= j + l; i2++)
            {
                int i3 = i2 - (j + l);
                int l3 = 2 - i3 / 2;
                for (int k4 = i - l3; k4 <= i + l3; k4++)
                {
                    for (int i5 = k - l3; i5 <= k + l3; i5++)
                    {
                        if (world.GetBlock(k4, i2, i5) != (byte)Blocks.Leaves)
                        {
                            continue;
                        }
                        if (random.nextInt(4) == 0 && world.GetBlock(k4 - 1, i2, i5) == 0)
                        {
                            func_35292_a(world, k4 - 1, i2, i5, 8);
                        }
                        if (random.nextInt(4) == 0 && world.GetBlock(k4 + 1, i2, i5) == 0)
                        {
                            func_35292_a(world, k4 + 1, i2, i5, 2);
                        }
                        if (random.nextInt(4) == 0 && world.GetBlock(k4, i2, i5 - 1) == 0)
                        {
                            func_35292_a(world, k4, i2, i5 - 1, 1);
                        }
                        if (random.nextInt(4) == 0 && world.GetBlock(k4, i2, i5 + 1) == 0)
                        {
                            func_35292_a(world, k4, i2, i5 + 1, 4);
                        }
                    }
                }
            }

            return(true);
        }