package net.minecraft.world.gen.feature;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
public class WorldGenBigMushroom extends WorldGenerator
{
/** The mushroom type. 0 for brown, 1 for red. */
private int mushroomType = -1;
public WorldGenBigMushroom(int par1)
{
super(true);
this.mushroomType = par1;
}
public WorldGenBigMushroom()
{
super(false);
}
public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
{
int var6 = par2Random.nextInt(2);
if (this.mushroomType >= 0)
{
var6 = this.mushroomType;
}
int var7 = par2Random.nextInt(3) + 4;
boolean var8 = true;
if (par4 >= 1 && par4 + var7 + 1 < 256)
{
int var9;
int var11;
int var12;
int var13;
for (var9 = par4; var9 <= par4 + 1 + var7; ++var9)
{
byte var10 = 3;
if (var9 <= par4 + 3)
{
var10 = 0;
}
for (var11 = par3 - var10; var11 <= par3 + var10 && var8; ++var11)
{
for (var12 = par5 - var10; var12 <= par5 + var10 && var8; ++var12)
{
if (var9 >= 0 && var9 < 256)
{
var13 = par1World.getBlockId(var11, var9, var12);
Block block = Block.blocksList[var13];
if (var13 != 0 && block != null && !block.isLeaves(par1World, var11, var9, var12))
{
var8 = false;
}
}
else
{
var8 = false;
}
}
}
}
if (!var8)
{
return false;
}
else
{
var9 = par1World.getBlockId(par3, par4 - 1, par5);
if (var9 != Block.dirt.blockID && var9 != Block.grass.blockID && var9 != Block.mycelium.blockID)
{
return false;
}
else
{
int var16 = par4 + var7;
if (var6 == 1)
{
var16 = par4 + var7 - 3;
}
for (var11 = var16; var11 <= par4 + var7; ++var11)
{
var12 = 1;
if (var11 < par4 + var7)
{
++var12;
}
if (var6 == 0)
{
var12 = 3;
}
for (var13 = par3 - var12; var13 <= par3 + var12; ++var13)
{
for (int var14 = par5 - var12; var14 <= par5 + var12; ++var14)
{
int var15 = 5;
if (var13 == par3 - var12)
{
--var15;
}
if (var13 == par3 + var12)
{
++var15;
}
if (var14 == par5 - var12)
{
var15 -= 3;
}
if (var14 == par5 + var12)
{
var15 += 3;
}
if (var6 == 0 || var11 < par4 + var7)
{
if ((var13 == par3 - var12 || var13 == par3 + var12) && (var14 == par5 - var12 || var14 == par5 + var12))
{
continue;
}
if (var13 == par3 - (var12 - 1) && var14 == par5 - var12)
{
var15 = 1;
}
if (var13 == par3 - var12 && var14 == par5 - (var12 - 1))
{
var15 = 1;
}
if (var13 == par3 + (var12 - 1) && var14 == par5 - var12)
{
var15 = 3;
}
if (var13 == par3 + var12 && var14 == par5 - (var12 - 1))
{
var15 = 3;
}
if (var13 == par3 - (var12 - 1) && var14 == par5 + var12)
{
var15 = 7;
}
if (var13 == par3 - var12 && var14 == par5 + (var12 - 1))
{
var15 = 7;
}
if (var13 == par3 + (var12 - 1) && var14 == par5 + var12)
{
var15 = 9;
}
if (var13 == par3 + var12 && var14 == par5 + (var12 - 1))
{
var15 = 9;
}
}
if (var15 == 5 && var11 < par4 + var7)
{
var15 = 0;
}
Block block = Block.blocksList[par1World.getBlockId(var13, var11, var14)];
if ((var15 != 0 || par4 >= par4 + var7 - 1) && (block == null || block.canBeReplacedByLeaves(par1World, var13, var11, var14)))
{
this.setBlockAndMetadata(par1World, var13, var11, var14, Block.mushroomCapBrown.blockID + var6, var15);
}
}
}
}
for (var11 = 0; var11 < var7; ++var11)
{
var12 = par1World.getBlockId(par3, par4 + var11, par5);
Block block = Block.blocksList[var12];
if (block == null || block.canBeReplacedByLeaves(par1World, par3, par4 + var11, par5))
{
this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.mushroomCapBrown.blockID + var6, 10);
}
}
return true;
}
}
}
else
{
return false;
}
}
}