Jump to content

Recommended Posts

Posted

Hello, i am trting to create a mod in minecraft, i pretty much completed it all, but the part that i cant get to work is the custom ore generation.

Can somebody please tell me what else can i use besides CountRangeConfig which does not exist.

Posted

You would need to listen to BiomeLoadingEvent (), you could register an function to it like this:

MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, onBiomeLoading);

As from the javadocs of the event: "This event fires when a Biome is created from json or when a registered biome is re-created for worldgen"

With this done you would just need to "treat" the biome in the listener and add any feature (like ore generation) you need.
An exemple of listener:

public static void onBiomeLoading(final BiomeLoadingEvent event) {
    /* Check which biome are being loaded, example: if the biome is TAIGA or SWAMP */
    if (event.getCategory() == Biome.Category.TAIGA || event.getCategory() == Biome.Category.SWAMP) {
        /* Get UNDERGROUND_ORES features of the biome */
        event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES ).add(
            /* adding COAL_ORE with some configuration */
            () -> Blocks.COAL_ORE.withConfiguration(...)
        );
    }
}

As from the configuration you could look at the Vanilla default ore generation features to get what you want. 

  • Like 1
Posted
  On 3/6/2021 at 2:00 PM, samjviana said:

You would need to listen to BiomeLoadingEvent (), you could register an function to it like this:

MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, onBiomeLoading);

As from the javadocs of the event: "This event fires when a Biome is created from json or when a registered biome is re-created for worldgen"

With this done you would just need to "treat" the biome in the listener and add any feature (like ore generation) you need.
An exemple of listener:

public static void onBiomeLoading(final BiomeLoadingEvent event) {
    /* Check which biome are being loaded, example: if the biome is TAIGA or SWAMP */
    if (event.getCategory() == Biome.Category.TAIGA || event.getCategory() == Biome.Category.SWAMP) {
        /* Get UNDERGROUND_ORES features of the biome */
        event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES ).add(
            /* adding COAL_ORE with some configuration */
            () -> Blocks.COAL_ORE.withConfiguration(...)
        );
    }
}

As from the configuration you could look at the Vanilla default ore generation features to get what you want. 

Expand  

I know that i can take a look at that but i dont know where to find it

Posted
  On 3/6/2021 at 2:13 PM, troublemaker_47 said:

Btw can i substitute 

if (event.getCategory() == Biome.Category.TAIGA || event.getCategory() == Biome.Category.SWAMP)

for something that can include all the overworld biomes

Expand  

It might have an better way to do this by checking the dimension of the biome, but i have to admit that i don't know how to check the dimension XD
So ... you could check if the biome is NOT NETHER or THEEND Category, something like:

if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND)

 

Posted
  On 3/6/2021 at 2:21 PM, samjviana said:

It might have an better way to do this by checking the dimension of the biome, but i have to admit that i don't know how to check the dimension XD
So ... you could check if the biome is NOT NETHER or THEEND Category, something like:

if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND)

 

Expand  

Thank You So Much. But can you tell me where can i find the vanilla default ore generation file

Posted

You can use your IDE to look the source code of Vanilla Classes ...
The classes you would like to see are net.minecraft.world.gen.feature.Feature and net.minecraft.world.gen.feature.Features.

  On 3/6/2021 at 2:25 PM, troublemaker_47 said:

Thank You So Much. But can you tell me where can i find the vanilla default ore generation file

Expand  

 

Posted

By the way do you know how to resolve this???

Bad return type in lambda expression: Ingredient cannot be converted to ConfiguredFeature<?, ?>

@SubscribeEvent
public static void onBiomeLoading(final BiomeLoadingEvent event) {
    if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND) {
        OreFeatureConfig feature = new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD,
                RegistryHandler.MY_ORE.get().getDefaultState(), 6);
        event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add( () -> {
                Ingredient.fromItems(RegistryHandler.MY_ORE.get());
                    return Ingredient.fromItems(RegistryHandler.MY_ORE.get());<------- //here is the error
                }
        );
    }
}
Posted
  On 3/6/2021 at 4:34 PM, troublemaker_47 said:

By the way do you know how to resolve this???

Bad return type in lambda expression: Ingredient cannot be converted to ConfiguredFeature<?, ?>

@SubscribeEvent
public static void onBiomeLoading(final BiomeLoadingEvent event) {
    if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND) {
        OreFeatureConfig feature = new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD,
                RegistryHandler.MY_ORE.get().getDefaultState(), 6);
        event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add( () -> {
                Ingredient.fromItems(RegistryHandler.MY_ORE.get());
                    return Ingredient.fromItems(RegistryHandler.MY_ORE.get());<------- //here is the error
                }
        );
    }
}
Expand  

The add function needs an "Supplier<ConfiguredFeature<?, ?>>" your lambda function is returning a type Ingredient you would need to return an ConfiguredFeature, like so:

if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND) {
	event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add(
		() -> Feature.ORE.withConfiguration(
			new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD, RegistryHandler.MY_ORE.get().getDefaultState(), 6)
		)
	);
}

 

Posted
  On 3/7/2021 at 11:46 AM, samjviana said:

The add function needs an "Supplier<ConfiguredFeature<?, ?>>" your lambda function is returning a type Ingredient you would need to return an ConfiguredFeature, like so:

if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND) {
	event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add(
		() -> Feature.ORE.withConfiguration(
			new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD, RegistryHandler.MY_ORE.get().getDefaultState(), 6)
		)
	);
}

 

Expand  

Thank you but do i have to declare Feature

Posted

Only of it is something specific that the default vanilla features can't solve.
For ore generation you could use Feature.ORE (default ore generation), Feature.EMERALD_ORE (which generates only in mountain biome) or Feature.No_SURFACE_ORE (ancient debris feature, an ore that has no contact with air blocks)

 

  • Like 1
Posted
  On 3/7/2021 at 11:46 AM, samjviana said:

The add function needs an "Supplier<ConfiguredFeature<?, ?>>" your lambda function is returning a type Ingredient you would need to return an ConfiguredFeature, like so:

if (event.getCategory() != Biome.Category.NETHER && event.getCategory() != Biome.Category.THEEND) {
	event.getGeneration().getFeatures(GenerationStage.Decoration.UNDERGROUND_ORES).add(
		() -> Feature.ORE.withConfiguration(
			new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD, RegistryHandler.MY_ORE.get().getDefaultState(), 6)
		)
	);
}

 

Expand  

Thank you but do i have to declare Feature

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

    • Recovering stolen Bitcoin can feel like an insurmountable challenge, especially after falling victim to scams that promise high returns with little investment. My journey began with excitement when I first learned about Bitcoin mining pools. The idea of earning substantial profits from a modest investment was enticing. I was encouraged to invest $5,200, and soon found myself caught in a web of endless demands for more money to access my funds. As time went on, I paid out hundreds of thousands of dollars, believing that each payment would finally unlock my investments. However, the requests never ceased, and I soon realized I was trapped in a scam. The weight of losing $826,000 worth of Bitcoin was unbearable, and I felt utterly helpless. I reached out to authorities, but their responses were disheartening, leaving me feeling even more isolated in my struggle. In my desperation, I even went to pray, seeking guidance and hope in what felt like a hopeless situation. I poured my heart out, asking for a sign or a way to recover my lost funds. It was during this time of reflection that I began searching for solutions online, hoping to find a way to recover my investments. That’s when I stumbled upon RAPID DIGITAL RECOVERY. At first, I was cynical after all, I had already been deceived so many times. However, I decided to reach out and share my story. The team at RAPID DIGITAL RECOVERY was understanding and compassionate, assuring me they had the expertise to help me recover my stolen Bitcoin. Within hours of providing them with the necessary information, I began to see progress. They guided me through the recovery process, keeping me informed every step of the way. It was surreal to watch as they worked diligently to trace my funds and navigate the complexities of the blockchain. To my astonishment, I received confirmation that my Bitcoin had been successfully recovered. The relief and joy I felt were indescribable. I had almost given up hope, but RAPID DIGITAL RECOVERY proved to be the lifeline I desperately needed. If you find yourself in a similar situation, I urge you to seek help from Reputable team at RAPID DIGITAL RECOVERY.  
    • https://mclo.gs/9Byd16j Hi, I've had my BetterMC world for a couple days now (1.19.2 vers & Fabric loader) but recently whenever I try to open the profile the minecraft launcher crashes and provides this error code. I've checked both this forum and google and haven't found any similar problems or solution to my problem. I'm not the best at reading crash logs but I gathered that there's an issue with fabric possibly, so I re-downloaded the same one on the modpack, then the latest version for 1.19.2 fabric and the issue still occurred. What can I do now?
    • it works now but idk why lmao. i removed terrablender and it didnt work. i then left it for a couple of days and, when i came back, updated the mods that needed updating because "what's the worst that could happen". i then tried launching it and now it works. i genuenly have no clue what i did to make it work, othen than updating the mods. so, thanks for your help
    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

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