Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[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.

Guest
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Okay, so i am playing on a online hosting with around 80 mods, this just randomly happens when we play. Help please?    [15:47:08] [Server thread/ERROR] [ne.mi.ev.EventBus/EVENTBUS]: Exception caught during firing event: net.minecraft.entity.LivingEntity.func_70016_h(DDD)V Index: 2 Listeners: 0: NORMAL 1: ASM: com.bobmowzie.mowziesmobs.server.ServerEventHandler@13a5bc1a onLivingJump(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V 2: ASM: class com.deltajay.tonsofenchants.enchantments.normalench.feet.Springy jumpHigher(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V 3: ASM: class com.ma.events.CommonEventHandler onLivingJump(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V 4: ASM: blusunrize.immersiveengineering.common.EventHandler@24572eae onLivingJump(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V 5: LOW 6: ASM: class io.github.apace100.origins.OriginForgeEventHandler livingJump(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V 7: LOWEST 8: ASM: alpvax.mc.goprone.GoProne@17346c35 onPlayerJump(Lnet/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent;)V java.lang.NoSuchMethodError: net.minecraft.entity.LivingEntity.func_70016_h(DDD)V at com.deltajay.tonsofenchants.enchantments.normalench.feet.Springy.jumpHigher(Springy.java:70) at net.minecraftforge.eventbus.ASMEventHandler_114_Springy_jumpHigher_LivingJumpEvent.invoke(.dynamic) at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) at net.minecraftforge.common.ForgeHooks.onLivingJump(ForgeHooks.java:460) at net.minecraft.entity.LivingEntity.func_70664_aZ(LivingEntity.java:1877) at net.minecraft.entity.LivingEntity.func_70636_d(LivingEntity.java:2430) at net.minecraft.entity.MobEntity.func_70636_d(MobEntity.java:488) at net.minecraft.entity.monster.MonsterEntity.func_70636_d(SourceFile:43) at net.minecraft.entity.monster.AbstractSkeletonEntity.func_70636_d(AbstractSkeletonEntity.java:116) at net.minecraft.entity.LivingEntity.func_70071_h_(LivingEntity.java:2158) at net.minecraft.entity.MobEntity.func_70071_h_(MobEntity.java:300) at net.minecraft.world.server.ServerWorld.func_217479_a(ServerWorld.java:611) at net.minecraft.world.World.func_217390_a(World.java:554) at net.minecraft.world.server.ServerWorld.func_72835_b(ServerWorld.java:404) at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:851) at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:291) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:787) at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:642) at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServer.java:232) at java.lang.Thread.run(Thread.java:748) [15:47:08] [Server thread/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID 5f4e4d65-4ba2-4d02-90c3-f5df12470a80 [15:47:08] [Server thread/ERROR] [minecraft/MinecraftServer]: Encountered an unexpected exception net.minecraft.crash.ReportedException: Ticking entity at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:855) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixin.terraforged.json:common.MixinMinecraftServer,pl:mixin:APP:betterendforge.mixins.json:MinecraftServerMixin,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:291) ~[?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:787) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixin.terraforged.json:common.MixinMinecraftServer,pl:mixin:APP:betterendforge.mixins.json:MinecraftServerMixin,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:642) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixin.terraforged.json:common.MixinMinecraftServer,pl:mixin:APP:betterendforge.mixins.json:MinecraftServerMixin,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServer.java:232) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixin.terraforged.json:common.MixinMinecraftServer,pl:mixin:APP:betterendforge.mixins.json:MinecraftServerMixin,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:A,pl:runtimedistcleaner:A} at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242] {} Caused by: java.lang.NoSuchMethodError: net.minecraft.entity.LivingEntity.func_70016_h(DDD)V at com.deltajay.tonsofenchants.enchantments.normalench.feet.Springy.jumpHigher(Springy.java:70) ~[tonsofenchants:1.0] {re:classloading} at net.minecraftforge.eventbus.ASMEventHandler_114_Springy_jumpHigher_LivingJumpEvent.invoke(.dynamic) ~[?:?] {} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.common.ForgeHooks.onLivingJump(ForgeHooks.java:460) ~[forge:?] {re:mixin,re:classloading,pl:mixin:APP:origins.forge.mixins.json:ForgeHooksMixin,pl:mixin:A} at net.minecraft.entity.LivingEntity.func_70664_aZ(LivingEntity.java:1877) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:blue_skies.mixins.json:LivingEntityMixin,pl:mixin:APP:caelus.mixins.json:LivingEntityMixin,pl:mixin:APP:citadel.mixins.json:LivingEntityMixin,pl:mixin:APP:curioofundying.mixins.json:LivingEntityMixin,pl:mixin:APP:assets/offhandcombat/offhandcombat.mixins.json:SwingEntityMixin,pl:mixin:APP:origins.mixins.json:LivingEntityMixin,pl:mixin:APP:origins.forge.mixins.json:LivingEntityMixin,pl:mixin:APP:enhancedcelestials.mixins.json:MixinLivingEntity,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.entity.LivingEntity.func_70636_d(LivingEntity.java:2430) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:blue_skies.mixins.json:LivingEntityMixin,pl:mixin:APP:caelus.mixins.json:LivingEntityMixin,pl:mixin:APP:citadel.mixins.json:LivingEntityMixin,pl:mixin:APP:curioofundying.mixins.json:LivingEntityMixin,pl:mixin:APP:assets/offhandcombat/offhandcombat.mixins.json:SwingEntityMixin,pl:mixin:APP:origins.mixins.json:LivingEntityMixin,pl:mixin:APP:origins.forge.mixins.json:LivingEntityMixin,pl:mixin:APP:enhancedcelestials.mixins.json:MixinLivingEntity,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.entity.MobEntity.func_70636_d(MobEntity.java:488) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.entity.monster.MonsterEntity.func_70636_d(SourceFile:43) ~[?:?] {re:mixin,re:classloading,pl:mixin:APP:betterendforge.mixins.json:MonsterEntityMixin,pl:mixin:A} at net.minecraft.entity.monster.AbstractSkeletonEntity.func_70636_d(AbstractSkeletonEntity.java:116) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:fml:forge:bows.5,xf:fml:forge:bows.4} at net.minecraft.entity.LivingEntity.func_70071_h_(LivingEntity.java:2158) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:blue_skies.mixins.json:LivingEntityMixin,pl:mixin:APP:caelus.mixins.json:LivingEntityMixin,pl:mixin:APP:citadel.mixins.json:LivingEntityMixin,pl:mixin:APP:curioofundying.mixins.json:LivingEntityMixin,pl:mixin:APP:assets/offhandcombat/offhandcombat.mixins.json:SwingEntityMixin,pl:mixin:APP:origins.mixins.json:LivingEntityMixin,pl:mixin:APP:origins.forge.mixins.json:LivingEntityMixin,pl:mixin:APP:enhancedcelestials.mixins.json:MixinLivingEntity,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.entity.MobEntity.func_70071_h_(MobEntity.java:300) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.world.server.ServerWorld.func_217479_a(ServerWorld.java:611) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:ServerWorldMixin,pl:mixin:APP:betternether.mixins.json:ServerWorldMixin,pl:mixin:APP:immersiveengineering.mixins.json:coremods.ServerWorldMixin,pl:mixin:APP:enhancedcelestials.mixins.json:MixinServerWorld,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.world.World.func_217390_a(World.java:554) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:twilightforest:hitbox,pl:mixin:APP:sereneseasons.mixins.json:MixinWorld,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.world.server.ServerWorld.func_72835_b(ServerWorld.java:404) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:abnormals_core.mixins.json:ServerWorldMixin,pl:mixin:APP:betternether.mixins.json:ServerWorldMixin,pl:mixin:APP:immersiveengineering.mixins.json:coremods.ServerWorldMixin,pl:mixin:APP:enhancedcelestials.mixins.json:MixinServerWorld,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:851) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixin.terraforged.json:common.MixinMinecraftServer,pl:mixin:APP:betterendforge.mixins.json:MinecraftServerMixin,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:A,pl:runtimedistcleaner:A} ... 5 more
    • ReplayMod is a fabric-only mod, why do they even have it...
    • You can save the color of your entity in it's class (make sure it's saved to the NBT and is synced) and after that use the instance that's passed to the method for the texture in your model to check for the color and pass a different texture depending on that. You can have an enum with all your colors and then save the ordinal of the color to the NBT.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.