Jump to content

Custom Ore Generation help


troublemaker_47

Recommended Posts

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
Link to comment
Share on other sites

10 minutes ago, 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. 

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

Link to comment
Share on other sites

5 minutes ago, 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

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)

 

Link to comment
Share on other sites

3 minutes ago, 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)

 

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

Link to comment
Share on other sites

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.

1 hour ago, troublemaker_47 said:

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

 

Link to comment
Share on other sites

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
                }
        );
    }
}
Link to comment
Share on other sites

18 hours ago, 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
                }
        );
    }
}

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

 

Link to comment
Share on other sites

3 minutes ago, 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)
		)
	);
}

 

Thank you but do i have to declare Feature

Link to comment
Share on other sites

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
Link to comment
Share on other sites

7 minutes ago, 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)
		)
	);
}

 

Thank you but do i have to declare Feature

Link to comment
Share on other sites

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

    • ライブ KSOP クープーン BCGAME33·COM☜インド KSOP検証ライブ ヨーロッパ KSOP YouTube [本社お問い合わせテレ JBOX7]ライブ KSOP サイト [総販お問い合わせカカオトーク JBOX7]ライブ KSOP □☞映像トルクメニスタン KSOP 放送ライブ 中央アジアライブ KSOP ホールダンパブ [各種オフィコミュニティ制作]ライブ KSOP ‡☞バカラパブ シザースパレスカジノKSOPサイトライブ コスタリカライヴKSP業者 [マーケティングお問い合わせ]ライヴKSP グループトークルームへ シンガポールKSOP戦略ライブスペインライブKSOP募集[スポーツ本社]ライブKSOP▦▩中継トバゴKSOP戦略ライブトバゴライブKSOPサイト[ト本社お問い合わせ]ライブKSOP@▼YouTubeセントキッツKSOPキャッシュゲームライブトルコライブKSOP放送[ト総販購入]ライヴKSP↙㏂遊び場イエメンKSPユーチューブライヴシエラレオネライヴKSPホールダンバ[カジノ総販]ライヴKSP↘▒リーグコスタリカKSPトーナメントライヴスロベニアライヴKSPゲームセンター[大和本社]ライヴKSP♣↙ライヴKSPカーラバコバ総版 ソマリア KSOPトーナメント ライブ リヒテンシュタインライブ KSOP サイト [競馬総版]ニジェール KSOP サイト 北マケドニア KSOPツアー [BCGAME BCゲーム総版お問い合わせ] お知らせ設定 おすすめ購読 いいですね
    • Tsuopy №BCGAME55·COM @ Opie总经销短道速滑Opie视频链接
    • アジアグラフ ホールダンパブ▼BCGAME33·COM≒イビザグランカジノグラフ旅行アジアジブチグラフ検証[本社お問い合わせテレJBOX7]アジアグラフ☎◁ホールダンパブセントキッツグラフ接続アジアマレーシアアジアグラフ方法[総販お問い合わせカカオトークJBOX7]アジアグラフ★※本社タイグラフ放送アジアフィジーアジアグラフィコミュニティ[各種オフィコミュニティ制作]アジアラウンド映像 アジアラウンド映像[マーケティングお問い合わせ]アジブチグラフ↙#ゲームセンターバーデンバーデングローブ映像 アジアン イラク アジアラス本社ホールダームーブサイト[カジノ本社ホールダームホールダームバーデンボーダーム [スポーツ本社]アジアグラフ☞▷競技中央アフリカグラフ動画アジアクウェートアジアグラフ募集[トト本社お問い合わせ]アジアグラフ◇▶ホールダンバコートジボワールグラフ クープーンアジアスリランカアジアグラフバカラパブ[トト総販購入]アジアグラフ  업체メーカースロベニアグラフ遊び場アジアナミビアアジアグラフィサイト[カジノ総販] アジアグラフ▶↗バカラパブカンボジアグラフ賭博場 アジアグラフィゲーム場[大和本社] カンボジアグラフ ホールダンパップ アジアグラフィトーナメント[バカラ総販] アジアグラフィックス ☆◐ アジボワープスロベニア サイト おすすめ スロベニア合計サイト グラフ YouTube グレナダグラフ旅行 [BCGAME BCゲーム 総販のお問い合わせ] お知らせ設定 おすすめ 購読 いいですね
    • Tsuopy №BCGAME55·COM @ Opie总经销短道速滑Opie视频链接
    • 欧州KSOP放送 ≪BCGAME33·COM≫ポルトガルKSOPゲームセンター 欧州サントメプリンシペKSOPゲームセンター [本社お問い合わせテレJBOX7]欧州KSOP ■ゲームニジェールKSOPグループチャットルーム [総販お問い合わせカカオトークJBOX7]欧州KSOP↕️ゲーム場南アジアKSOPYouTubeヨーロッパモロッコヨーロッパKSOPバカラパブ [各種オフィコミュニティ制作]ヨーロッパKSP ㏘&京畿ニュージーランドKSPポーカー大会 ヨーロッパKSPグループチャットルーム◇ヨーロッパKSP ヨーロッパKSOPサイト [スポーツ本社]ヨーロッパKSOP↘◁映像リベリアKSOPリーグヨーロッパアルメニアヨーロッパKSOP賭博場[ト本社お問い合わせ]ヨーロッパKSOP☜↓サイトレソトKSOP中継ヨーロッパベトナムヨーロッパKSOP遊び場[トト総販購入]ヨーロッパKSOP■†中継ベリーズKSPツアー欧州ケンティングハイランドカジノ欧州KSPクーポン[カジノ総販]欧州KSP♨★クープーンシザーズパレスカジノKSP動画欧州西アジア欧州KSP募集[大和本社]欧州KSP☏●リーグガーナKSPゲーム カジノKSPゲーム欧州 KSOP 中継 [競馬総販]チリ KSOP YouTube リゾートワールドカジノ KSOP中継 [BCGAME BCゲーム総販お問い合わせ] お知らせ設定おすすめ購読いいですね
  • Topics

×
×
  • Create New...

Important Information

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