package micdoodle8.mods.galacticraft.core.world.gen;
import micdoodle8.mods.galacticraft.core.GCBlocks;
import micdoodle8.mods.galacticraft.core.tile.IMultiBlock;
import net.minecraft.block.BlockFalling;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.IProgressUpdate;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.ChunkPrimer;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.ChunkProviderGenerate;
import java.util.Random;
public class ChunkProviderOrbit extends ChunkProviderGenerate
{
private final Random rand;
private final World worldObj;
public ChunkProviderOrbit(World par1World, long par2, boolean par4)
{
super(par1World, par2, par4, "");
this.rand = new Random(par2);
this.worldObj = par1World;
}
@Override
public boolean unloadQueuedChunks()
{
return false;
}
@Override
public int getLoadedChunkCount()
{
return 0;
}
@Override
public boolean saveChunks(boolean var1, IProgressUpdate var2)
{
return true;
}
@Override
public boolean canSave()
{
return true;
}
@Override
public Chunk provideChunk(int par1, int par2)
{
ChunkPrimer chunkprimer = new ChunkPrimer();
this.rand.setSeed(par1 * 341873128712L + par2 * 132897987541L);
final Chunk var4 = new Chunk(this.worldObj, chunkprimer, par1, par2);
final byte[] biomesArray = var4.getBiomeArray();
for (int i = 0; i < biomesArray.length; ++i)
{
biomesArray[i] = (byte) BiomeGenBaseOrbit.space.biomeID;
}
var4.generateSkylightMap();
return var4;
}
@Override
public boolean chunkExists(int par1, int par2)
{
return true;
}
@Override
public void populate(IChunkProvider par1IChunkProvider, int par2, int par3)
{
BlockFalling.fallInstantly = true;
final int k = par2 * 16;
final int l = par3 * 16;
this.rand.setSeed(this.worldObj.getSeed());
final long i1 = this.rand.nextLong() / 2L * 2L + 1L;
final long j1 = this.rand.nextLong() / 2L * 2L + 1L;
this.rand.setSeed(par2 * i1 + par3 * j1 ^ this.worldObj.getSeed());
if (k == 0 && l == 0)
{
BlockPos pos = new BlockPos(k, 64, l);
this.worldObj.setBlockState(pos, GCBlocks.spaceStationBase.getDefaultState(), 2);
final TileEntity var8 = this.worldObj.getTileEntity(pos);
if (var8 instanceof IMultiBlock)
{
((IMultiBlock) var8).onCreate(this.worldObj, pos);
}
new WorldGenSpaceStation().generate(this.worldObj, this.rand, new BlockPos(k - 10, 62, l - 3));
}
BlockFalling.fallInstantly = false;
}
@Override
public String makeString()
{
return "OrbitLevelSource";
}
}