package net.minecraft.server;

import java.util.Random;

public class WorldGenGroundBush extends WorldGenTrees {

    private final IBlockData a;
    private final IBlockData b;

    public WorldGenGroundBush(IBlockData iblockdata, IBlockData iblockdata1) {
        super(false);
        this.b = iblockdata;
        this.a = iblockdata1;
    }

    public boolean generate(World world, Random random, BlockPosition blockposition) {
        for (IBlockData iblockdata = world.getType(blockposition); (iblockdata.getMaterial() == Material.AIR || iblockdata.getMaterial() == Material.LEAVES) && blockposition.getY() > 0; iblockdata = world.getType(blockposition)) {
            blockposition = blockposition.down();
        }

        Block block = world.getType(blockposition).getBlock();

        if (block == Blocks.DIRT || block == Blocks.GRASS) {
            blockposition = blockposition.up();
            this.a(world, blockposition, this.b);

            for (int i = blockposition.getY(); i <= blockposition.getY() + 2; ++i) {
                int j = i - blockposition.getY();
                int k = 2 - j;

                for (int l = blockposition.getX() - k; l <= blockposition.getX() + k; ++l) {
                    int i1 = l - blockposition.getX();

                    for (int j1 = blockposition.getZ() - k; j1 <= blockposition.getZ() + k; ++j1) {
                        int k1 = j1 - blockposition.getZ();

                        if (Math.abs(i1) != k || Math.abs(k1) != k || random.nextInt(2) != 0) {
                            BlockPosition blockposition1 = new BlockPosition(l, i, j1);
                            Material material = world.getType(blockposition1).getMaterial();

                            if (material == Material.AIR || material == Material.LEAVES) {
                                this.a(world, blockposition1, this.a);
                            }
                        }
                    }
                }
            }
        // CraftBukkit start - Return false if gen was unsuccessful
        } else {
            return false;
        }
        // CraftBukkit end


        return true;
    }
}
