Jump to content

[1.7.10] Custom World Generated Structures not generating in World


JohnnyMccurm

Recommended Posts

Having an issue with my first generated world structure, I wanted to generate a cave for the block I've been working on over the past few days to sit inside, the problem is the structure isn't spawning in plains biomes, like I want it too, and since I've not seen one yet I'm pretty certain I have an error, somewhere.

 

I can't really see errors in my code, but here's my worldgen class.

 


public class WorldGen implements IWorldGenerator {



@Override

public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)

    {

switch(world.provider.dimensionId)

        {

case 0: //surface world

generateSurface(world, random, chunkX*16, chunkZ*16);

            case 1: //end world

generateEnd(world, random, chunkX * 16, chunkZ * 16);

            case -1: //nether world

generateNether(world, random, chunkX * 16, chunkZ * 16);

}

    }





private void generateSurface(World world, Random random, int x, int z)

    {

this.addSpawn(ModBlocks.johnnyFaceBlockRubble, world, random, x, z,16,16,4 + random.nextInt(6), 25, 38, 100);



BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z);



        if ((biome == BiomeGenBase.plains))

        {

for(int a = 0; a < 1; a++)

            {

int i = x + random.nextInt(16);

                int j = z + random.nextInt(16);

                int k   = world.getHeightValue(i, j);

                new StructureJohnnyFaceCave().generate(world, random, i, k, j);

}

        }

    }



private void generateEnd(World world, Random random, int x, int z)

    {



    }



private void generateNether(World world, Random random, int x, int z)

    {



    }



private void addSpawn(Block block, World world, Random random, int blockXPos , int blockZPos, int maxX, int maxZ, int maxVeinSize, int chanceToSpawn, int minY, int maxY)

    {

for(int i = 0; i <chanceToSpawn; i++)

        {

int posX = blockXPos + random.nextInt(maxX);

            int posY = minY + random.nextInt(maxY - minY);

            int posZ = blockZPos + random.nextInt(maxZ);

(new WorldGenMinable(block,  maxVeinSize)).generate(world, random, posX, posY, posZ);

}

    }





}

 

I'll link the Structure file if it's actually requested, since that is a large file (Most structures are just the java required to place the blocks, so it's 3000 lines long)

 

 

 

pretty confident that if an error does exist it's in my WorldGen class and not the structure class, but I could be wrong, I have been before, and only been doing this stuff for a week :D

If anyone could help out I'd be grateful :)

Think Java is tough? try BrainFuck!

Link to comment
Share on other sites

Well. You cant just create a world generator and expect it to work. You need to tell Forge that you create one and that it should use it.

I guess MinecraftForge.TERRAIN_GEN_BUS should be what you are looking for.

But I need to say that I'm not sure. I never worked with Terrain generating. So I might be wrong. Just triing to give u some hints what to look for

Link to comment
Share on other sites

Use World.getBiomeGenForCoords to get the Biome. It takes block coordinates, not chunk coordinates.

 

Can you be more specific?

 

So I need to change my entire generateSurface method?

 

If I change:

 

"BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z);"

 

to

 

"BiomeGenBase biome = world.getBiomeGenForCoords().getBiomeGenAt(x, z);"

 

all I get is an error.

 

I was following this guys tutorial on it, and he used the same code as I have currently, and HIS worked:

 

Think Java is tough? try BrainFuck!

Link to comment
Share on other sites

Consider the Block at 3, 4, 3.

It has coordinates x=3, y=4, z=3.

 

It is in chunk that starts at 0, 0, so the chunk coordinates are x=0, z=0.

 

To get from one to the other do an integer divide by 16 (to get from block coords to chunk coords) or multiply by 16 for the other way around.

 

BiomeGenBase biome = world.getBiomeGenForCoords(x / 16 , z / 16);?

BiomeGenBase biome = world.getBiomeGenForCoords(x * 16 , z * 16);?

 

If not, I'm completely lost.

 

 

Think Java is tough? try BrainFuck!

Link to comment
Share on other sites

Yes, that is what I said. But you did it twice.

 

Twice? I don't multiply both X and Z then? I don't multiply in this line?

 

generateSurface(world, random, chunkX*16, chunkZ*16);?

 

I'm so lost, just going to restart from scratch, at least that'll be better than talking in riddles and replacing my code with code I've never heard of before, to find individual blocks, which I have no idea why I'm even doing to spawn a structure.

 

This obviously makes some sense to you but it makes absolutely none to me.

Think Java is tough? try BrainFuck!

Link to comment
Share on other sites

Well, thing is, now that my code doesn't generate correctly I don't really have a guide to consult -- there's hardly any code guides for this on YT since everyone uses mods to do it for them, and I don't want to do that. I'm sure it was a simple problem to begin with.

 

Hopefully someone will actually explain the process, eventually.

 

Going to work on other parts of my mod while I wait, not spending another night trying to work this one out when I don't understand it.

Think Java is tough? try BrainFuck!

Link to comment
Share on other sites

  • 4 weeks later...

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.