package net.minecraft.world.gen.structure;
import java.util.Random;
import net.minecraft.world.World;
abstract class ComponentScatteredFeature extends StructureComponent
{
/** The size of the bounding box for this feature in the X axis */
protected final int scatteredFeatureSizeX;
/** The size of the bounding box for this feature in the Y axis */
protected final int scatteredFeatureSizeY;
/** The size of the bounding box for this feature in the Z axis */
protected final int scatteredFeatureSizeZ;
protected int field_74936_d = -1;
protected ComponentScatteredFeature(Random par1Random, int par2, int par3, int par4, int par5, int par6, int par7)
{
super(0);
this.scatteredFeatureSizeX = par5;
this.scatteredFeatureSizeY = par6;
this.scatteredFeatureSizeZ = par7;
this.coordBaseMode = par1Random.nextInt(4);
switch (this.coordBaseMode)
{
case 0:
case 2:
this.boundingBox = new StructureBoundingBox(par2, par3, par4, par2 + par5 - 1, par3 + par6 - 1, par4 + par7 - 1);
break;
default:
this.boundingBox = new StructureBoundingBox(par2, par3, par4, par2 + par7 - 1, par3 + par6 - 1, par4 + par5 - 1);
}
}
protected boolean func_74935_a(World par1World, StructureBoundingBox par2StructureBoundingBox, int par3)
{
if (this.field_74936_d >= 0)
{
return true;
}
else
{
int var4 = 0;
int var5 = 0;
for (int var6 = this.boundingBox.minZ; var6 <= this.boundingBox.maxZ; ++var6)
{
for (int var7 = this.boundingBox.minX; var7 <= this.boundingBox.maxX; ++var7)
{
if (par2StructureBoundingBox.isVecInside(var7, 64, var6))
{
var4 += Math.max(par1World.getTopSolidOrLiquidBlock(var7, var6), par1World.provider.getAverageGroundLevel());
++var5;
}
}
}
if (var5 == 0)
{
return false;
}
else
{
this.field_74936_d = var4 / var5;
this.boundingBox.offset(0, this.field_74936_d - this.boundingBox.minY + par3, 0);
return true;
}
}
}
}