Jump to content

Recommended Posts

Posted

While I know Java pretty well, I am very new to modding. In my mod I want to add metallurgy. The fundamentals of the mod is creating new alloys through the use of a special crafting table. Each alloy has five attributes: strength, durability, resistance, density and weight. These could easily be set to int fields. But the problem I am running into is how I can create new items after everything has been initiliazed. Can I even do this? Would I just have to modify attributes of a base Alloy item? If it is possible, I would like to add it to the world's save. Is it possible to create a new folder alloys in each save, put JSON files into it and save the alloy's attributes within the JSON? This would have the benefit of the user being able to drag-and-drop their alloys into new worlds. It would also be nice to give the user the the ability to do: //give @s [modid]:[alloy_name], or at least //give @s [modid]:alloy 1 0 {type:[alloy_name]}. Anyways, thanks!

Posted (edited)

You can not create any item after pre-initialization has finished. The code is built specifically to that effect.

 

If you must, you can allow the end-user to create new items through JSON or any other means, but those items will not exist until Minecraft launches once more, and detects the new items during the registry-events.
This however has it's drawbacks, especially with constant addition and possibly subtractions from the registries.

It would be for the best if you created a base-alloy item, register that once, and then edit it's stat with NBT, similarily to how Tinkers' Construct creates it's tools.
You can edit many, many different client-side stats of the alloys, such as name, icon/model etc, to distinguish them. They will still all use the same [modid]:[name] but again, as with Tinker tools, you can spawn them in with specific NBT data.
If you sort out all your different possible stats (or just some of them) the different alloys can be added to your CreativeTab (and thus also automatically into JEI if installed) to make it simpler to spawn in.

Edited by Matryoshika

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Posted
7 hours ago, Matryoshika said:

You can not create any item after pre-initialization has finished. The code is built specifically to that effect.

Not quite correct. Registries events (where you should be making your items) are fired right after preInit. But yes, after these events finish firing, you can’t add any objects to any registries. 

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)

Posted

I do something like this in one of my mods:

https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/industry/item/ItemCastingMold.java

 

It has a model defined by its nbt values. I even create a new variant over here in a different mod:

https://github.com/Draco18s/ReasonableRealism/blob/1.12.1/src/main/java/com/draco18s/farming/integration/IndustryIntegration.java

 

Note also that this method can't create new models after the registry events either, though in this case it is because of the way the model bakery works, but there are solutions for more dynamic models (but I didn't need it). You could easily use a colored model for something like metal ingots, which would all use a single predefined model but with a color multiplier that can be whatever value you want. 

 

For things like attack damage and durabilit, you're going to want to take a look at this (older 1.10 code that hasn't been updated):

https://github.com/Draco18s/Artifacts/blob/master/main/java/com/draco18s/artifacts/item/ItemArtifact.java

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.

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.