Jump to content

Recommended Posts

Posted

Hello. I'm making my first mod. I'm trying to make some block spawn in caves. I wrote a class, that extends Feature class, but how do I made spawn it in the world? I don't know anything about world generation, and I don't know where should I take information from. Thank you very much

Posted

It depends what version of forge you are using. The old way (1.18 and before) is to use BiomeLoadingEvent. Then use 

event.getGeneration().addFeature()

to add it to the appropriate GenerationStep.

For an example, here is Botania adding mystical flowers and mushrooms to the vegetation step

https://github.com/VazkiiMods/Botania/blob/0cfa08ebb4828aa48b3231d6db6dd3b70dc7942b/Forge/src/main/java/vazkii/botania/forge/ForgeCommonInitializer.java#L250 

Of course you need to register your features to make them useful, see

https://github.com/VazkiiMods/Botania/blob/0cfa08ebb4828aa48b3231d6db6dd3b70dc7942b/Xplat/src/main/java/vazkii/botania/common/world/ModFeatures.java

 

1.19 (still in beta) has overhauled this to use BiomeModifiers:https://forge.gemwire.uk/wiki/Biome_Modifier

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Posted
Quote

This is not ideal. The recommended way to register things is using DeferredRegister, which also provides you with the Holder.

Pretty sure it does it that way because it shares the same code with the fabric implementation which doesn't have deferred registration.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Posted (edited)

Do you know a good example?

I just tried to find a good example in well known mods and they seem to use a variant of the RegistryEvent/manual register like botania, except mekanism which has its own specialised FeatureDeferredRegistry implementation.

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Posted (edited)

first of all guys, did you read the version of this thread, it's 1.16.5 there are not Holders, etc?

 

2 hours ago, KastyaLimoness said:

I'm trying to make some block spawn in caves.

like Ores? If so, you don't need a custom Feature you can use Feature.ORE instead
create a static ConfiguredFeature field, then create the ConfiguredFeature in FMLCommonSetupEvent and store it in your field
you then be able to use BiomeLoadingEvent to add the Feature to the World

you can create the ConfiguredFeature via Feature#configured
you can use the vanilla Features class as an example

 

1 hour ago, warjort said:

Do you know a good example?

why do you need a example?
if you provide a example it is helpful but you should know that a few people will copy the code without understanding what the code is doing
and then they come back and say the code is not working (they turn off their brain)
if you want to show examples i would recommend you to use the examples which are provied by Forge in the Forge Community Wiki,
or you create a standalone example (for example with https://gist.github.com/), which you then can link

if you want an example for Features & Placements you can take at: Features & Placements

Edit: in the most cases there are vanilla examples and for the stuff which is added by Forge you can take a look at the Test Mods

Edited by Luis_ST

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.