Jump to content

[1.12.2] Generating New crops in Villages


_Bedrockbreaker_

Recommended Posts

I have a crop that works, (only problem is that is that is outputs Exception loading model for variant rtap:croppeppers#inventory for item "minecraft:air" on load time)  I want it generate in the village farm land module-thingies though. I know Actually Additions does this, and its code seems to generate an entirely "new" building for their crops. I was wondering if I could just replace some of the existing crops with my crops. (Honestly, generating a new building isn't something I wouldn't do, and I am wondering if it would be the better option.) I don't know how to begin starting on this type of thing, so any help is appreciated. Bonus points if the plant can only generate in desert villages.

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Link to comment
Share on other sites

Look at net.minecraft.world.gen.structure.StructureVillagePieces.class

Specifically at Field1 and Field2, I don't know how (you might need to make a coremod) but you could add another crop to the list of crops to pick from.
 

You should also look at how Binnies Extra Trees adds their hops.

 

You could create another field too that would only spawn in desert villages

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

Taking a look at Binnies Trees, seems to do almost the same think Actually Additions does. The only difference is that binnie creates a building, then populates the crops with any of the vanilla crops, or theirs. Actually additions just populates it with their own crops, because they have about 4 different types.

 

So I am thinking, that overriding any crops on world gen isn't going to be the answer, but generating a new building. Both mod's code provides enough detail on how to create a farm module, and register it. However, I don't see a reference to how that building is generated. There is a class in each mod that implements VillagerRegistry.IVillageCreationHandler . But none of the classes seem to be called by anything. Are they called from VillagerRegistry.IVillageCreationHandler , or is there something that I am missing?

 

What would be the "correct" way of spawning the structures only in deserts?

Edited by _Bedrockbreaker_

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Link to comment
Share on other sites

So to make your own crop generation you should make a StructureVillagePieces.Village subclass like the vanilla Field1 or Field2 class and add your crop. Then use the IVillageCreationHandler to add it to the generation.

 

The IVillageCreationHandler is supposed to be registered to the village registry with VillageRegistry.instance().registerVillageCreationHandler() method. I'm not sure exactly when it should be registered, but I kinda feel it should be in init loading phase because you'd want it after your blocks are registered (in case you have custom blocks used in your village piece).

 

You also need to register your structure component with MapGenStructureIO.registerStructureComponent() method.

 

To make sure it is only in certain biome, I think in your the buildComponent() method of your IVillageCreationHandler you will get parameters for the mixX, minY and minZ (they call them p1, p2, and p3 in the interface declaration). You can use the position to query what biome you're in and check for desert.

 

I'm not super familiar with the above, but based on inspecting the classes I think it should work.

 

Note that you need to register your village with a "weight" that makes sense. You can learn about how that works here: https://minecraft.gamepedia.com/Village/Structures

 

I have an example of a "cloud house" that uses my cloud blocks for walls here: https://github.com/jabelar/ExampleMod-1.12/blob/master/src/main/java/com/blogspot/jabelarminecraft/examplemod/worldgen/structures/villages/VillageHouseCloud.java 

Edited by jabelar

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

On 2/24/2018 at 5:57 PM, jabelar said:

The IVillageCreationHandler is supposed to be registered to the village registry with VillageRegistry.instance().registerVillageCreationHandler()

My main class doesn't seem to be liking that. Keeps saying that it cannot be resolved or is not a field. The MapGenStructureIO thing seems to work though. And I think this works for checking the biome. world.getBiome(new BlockPos(sBoundingBox.minX, sBoundingBox.minY, sBoundingBox.minZ) . I think.

 

I did get a bit lost in your example code, as I didn't realize that you had both a "cloud house" and "cloud village". Kept getting confused.

 

Still confused, I will post links to my github, with links to related files.

Nothing is printed to the console, which means that villageCropPeppers is never even being ran. This leads me to believe that is is VillagerRegistry.instance().registerVillageCreationHandler(Reference.MODVILLAGEREGISTER); 's fault, (I have commented it out, as it errors), because that part needs to be ran. Otherwise, I think I am good. think

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Link to comment
Share on other sites

My example code goes further than just adding a piece. But I've been writing some tutorials on world generation and now have one for village stuff. See: http://jabelarminecraft.blogspot.com/p/minecraft-modding-custom-villages.html

 

Note that one section on that page is specifically related to adding a piece to vanilla villages. Follow that part. 

 

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Alright, got my code to work, and after several hours of debugging, I realized that the second for loop in the double for loop in the addComponentParts section was checking the first variable, meaning that it would get stuck trying to increase j to basically infinity. much fun was had. After that was done, I finally got it to generate, and now I just have to get the numbers right on where the crops actually spawn.

 

The only problem now is that beet roots don't seem to like the "age" property, and the game crashes if I try to set their age. Is there a solution, or am I going to have to not spawn beetroots at all?

Professional Hot Garbage Programmer.

https://github.com/Bedrockbreaker/

Link to comment
Share on other sites

BlockBeetroot.BEETROOT_AGE

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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



×
×
  • Create New...

Important Information

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