package net.minecraft.world.gen.feature;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class WorldGenIceSpike extends WorldGenerator
{
private static final String __OBFID = "CL_00000417";
public boolean generate(World worldIn, Random p_180709_2_, BlockPos p_180709_3_)
{
while (worldIn.isAirBlock(p_180709_3_) && p_180709_3_.getY() > 2)
{
p_180709_3_ = p_180709_3_.offsetDown();
}
if (worldIn.getBlockState(p_180709_3_).getBlock() != Blocks.snow)
{
return false;
}
else
{
p_180709_3_ = p_180709_3_.offsetUp(p_180709_2_.nextInt(4));
int var4 = p_180709_2_.nextInt(4) + 7;
int var5 = var4 / 4 + p_180709_2_.nextInt(2);
if (var5 > 1 && p_180709_2_.nextInt(60) == 0)
{
p_180709_3_ = p_180709_3_.offsetUp(10 + p_180709_2_.nextInt(30));
}
int var6;
int var8;
for (var6 = 0; var6 < var4; ++var6)
{
float var7 = (1.0F - (float)var6 / (float)var4) * (float)var5;
var8 = MathHelper.ceiling_float_int(var7);
for (int var9 = -var8; var9 <= var8; ++var9)
{
float var10 = (float)MathHelper.abs_int(var9) - 0.25F;
for (int var11 = -var8; var11 <= var8; ++var11)
{
float var12 = (float)MathHelper.abs_int(var11) - 0.25F;
if ((var9 == 0 && var11 == 0 || var10 * var10 + var12 * var12 <= var7 * var7) && (var9 != -var8 && var9 != var8 && var11 != -var8 && var11 != var8 || p_180709_2_.nextFloat() <= 0.75F))
{
Block var13 = worldIn.getBlockState(p_180709_3_.add(var9, var6, var11)).getBlock();
if (var13.getMaterial() == Material.air || var13 == Blocks.dirt || var13 == Blocks.snow || var13 == Blocks.ice)
{
this.func_175906_a(worldIn, p_180709_3_.add(var9, var6, var11), Blocks.packed_ice);
}
if (var6 != 0 && var8 > 1)
{
var13 = worldIn.getBlockState(p_180709_3_.add(var9, -var6, var11)).getBlock();
if (var13.getMaterial() == Material.air || var13 == Blocks.dirt || var13 == Blocks.snow || var13 == Blocks.ice)
{
this.func_175906_a(worldIn, p_180709_3_.add(var9, -var6, var11), Blocks.packed_ice);
}
}
}
}
}
}
var6 = var5 - 1;
if (var6 < 0)
{
var6 = 0;
}
else if (var6 > 1)
{
var6 = 1;
}
for (int var14 = -var6; var14 <= var6; ++var14)
{
var8 = -var6;
while (var8 <= var6)
{
BlockPos var15 = p_180709_3_.add(var14, -1, var8);
int var16 = 50;
if (Math.abs(var14) == 1 && Math.abs(var8) == 1)
{
var16 = p_180709_2_.nextInt(5);
}
while (true)
{
if (var15.getY() > 50)
{
Block var17 = worldIn.getBlockState(var15).getBlock();
if (var17.getMaterial() == Material.air || var17 == Blocks.dirt || var17 == Blocks.snow || var17 == Blocks.ice || var17 == Blocks.packed_ice)
{
this.func_175906_a(worldIn, var15, Blocks.packed_ice);
var15 = var15.offsetDown();
--var16;
if (var16 <= 0)
{
var15 = var15.offsetDown(p_180709_2_.nextInt(5) + 1);
var16 = p_180709_2_.nextInt(5);
}
continue;
}
}
++var8;
break;
}
}
}
return true;
}
}
}