Posted July 15, 20178 yr 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
July 15, 20178 yr 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() 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.
July 15, 20178 yr Author Nice, thank you ! Removed it because I wanted to change it and then forgot about it. Works now
July 15, 20178 yr Author One more thing, the textures are not showing up. Instead it prints the location which seems right to me :
July 15, 20178 yr Author 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
July 15, 20178 yr 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?
July 15, 20178 yr Author 6 minutes ago, Jay Avery said: Are your model registration methods definitely being called? Yes They are, everything is called.
July 15, 20178 yr 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, 20178 yr by Choonster Fixed broken link. 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.
July 15, 20178 yr Author 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 ?
July 16, 20178 yr Author 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, 20178 yr by Dylem
July 16, 20178 yr 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. 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.
July 16, 20178 yr Author 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 ?
July 16, 20178 yr Author 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" } } } } }
July 16, 20178 yr Author 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 !
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.