Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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

The problem, I think, relies on that your mod generates after natura per chunk, but your asking for random numbers offsets natura's generation for other chunks.

 

Perhaps you could try creating your own Random instance and using that instead?

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

  • Author

All right.  It appears that this problem is not something that is inherent to the presence of my mod.  I've done some tests without my mod installed and it appears that generation is slightly altered if you try to create the same world after exiting minecraft and reopening it (the worldgen is the same if you try to recreate within the same session).  This is fine, I guess, as long as the problem wasn't something that was originating from me, thus the perfectionist in me can rest easy.

 

Oh, and in case I wasn't clear, I am working within the context of FTB 1.5.2 beta no greg tech. 

 

Thanks for the input ObsequiousNewt.

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.