package com.vapourdrive.harderstart.world;
import java.util.Random;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
import com.vapourdrive.harderstart.blocks.HS_Blocks;
import com.vapourdrive.harderstart.items.GemRef;
public class GeodeGenerator extends WorldGenerator
{
@Override
public boolean generate(World world, Random rand, int x, int y, int z)
{
int size = world.rand.nextInt(2) + 1;
generateShell(world, rand, x, y, z, size);
return false;
}
public void generateShell(World world, Random rand, int x, int y, int z, int size)
{
int radius = (5 + size);
int sqrInner = (((1 + size) * (size)) * 3);
int sqrOuter = (((2 + size) * (2 + size)) * 3);
int yThresh = (2 + size);
for (int i = -radius; i < radius; i++)
{
for (int j = -(radius - 1); j < (radius - 1); j++)
{
for (int k = -radius; k < radius; k++)
{
int distVal = (i * i + j * j + k * k);
if (distVal > sqrInner && distVal < sqrOuter && (j >= -yThresh && j <= yThresh))
{
world.setBlock(x + i, y + j, z + k, Blocks.obsidian, 0, 1);
}
else if (distVal < sqrOuter && (j == -yThresh || j == yThresh || j == -yThresh - 1 || j == yThresh + 1))
{
world.setBlock(x + i, y + j, z + k, Blocks.obsidian, 0, 1);
}
else if (distVal < sqrInner && distVal > 9)
{
placeGenBlock(world, rand, x + i, y + j, z + k, distVal);
}
}
}
}
return;
}
public void placeGenBlock(World world, Random rand, int x, int y, int z, int distVal)
{
if (rand.nextInt(distVal) > 7)
{
int meta = rand.nextInt(GemRef.gemNames.length);
world.setBlock(x, y, z, HS_Blocks.GemRock, meta, 1);
}
}
}