Jump to content

Recommended Posts

Posted (edited)

Structures need to be added with Biome#addStructure as well. Also, features need to be registered like any block or item not as some anonymous class. Finally, adding anything to the features or structures of different biomes is not thread safe and should be wrapped in a DeferredWorkQueue. Look at how Minecraft handles structures if you need an example.

Edited by ChampionAsh5357
Posted (edited)
1 hour ago, ChampionAsh5357 said:

Structures need to be added with Biome#addStructure as well. Also, features need to be registered like any block or item not as some anonymous class. Finally, adding anything to the features or structures of different biomes is not thread safe and should be wrapped in a DeferredWorkQueue. Look at how Minecraft handles structures if you need an example.

My code works however, it's literally just the fact that it doesn't spawn in super flat worlds. I use sample code from a program called MCreator, but that's not really the point. Is there a method like flatGenEnabled or something which I can change?

 

The annotation at the top is actually a tag which allows the class to be implemented into minecraft, if you'd like to know.

Edited by Nicholas Hammond
Posted
5 minutes ago, Nicholas Hammond said:

My code works however, it's literally just the fact that it doesn't spawn in super flat worlds.

My apologies, you might want to try adding it to the following maps in FlatGenerationSettings: FEATURE_STAGES, STRUCTURES, and FEATURE_CONFIGS.

Posted (edited)
4 minutes ago, ChampionAsh5357 said:

My apologies, you might want to try adding it to the following maps in FlatGenerationSettings: FEATURE_STAGES, STRUCTURES, and FEATURE_CONFIGS.

Thank you, this was the type of response I was looking for. But how would I do this exactly? Sorry for bothering, I'm a novice. Would I do this in my Level0ChunkGenerator class? I attempted doing something similar to

flatgenerationsettings.getWorldFeatures().put("village", Maps.newHashMap());

but it didn't work.

Edited by Nicholas Hammond
Posted
1 minute ago, ChampionAsh5357 said:

You put your configured feature in the map most likely during the common setup in the DeferredWorkQueue.

Would I do this using a similar method like the example I used in my previous reply? Sorry but I don't really understand to what you're referring to exactly by DeferredWorkQueue. Is this a simple thing to do? Could you possibly send an example line of code? Sorry for my questions, I'm mostly modifying pre existing code like a template so I don't really know what all of this means..

Posted
15 minutes ago, Nicholas Hammond said:

Would I do this using a similar method like the example I used in my previous reply?

No, the maps are a static final variable so it should be accessed directly from calling the class. Just follow the example in FlatGenerationSettings.

15 minutes ago, Nicholas Hammond said:

Sorry but I don't really understand to what you're referring to exactly by DeferredWorkQueue. Is this a simple thing to do? Could you possibly send an example line of code?

I quote from the source itself "Utility for running code on the main launch thread at the next available opportunity. There is no guaranteed order that work from various mods will be run, but your own work will be run sequentially." Use DeferredWorkQueue#runLater in your FMLCommonSetupEvent to reference and put your feature in the maps.

 

Even if you're modifying preexisting code, you should check all the information regarding whatever you are doing. What I said early refers to the correct way of registering and adding features to biomes. DeferredWorkQueue is a less obvious one unless you have been paying attention to similar threads on the forms or actively keep checking the changelog and source information. A lot of what is in the source code is just a loose template as you say since there are better ways to approach it.

Posted (edited)

Thank you for your patience and answering my questions. I will attempt to do what you have recommended, but I still have some trouble understand exactly what I have to do. From my understanding I have to register my structure somewhere? Is this in the chunk generator class or the structure class? I'm surprised this seems so difficult, but you obviously know much more than I do.

 

 I hope I can ask further questions if I remain stuck :) Sorry for the bothering.

Edited by Nicholas Hammond
Posted
2 minutes ago, Nicholas Hammond said:

From my understanding I have to register my structure somewhere?

You might want to read up on registries and look into using DeferredRegister and RegistryObjects. There are plenty of forum posts including both of these if you need some more information.

Posted (edited)

One other thing, when you refer to the "example in FlatGenerationSettings" you mean the example I sent? I tried replacing "village" with "backrooms:empty_room" but of course it didn't work. Also, are you suggesting I rewrite my code?

Edited by Nicholas Hammond
Posted
22 minutes ago, Nicholas Hammond said:

One other thing, when you refer to the "example in FlatGenerationSettings" you mean the example I sent? I tried replacing "village" with "backrooms:empty_room" but of course it didn't work.

No, I mean the actual source code example.

22 minutes ago, Nicholas Hammond said:

Also, are you suggesting I rewrite my code?

Yes. Usually I wouldn't suggest rewriting code unless it was a standardized or core component of creating modifications for the game. Registering features is one of the things that is required along with a few other mentions.

Posted (edited)
33 minutes ago, Nicholas Hammond said:

I will not be rewriting code as it is very helpful when using templates from MCreator.

Don't use MCreator. It produces broken code as well as clogs up the mod jar with unnecessary fuss. More reasons can be found here.

If you want to mod please learn Java and do it properly.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted (edited)
3 minutes ago, Nicholas Hammond said:

I have learned java, it's just very convenient to use MCreator for sample code.

Except the "sample code" is extremely inefficient, fails randomly and crashes immediately on a dedicated server.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

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.