Jump to content

Recommended Posts

Posted

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.

Posted

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.

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

Posted

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 ?

Posted

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.

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

Posted

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 ?

Posted

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)
{
}
}

 

Posted

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

Posted

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]

Posted

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

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

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello, I have this same problem. Did you manage to find a solution? Any help would be appreciated. Thanks.
    • log: https://mclo.gs/QJg3wYX as stated in the title, my game freezes upon loading into the server after i used a far-away waystone in it. The modpack i'm using is better minecraft V18. Issue only comes up in this specific server, singleplayer and other servers are A-okay. i've already experimented with removing possible culprits like modernfix and various others to no effect. i've also attempted a full reinstall of the modpack profile. Issue occurs shortly after the 'cancel' button dissapears on the 'loading world' section of the loading screen.   thanks in advance.
    • You would have better results asking a more specific question. What have you done? What exactly do you need help with? Please also read the FAQ regarding posting logs.
    • Hi, this is my second post with the same content as no one answered this and it's been a long time since I made the last post, I want to make a client-only mod, everything is ok, but when I use shaders, none of the textures rendered in RenderLevelStageEvent nor the crow entity model are rendered, I want them to be visible, because it's a horror themed mod I've already tried it with different shaders, but it didn't work with any of them and I really want to add support for shaders Here is how i render the crow model in the CrowEntityRenderer<CrowEntity>, by the time i use this method, i know is not the right method but i don't think this is the cause of the problem, the renderType i'm using is entityCutout @Override public void render(CrowEntity p_entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { super.render(p_entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); ClientEventHandler.getClient().crow.renderToBuffer(poseStack, bufferSource.getBuffer(ClientEventHandler.getClient().crow .renderType(TEXTURE)), packedLight, OverlayTexture.NO_OVERLAY, Utils.rgb(255, 255, 255)); } Here renderLevelStage @Override public void renderWorld(RenderLevelStageEvent e) { horrorEvents.draw(e); } Here is how i render every event public void draw(RenderLevelStageEvent e) { for (HorrorEvent event : currentHorrorEvents) { event.tick(e.getPartialTick()); event.draw(e); } } Here is how i render the crow model on the event @Override public void draw(RenderLevelStageEvent e) { if(e.getStage() == RenderLevelStageEvent.Stage.AFTER_ENTITIES) { float arcProgress = getArcProgress(0.25f); int alpha = (int) Mth.lerp(arcProgress, 0, 255); int packedLight = LevelRenderer.getLightColor(Minecraft.getInstance().level, blockPos); VertexConsumer builder = ClientEventHandler.bufferSource.getBuffer(crow); Crow<CreepyBirdHorrorEvent> model = ClientEventHandler .getClient().crow; model.setupAnim(this); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, packedLight, OverlayTexture.NO_OVERLAY, alpha); builder = ClientEventHandler.bufferSource.getBuffer(eyes); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, 15728880, OverlayTexture.NO_OVERLAY, alpha); } } How i render the model public static void renderModelInWorld(Model model, Vector3f pos, Vector3f offset, Camera camera, PoseStack matrix, VertexConsumer builder, int light, int overlay, int alpha) { matrix.pushPose(); Vec3 cameraPos = camera.getPosition(); double finalX = pos.x - cameraPos.x + offset.x; double finalY = pos.y - cameraPos.y + offset.y; double finalZ = pos.z - cameraPos.z + offset.z; matrix.pushPose(); matrix.translate(finalX, finalY, finalZ); matrix.mulPose(Axis.XP.rotationDegrees(180f)); model.renderToBuffer(matrix, builder, light, overlay, Utils .rgba(255, 255, 255, alpha)); matrix.popPose(); matrix.popPose(); } Thanks in advance
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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