package com.jared.mysticaltrinkets.world;
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import com.jared.mysticaltrinkets.blocks.MysticalBlocks;
import com.jared.mysticaltrinkets.config.ConfigInfo;
import com.jared.mysticaltrinkets.world.tree.WorldGenOakTree;
import cpw.mods.fml.common.IWorldGenerator;
public class GenerationHandler implements IWorldGenerator {
public boolean gen = true;
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch (world.provider.dimensionId) {
case -1:
generateNether(world, random, chunkX * 16, chunkZ * 16);
break;
case 0:
generateSurface(world, random, chunkX * 16, chunkZ * 16);
break;
case 1:
generateEnd(world, random, chunkX * 16, chunkZ * 16);
break;
case 29:
generateMystical(world, random, chunkX * 16, chunkZ * 16);
break;
}
}
private void generateMystical(World world, Random rand, int chunkX, int chunkZ) {
for (int k = 0; k < ConfigInfo.mysticalOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.mysticalOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.mysticalOre, ConfigInfo.MysticalOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.fireShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.fireShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.burntShardOre, ConfigInfo.fireShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.floatingShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.floatingShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.floatingShardOre, ConfigInfo.floatingShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.natureShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.natureShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.natureShardOre, ConfigInfo.natureShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.waterShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.waterShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.waterShardOre, ConfigInfo.waterShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int i = 0; i < 2; i++) {
int Xcoord1 = chunkX + rand.nextInt(16);
int Ycoord1 = rand.nextInt(90);
int Zcoord1 = chunkZ + rand.nextInt(16);
(new WorldGenOakTree(false, 6, 0, 0, false)).generate(world, rand, Xcoord1, Ycoord1, Zcoord1);
}
int Xcoord1 = chunkX + rand.nextInt(16);
int Ycoord1 = rand.nextInt(80);
int Zcoord1 = chunkZ + rand.nextInt(16);
String biome = world.getBiomeGenForCoords(Xcoord1, Zcoord1).biomeName;
if (!biome.toLowerCase().startsWith("ocean") || !biome.toLowerCase().startsWith("river")) {
if (biome.toLowerCase().startsWith("mystical"))
if (rand.nextInt(50) == 1) {
while (world.isAirBlock(Xcoord1, Ycoord1, Zcoord1)) {
Ycoord1--;
}
while (!world.isAirBlock(Xcoord1, Ycoord1 + 1, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 2, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 3, Zcoord1)) {
Ycoord1++;
}
(new WorldGenMineShaft()).generate(world, rand, Xcoord1, Ycoord1, Zcoord1);
}
}
}
private void generateEnd(World world, Random rand, int chunkX, int chunkZ) {
}
private void generateSurface(World world, Random rand, int chunkX, int chunkZ) {
for (int k = 0; k < ConfigInfo.mysticalOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.mysticalOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.mysticalOre, ConfigInfo.MysticalOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.fireShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.fireShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.burntShardOre, ConfigInfo.fireShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.floatingShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.floatingShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.floatingShardOre, ConfigInfo.floatingShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.natureShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.natureShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.natureShardOre, ConfigInfo.natureShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int k = 0; k < ConfigInfo.waterShardOreGenChancePerChunk; k++) {
int oreXCoord = chunkX + rand.nextInt(16);
int oreYCoord = rand.nextInt(ConfigInfo.waterShardOreGenHeight);
int oreZCoord = chunkZ + rand.nextInt(16);
(new WorldGenMinable(MysticalBlocks.waterShardOre, ConfigInfo.waterShardOreGenClusterSize)).generate(world, rand, oreXCoord, oreYCoord, oreZCoord);
}
for (int i = 0; i < 2; i++) {
int Xcoord1 = chunkX + rand.nextInt(16);
int Ycoord1 = rand.nextInt(90);
int Zcoord1 = chunkZ + rand.nextInt(16);
(new WorldGenOakTree(false, 6, 0, 0, false)).generate(world, rand, Xcoord1, Ycoord1, Zcoord1);
}
// int Xcoord1 = chunkX + rand.nextInt(16);
// int Ycoord1 = rand.nextInt(90);
// int Ycoord1 = rand.nextInt(80);
// int Zcoord1 = chunkZ + rand.nextInt(16);
//
// if(world.canBlockSeeTheSky(Xcoord1, Ycoord1,
// Zcoord1)&&world.getBlock(Xcoord1, Ycoord1, Zcoord1) == Blocks.grass){
// new WorldGenMineShaft().generate(world, rand, 0, Ycoord1, 0);
// }
int Xcoord1 = chunkX + rand.nextInt(16);
int Ycoord1 = rand.nextInt(80);
int Zcoord1 = chunkZ + rand.nextInt(16);
String biome = world.getBiomeGenForCoords(Xcoord1, Zcoord1).biomeName;
if (!biome.toLowerCase().startsWith("ocean") || !biome.toLowerCase().startsWith("river")) {
if (biome.toLowerCase().startsWith("mystical")) {
if (rand.nextInt(15) == 1) {
while (world.isAirBlock(Xcoord1, Ycoord1, Zcoord1)) {
Ycoord1--;
}
while (!world.isAirBlock(Xcoord1, Ycoord1 + 1, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 2, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 3, Zcoord1)) {
Ycoord1++;
}
(new WorldGenMineShaft()).generate(world, rand, Xcoord1, Ycoord1, Zcoord1);
}
} else {
if (rand.nextInt(100) == 1) {
while (world.isAirBlock(Xcoord1, Ycoord1, Zcoord1)) {
Ycoord1--;
}
while (!world.isAirBlock(Xcoord1, Ycoord1 + 1, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 2, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 3, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 4, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 5, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 6, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 7, Zcoord1) && !world.isAirBlock(Xcoord1, Ycoord1 + 8, Zcoord1)) {
Ycoord1++;
}
new WorldGenMineShaft().generate(world, rand, Xcoord1, Ycoord1, Zcoord1);
}
}
} else{
}
}
private void generateNether(World world, Random rand, int chunkX, int chunkZ) {
}
}