Jump to content

[1.12.2] Creating New World-Bound Items After Initilization


Recommended Posts

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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.

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

    • https://pastebin.com/CKfYxe6f thats the mod list its just some mods that i like and grouped together along with some newer mods that caught my eye. i load into minecraft fine, click singleplayer, this is a new modpack so i click create new world, everything seems fine and then i click create new world it starts preparing for world creation and then this error message pops up. Errors in currently selected datapacks prevented the world from loading. You can either try to load it with only the vanilla data pack ("safe mode"), or go back to the title screen and fix it manually. The game doesnt crash so I don't know if a crash report would help. when i click safe mode the screen freezes for a minute and then nothing happens and im still on that error screen. clicking back to title screen takes me back to the title screen. in the data packs screen there is a lot of red data packs. ive tried turning them all off but then when it tries to validate it says "Data pack validation failed!" also all the data packs just automatically downloaded with the mods i havnt added any extra ones. i can post a picture of the select data packs screen but it would take a lot of scrolling and multiple pictures so just let me know if i need to do that. a few examples of the text on the red dats packs are the following. - examplemod resources (this is what most of them say) - resources used for aquaculture (or whatever other mod name) - mobcatcher resources (again changes with mod name) -${mod_name} some also have mod descriptions or just the mod name or other variations of modname stuff or modname resources and when hovering over any of the red ones it says (made for an older version of minecraft) even when the mod says its for 1.18.2. lmk if you need any more info like logs or stuff and sorry for the long message just want to give lots of info.  
    • Problem was in specific method in Screen (version 1.20.4) protected <T extends GuiEventListener & Renderable & NarratableEntry> T addRenderableWidget(T arg) { this.renderables.add((Renderable)arg); return this.addWidget(arg); } I assume because of these multi-inheritance interfaces. After rewriting it in the fields, everything worked. Final working code: @Shadow @Final public List<Renderable> renderables; @Shadow @Final private List<GuiEventListener> children; @Shadow @Final private List<NarratableEntry> narratables; public void custom$addRenderableWidget(AbstractWidget widget) { renderables.add(widget); children.add(widget); narratables.add(widget); }  
    • hey, I'm trying to make a server with mods and it's not working. when I run it without mods, it works normally Log:[27maj2024 17:53:12.540] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 40.2.0, --fml.mcVersion, 1.18.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220404.173914] [27maj2024 17:53:12.544] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 9.1.3+9.1.3+main.9b69c82a starting: java version 22.0.1 by Oracle Corporation [27maj2024 17:53:12.660] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/kamil/Desktop/server/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2314!/ Service=ModLauncher Env=SERVER [27maj2024 17:53:13.006] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\kamil\Desktop\server\libraries\net\minecraftforge\fmlcore\1.18.2-40.2.0\fmlcore-1.18.2-40.2.0.jar is missing mods.toml file [27maj2024 17:53:13.010] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\kamil\Desktop\server\libraries\net\minecraftforge\javafmllanguage\1.18.2-40.2.0\javafmllanguage-1.18.2-40.2.0.jar is missing mods.toml file [27maj2024 17:53:13.013] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\kamil\Desktop\server\libraries\net\minecraftforge\lowcodelanguage\1.18.2-40.2.0\lowcodelanguage-1.18.2-40.2.0.jar is missing mods.toml file [27maj2024 17:53:13.015] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\kamil\Desktop\server\libraries\net\minecraftforge\mclanguage\1.18.2-40.2.0\mclanguage-1.18.2-40.2.0.jar is missing mods.toml file [27maj2024 17:53:13.101] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: No dependencies to load found. Skipping! [27maj2024 17:53:15.035] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [27maj2024 17:53:15.075] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeserver' with arguments [] [27maj2024 17:53:15.139] [main/WARN] [mixin/]: Reference map 'bloodmagic.refmap.json' for bloodmagic.mixins.json could not be read. If this is a development environment you can ignore this message [27maj2024 17:53:15.415] [main/WARN] [mixin/]: Error loading class: net/minecraft/world/item/ItemStack (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.416] [main/WARN] [mixin/]: @Mixin target net.minecraft.world.item.ItemStack was not found placebo.mixins.json:ItemStackMixin [27maj2024 17:53:15.439] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.447] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.449] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.456] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.457] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.461] [main/WARN] [mixin/]: Error loading class: java/util/Map$Entry (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.461] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.463] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:15.463] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 66) [27maj2024 17:53:16.436] [main/WARN] [mixin/]: Error loading class: java/lang/Boolean (java.lang.IllegalArgumentException: Unsupported class file major version 66) Mods:https://ibb.co/xj5qHYK
    • How did you manage to get it working?
    • Hi Everyone! I was playing in modded singleplayer, and suddenly mobs stopped moving, I couldn't hit them, basically I could do things but nothing happened, like destroying blocks didn't drop it, things like that. When I tried to quit and save my world, it was just writing Saving World but nothing happened, and eventually I always had to restart my computer to stop minecraft. Can someone please help me find out what could cause the issue? Here is my debug log: https://pastebin.com/X9F0M9sq This is not the complete debug log, I was pasting the last couple of hundreds of rows because of the size. In case it's needed, I will repaste rows earlier. Thank you very much in advance!  
  • Topics

×
×
  • Create New...

Important Information

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