Posted June 29, 201312 yr Hello, I'm stuck once again in my coding, due to the fact that I've not yet found a tutorial for regular world ore spawn for 1.5+. Can anyone give me a link to a tutorial for that or explain me how to ? Thank you by advance.
June 29, 201312 yr In your @Init Method, write the following: GameRegistry.registerWorldGenerator(new WorldGenCustomOres()); (You can change the name of WorldGenCustomOres if you want) This is your WorldGenCustomOres: package your.package; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import cpw.mods.fml.common.IWorldGenerator; public class WorldGenCustomOres implements IWorldGenerator { @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; } } private void generateSurface(World world, Random random, int i, int j) { for(int k = 0; k < 5; k++)//5 = maximum veins per chunk { int randomPosX = i + random.nextInt(16); int randomPosY = random.nextInt(29);//29 = spawns up to height int randomPosZ = j + random.nextInt(16); (new WorldGenMinable(yourOre, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein } } private void generateNether(World world, Random random, int i, int j) { } private void generateEnd(World world, Random random, int i, int j) { } } The Block.stone.blockID says that the ore can only replace stone blocks in the world. This gets rid of the little chance to override diamonds and other ores. If you want to add another ore, just place another for(int k = 0; k < 5; k++)//5 = maximum veins per chunk { int randomPosX = i + random.nextInt(16); int randomPosY = random.nextInt(29);//29 = spawns up to height int randomPosZ = j + random.nextInt(16); (new WorldGenMinable(yourOre, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein under your existing one. Hope that helped. http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Author I can't enter my ore, it does not find it. Here is my ore: private final static Block oreCopper = new SovOreCopper(802, 1, Material.rock).setHardness(2F) .setStepSound(Block.soundStoneFootstep).setUnlocalizedName("copperOre").setCreativeTab(CreativeTabs.tabBlock); Is there something wrong ?
June 29, 201312 yr I think you wrote this: (new WorldGenMinable(oreCopper, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ ); As you are in another class, you have to import your Main class and write it in front of the variable from your main class. In this case the above line would be the following: (new WorldGenMinable(yourMainClass.oreCopper, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ ); And another thing: As you will come across many things where you need your block/item variable in other classes, change private final static to public final static The private says that this variable is only available for the class it's in. The public makes it, well, publically available. http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Author I changed all my code to public, tried like you said MyMainClass.oreCopper but I get this error now: "The constructor WorldGenMinable(Block, int, int, int) is undefined". What do I do ?
June 29, 201312 yr What Forge version do you use? Try to use a quick fix. Click on the one which says remove arguments bla bla bla. If it isn't there, can I have your WorldGen class? http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Author I'm using the latest Forge Source (7.8.1). There are no quick fixes, it only tells me the error. Here is my WorldGen class: package s0vietique.alloycraft.client; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import cpw.mods.fml.common.IWorldGenerator; import s0vietique.alloycraft.client.Alloycraft; public class WorldGenModOres implements IWorldGenerator { @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; } } private void generateSurface(World world, Random random, int i, int j) { for(int k = 0; k < 3; k++) { int randomPosX = i + random.nextInt(16); int randomPosY = random.nextInt(50); int randomPosZ = j + random.nextInt(16); (new WorldGenMinable(Alloycraft.oreCopper, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein } } private void generateNether(World world, Random random, int i, int j) { } private void generateEnd(World world, Random random, int i, int j) { } }
June 29, 201312 yr Which Forge source? 7.8.1.737? It's the latest recommended. http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Author Yes, it is .737: forge.major.number=7 forge.minor.number=8 forge.revision.number=1 forge.build.number=737
June 29, 201312 yr Hm.... can you send me your main class, please? It might help solving the problem. http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Ok Answer sent, too. http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr Author It did not change anything, and it seems your method screws all my items. Switched back to "my way of coding". Same error for WorldGen: "The constructor WorldGenMinable(Block, int, int, int) is undefined" I tried those and they didn't work: (new WorldGenMinable(Alloycraft.oreCopper, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein (new WorldGenMinable(Alloycraft.oreCopper.blockID, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein (new WorldGenMinable(oreCopper.blockID, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein (new WorldGenMinable(Block.oreCopper, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein (new WorldGenMinable(Block.oreCopper.blockID, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein
June 29, 201312 yr Author Here is my SovOreCopper.java: package s0vietique.alloycraft.client; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; public class SovOreCopper extends Block { public SovOreCopper (int id, int texture, Material material) { super(id, material); } @Override public void registerIcons(IconRegister iconRegister) { this.blockIcon = iconRegister.registerIcon("Alloycraft:copperoreblock"); } public int idDropped(int par1, Random random, int zero) { return this.blockID; } } [/spoiler]
June 29, 201312 yr Maybe try this: (new WorldGenMinable(Alloycraft.oreCopper.blockID, 6)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein instead of (new WorldGenMinable(Alloycraft.oreCopper.blockID, 0, 6, Block.stone.blockID)).generate(world, random, randomPosX , randomPosY , randomPosZ );//6 = the number of maximum ore blocks per vein http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
June 29, 201312 yr You're welcome. No problem http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
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.