Dylem Posted July 15, 2017 Posted July 15, 2017 Hello, I tried to make variants for an item and I get a NullPointerException from this function (which is taken from ItemDye class) : @Override public String getUnlocalizedName(ItemStack stack) { int i = stack.getMetadata(); return super.getUnlocalizedName() + "." + EnumVariant.byMetadata(i).getName(); } However, when I remove the function, my 3 variants have the same unlocalized name so it doesn't load textures or names. Crash logs : https://pastebin.com/WcPiNHMb Full project code on github : https://github.com/dylem/DylemTestMod Quote
Animefan8888 Posted July 15, 2017 Posted July 15, 2017 4 minutes ago, Dylem said: Hello, I tried to make variants for an item and I get a NullPointerException from this function (which is taken from ItemDye class) : @Override public String getUnlocalizedName(ItemStack stack) { int i = stack.getMetadata(); return super.getUnlocalizedName() + "." + EnumVariant.byMetadata(i).getName(); } However, when I remove the function, my 3 variants have the same unlocalized name so it doesn't load textures or names. Crash logs : https://pastebin.com/WcPiNHMb Full project code on github : https://github.com/dylem/DylemTestMod You never put any values in your EnumVariant.META_LOOKUP. You very well could use the EnumVariant#values() 1 Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
Dylem Posted July 15, 2017 Author Posted July 15, 2017 Nice, thank you ! Removed it because I wanted to change it and then forgot about it. Works now Quote
Dylem Posted July 15, 2017 Author Posted July 15, 2017 One more thing, the textures are not showing up. Instead it prints the location which seems right to me : Quote
Jay Avery Posted July 15, 2017 Posted July 15, 2017 Post the latest log, which should contain model loading errors. Quote
Dylem Posted July 15, 2017 Author Posted July 15, 2017 15 minutes ago, Jay Avery said: Post the latest log, which should contain model loading errors. Unfortunately it does not, otherwise I would have fixed it myself. Here is the log : https://pastebin.com/G8WJsCkR Quote
Jay Avery Posted July 15, 2017 Posted July 15, 2017 16 minutes ago, Dylem said: Unfortunately it does not, otherwise I would have fixed it myself. Here is the log : https://pastebin.com/G8WJsCkR Are your model registration methods definitely being called? Quote
Dylem Posted July 15, 2017 Author Posted July 15, 2017 6 minutes ago, Jay Avery said: Are your model registration methods definitely being called? Yes They are, everything is called. Quote
Choonster Posted July 15, 2017 Posted July 15, 2017 (edited) The logging of missing models was broken in Forge 1.12-14.21.0.2363 (commit dc043ac) and fixed in Forge 1.12-14.21.1.2390 (commit ede05a2). Update Forge and run Minecraft again to see the model errors. Edited July 22, 2017 by Choonster Fixed broken link. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
Dylem Posted July 15, 2017 Author Posted July 15, 2017 3 hours ago, Choonster said: The logging of missing models was broken in Forge 1.12-14.21.0.2363 (commit dc043ac) and fixed in Forge 1.12-14.21.1.2390 (commit ede05a2). Update Forge and run Minecraft again to see the model errors. Thanks, I get the error now. Here it is : https://pastebin.com/0yRa9HMw Apparently it says it doesn't find the file item_variants.json. I thought I only needed the jsons for the variants ? I'm a bit confused. Do I need to set the first variant as the "base" and redirect to the other variants from its json ? Quote
Dylem Posted July 16, 2017 Author Posted July 16, 2017 (edited) I made a blockstate but still get the same errors of missing models. @Choonster how do you have no models for your variants in your testmod3 mod and still get it working with blockstates only ? I tried to do the same and get an incredible ammount of errors... Edited July 16, 2017 by Dylem Quote
Choonster Posted July 16, 2017 Posted July 16, 2017 7 minutes ago, Dylem said: I made a blockstate but still get the same errors of missing models. @Choonster how do you have no models for your variants in your testmod3 mod and still get it working with blockstates only ? I tried to do the same and get an incredible ammount of errors... Forge will automatically try to load the model you've specified for an Item from a blockstates file when it can't find an item model with that name. I have a more detailed description of the model loading process and how ModelResourceLocations are mapped to models here. Are you sure you have a blockstates file called assets/test_mod/blockstates/item_variants.json with the variants test_mod:item_variants_a, test_mod:item_variants_b and test_mod:item_variants_c? Variants don't usually have a domain, they're just a single string. Post your blockstates file and its path. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
Dylem Posted July 16, 2017 Author Posted July 16, 2017 30 minutes ago, Choonster said: Forge will automatically try to load the model you've specified for an Item from a blockstates file when it can't find an item model with that name. I have a more detailed description of the model loading process and how ModelResourceLocations are mapped to models here. Are you sure you have a blockstates file called assets/test_mod/blockstates/item_variants.json with the variants test_mod:item_variants_a, test_mod:item_variants_b and test_mod:item_variants_c? Variants don't usually have a domain, they're just a single string. Post your blockstates file and its path. private void registerItemModelForMeta(final Item item, final int metadata, final ModelResourceLocation modelResourceLocation) { System.out.println(modelResourceLocation.toString()); ModelLoader.setCustomModelResourceLocation(item, metadata, modelResourceLocation); } That prints : [15:04:37] [main/INFO] [STDOUT]: [net.dylem.test_mod.init.ModItems$ModelHandler:registerItemModelForMeta:146]: test_mod:item_variants#test_mod:item_variants=a [15:04:37] [main/INFO] [STDOUT]: [net.dylem.test_mod.init.ModItems$ModelHandler:registerItemModelForMeta:146]: test_mod:item_variants#test_mod:item_variants=b [15:04:37] [main/INFO] [STDOUT]: [net.dylem.test_mod.init.ModItems$ModelHandler:registerItemModelForMeta:146]: test_mod:item_variants#test_mod:item_variants=c Here is the json : { "forge_marker": 1, "defaults": { "model": "item/generated" }, "variants": { "variant": { "a": { "textures": { "layer0": "test_mod:items/variants.a" } }, "b": { "textures": { "layer0": "test_mod:items/variants.b" } }, "c": { "textures": { "layer0": "test_mod:items/variants.c" } } } } } From what you did in your mod, that should work, shouldn't it ? Quote
Dylem Posted July 16, 2017 Author Posted July 16, 2017 31 minutes ago, diesieben07 said: Your JSON specifies 3 variants: "variant=a", "variant=b" and "variant=c". You tell Minecraft to load "test_mod:item_variants=a", "test_mod:item_variants=b" and "test_mod:item_variants=c". Not sure what you expected but a "hey, I cannot find what you told me to load". Always keep in mind: Variant strings are not specially parsed. They are simple strings. They either match exactly, or they don't. Choonster did exactly what I did and it works for him, that's why I'm confused. I tried to replace "variant" by "test_mod:item_variants", or just "item_variants" and it doesn't work either. { "forge_marker": 1, "defaults": { "model": "test_mod:item/generated" }, "variants": { "test_mod:item_variants": { "a": { "textures": { "layer0": "test_mod:items/variants.a" } }, "b": { "textures": { "layer0": "test_mod:items/variants.b" } }, "c": { "textures": { "layer0": "test_mod:items/variants.c" } } } } } Quote
Dylem Posted July 16, 2017 Author Posted July 16, 2017 Problem solved ! The error was still the same, but it was caused by the fact that I didn't have a generic item model file in models/block/ ! Thank you all ! Quote
Recommended Posts
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.