How do I get it so my worldgen mod is the last thing that happens during world-generation? The reason I want this to happen is that I have a natura seed that I like, but my mods presence seems to alter the generation slightly.
Here is my very simple worldgen code.
package worldGen.zMiningPeace;
// This Import list will grow longer with each additional tutorial.
// It's not pruned between full class postings, unlike other tutorial code.
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = "zMiningPeace", name = "zMiningPeace", version = "0.0.0", dependencies = "required-after:Natura")
@NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = { "MiningPeaceRandom" })
public class zMiningPeace {
zMyWorldGenerator gen = new zMyWorldGenerator();
@Instance("zMiningPeace")
public static zMiningPeace instance;
@SidedProxy(clientSide = "worldGen.zMiningPeace.client.ClientProxy", serverSide = "worldGen.MiningPeace.CommonProxy")
public static CommonProxy proxy;
@PreInit
public void preInit(FMLPreInitializationEvent event) {
// Stub Method
}
@Init
public void load(FMLInitializationEvent event) {
proxy.registerRenderers();
}
@PostInit
public void postInit(FMLPostInitializationEvent event) {
// Stub Method
GameRegistry.registerWorldGenerator(gen);
}
}
package worldGen.zMiningPeace;
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import cpw.mods.fml.common.IWorldGenerator;
import net.minecraft.block.Block;
public class zMyWorldGenerator implements IWorldGenerator {
@Override
public void generate(Random random, int chunkX, int chunkZ, World world,
IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
// System.out.printf("chunkX = %d, chunkZ = %d\n", chunkX, chunkZ);
switch (world.provider.dimensionId) {
case 0:
generateSurface(world, random, chunkX * 16, chunkZ * 16);
break;
case -1:
break;
case 1:
break;
}
}
private void generateSurface(World world, Random random, int chunkX,
int chunkZ) {
this.fillArea(world, random, chunkX, chunkZ, 11, 16);
}
private void fillArea(World world, Random random, int chunkX, int chunkZ,
int miny, int maxy) {
int numLayers = maxy - miny;
for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) {
for (int y = 0; y < numLayers; y++) {
int posx, posy, posz;
posx = chunkX + x;
posy = miny + y;
posz = chunkZ + z;
if (world.isAirBlock(posx, posy, posz)) {
world.setBlock(posx, posy, posz, Block.stone.blockID,
0, 0);
// world.setb(posx, posy, posz,
// Block.cobblestone.blockID);
}
}
}
}
// System.out.print("Done with fill area\n");
}
}
As you can see, I've tried a few things to try and make this happen (renaming classes, making it dependent on natura), but it doesn't seem to work.
Thanks for your help