Jump to content

Recommended Posts

Posted

hello!

 

How I can edit the code to generate blocks on top grass on the surface?

 

	private void runGenerator(WorldGenerator generator, World world, Random rand, int chunk_X, int chunk_Z, int chancesToSpawn, int minHeight, int maxHeight) {
    if (minHeight < 0 || maxHeight > 256 || minHeight > maxHeight)
        throw new IllegalArgumentException("Illegal Height Arguments for WorldGenerator");

    int heightDiff = maxHeight - minHeight + 1;
    for (int i = 0; i < chancesToSpawn; i ++) {
        int x = chunk_X * 16 + rand.nextInt(16);
        int y = minHeight + rand.nextInt(heightDiff);
        int z = chunk_Z * 16 + rand.nextInt(16);
        generator.generate(world, rand, x, y, z);
        System.out.printf("Cosa generada veinti");
    }
}

 

pss edit my code, many thanks!

Posted

u will need to find the surface block, I am not sure if vanilla has a method for that, or if u need to iterate over the blocks in the world until u find a grass block. after that add 1 to the y pos and u are above the grass

Posted

i use the last code for the ores generator, but i need make a replicate  the same code for generate blocks on the surface and on top the grass block

 

this is the .java

 

package com.colorescraftmod.principal.items;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.gen.feature.WorldGenerator;

import cpw.mods.fml.common.IWorldGenerator;

public class ModWorldGen implements IWorldGenerator {

  private WorldGenerator multiore;		//Generates Multi Ore (used in Overworld)


public ModWorldGen() {
    this.multiore = new WorldGenSingleMinable(ModItems.multiore);
   // this.gen_cobblestone = new WorldGenMinable(Blocks.cobblestone, 16, Blocks.end_stone);
}

@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
	switch (world.provider.dimensionId) {
	case 0: //Overworld
		//this.runGenerator(this.gen_multi_ore, world, random, chunkX, chunkX, 20, 0, 64); 

		this.runGenerator(this.multiore, world, random, chunkX, chunkZ, 1120, 0, 254);

		break;
	case -1: //Nether

		break;
	case 1: //End

		break;
	}
}


private void runGenerator(WorldGenerator generator, World world, Random rand, int chunk_X, int chunk_Z, int chancesToSpawn, int minHeight, int maxHeight) {
    if (minHeight < 0 || maxHeight > 256 || minHeight > maxHeight)
        throw new IllegalArgumentException("Illegal Height Arguments for WorldGenerator");

    int heightDiff = maxHeight - minHeight + 1;
    for (int i = 0; i < chancesToSpawn; i ++) {
        int x = chunk_X * 16 + rand.nextInt(16);
        int y = minHeight + rand.nextInt(heightDiff);
        int z = chunk_Z * 16 + rand.nextInt(16);
        generator.generate(world, rand, x, y, z);
        System.out.printf("Cosa generada veinti");
    }
}
}

Posted

Are you creating a surface ore? If you are than perhaps you could create a method for your y coordinate that creates a blockPos list of all the blocks in the x z area that is randomized by your code, then iterate through it till the block type is grass, then add 1, and you should have it.

Just a suggestion. Also, please know what you are saying before you post, it really helps everyone else.

Posted

u will need to find the surface block, I am not sure if vanilla has a method for that, or if u need to iterate over the blocks in the world until u find a grass block. after that add 1 to the y pos and u are above the grass

 

and i answered that

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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