These are the files I have in src/main/jav:
FirstMod.java
package com.christopherb216.firstmod;
import com.christopherb216.firstmod.proxy.CommonProxy;
import init.ModItems;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = Reference.MOD_ID, name = Reference.NAME, version = Reference.VERSION, acceptedMinecraftVersions = Reference.ACCEPTED_VERSIONS)
public class FirstMod {
@Instance
public static FirstMod instance;
@SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
public static CommonProxy proxy;
@EventHandler
public void PreInit(FMLPreInitializationEvent event){
ModItems.init();
ModItems.register();
}
@EventHandler
public void Init(FMLInitializationEvent event){
proxy.init();
}
@EventHandler
public void PostInit(FMLPostInitializationEvent event){
}
}
Reference.java
package com.christopherb216.firstmod;
public class Reference {
// Mod metadata
public static final String MOD_ID = "chrfstmdmd";
public static final String NAME = "First Mod";
public static final String VERSION = "1.0";
public static final String ACCEPTED_VERSIONS = "[1.11.2]";
// Proxy data
public static final String CLIENT_PROXY_CLASS = "com.christopherb216.firstmod.proxy.ClientProxy";
public static final String SERVER_PROXY_CLASS = "com.christopherb216.firstmod.proxy.ServerProxy";
// Item data
public static enum FirstModItems {
OBSIDIANINGOT("obsidianingot", "ItemObsidianIngot");
private String unlocalizedName;
private String registryName;
FirstModItems(String unlocalizedName, String registryName){
this.unlocalizedName = unlocalizedName;
this.registryName = registryName;
}
public String getUnlocalizedName(){
return unlocalizedName;
}
public String getRegistryName(){
return registryName;
}
}
}
ModItems.java
package init;
import com.christopherb216.firstmod.Reference;
import items.ItemObsidianIngot;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class ModItems {
public static Item obsidianingot;
public static void init(){
obsidianingot = new ItemObsidianIngot();
}
public static void register(){
GameRegistry.register(obsidianingot);
}
public static void registerRenders(){
registerRender(obsidianingot);
}
private static void registerRender(Item item){
ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
}
}
ItemObsidianIngot.java
package items;
import com.christopherb216.firstmod.Reference;
import net.minecraft.item.Item;
public class ItemObsidianIngot extends Item {
public ItemObsidianIngot(){
setUnlocalizedName(Reference.FirstModItems.OBSIDIANINGOT.getUnlocalizedName());
setRegistryName(Reference.FirstModItems.OBSIDIANINGOT.getRegistryName());
}
}
ClientProxy.java
package com.christopherb216.firstmod.proxy;
import init.ModItems;
public class ClientProxy implements CommonProxy{
@Override
public void init() {
ModItems.registerRenders();
}
}
itemobsidianingot.json
{
"parent": "item/generated",
"textures": {
"layer0": "chrfstmdmd:items/obsidianingot"
},
"display": {
"thirdperson": {
"rotation": [-90,0,0],
"translation": [0,1,-3],
"scale": [0.55,0.55,0.55]
},
"firstperson": {
"rotation": [0,-135,25],
"translation": [0,4,2],
"scale": [1.7,1.7,1.7]
}
}
}
en_US.lang
item.obsidianingot.name=Obsidian Ingot
So I know that in my src/main/resources folder, everything is in the assests.chrfstmdmd folder (I should've picked an easier name). "chrfstmdmd" is my ModID. When I run the code I get this output (The two spots I'm getting my error):
[01:22:31] [Client thread/ERROR] [FML]: Exception loading model for variant chrfstmdmd:itemobsidianingot#inventory for item "chrfstmdmd:itemobsidianingot", normal location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model chrfstmdmd:item/itemobsidianingot with loader VanillaLoader.INSTANCE, skipping
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:336) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:156) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:122) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: chrfstmdmd:models/item/itemobsidianingot.json
at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:69) ~[SimpleReloadableResourceManager.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:937) ~[ModelLoader$VanillaLoader.class:?]
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
... 20 more
[01:22:31] [Client thread/ERROR] [FML]: Exception loading model for variant chrfstmdmd:itemobsidianingot#inventory for item "chrfstmdmd:itemobsidianingot", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model chrfstmdmd:itemobsidianingot#inventory with loader VariantLoader.INSTANCE, skipping
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:344) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:156) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:122) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:78) ~[ModelBlockDefinition.class:?]
at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1253) ~[ModelLoader$VariantLoader.class:?]
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
... 20 more
I've been trying to fix the "Caused by: java.io.FileNotFoundException: chrfstmdmd:models/item/itemobsidianingot.json" to no avail.
I'm almost positive this should work; the file "chrfstmdmd/models/item/itemobsidianingot.json" does in fact exists but can't be found. I've also tried using:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
instead of "ModelLoader.setCustom..." and that didn't work. I've tried moving when I register the obsidian ingot (i.e. proxy.init() that calls ModItems.registerRender(obsidianingot)) to the preInit method of FirstMod.java and it fails with a NullPointerException (for anyone interested):
I hate to ask anyone to try to read over my code for typos (as I've done for hours and haven't found any), but if there's is anything wrong with this code, it'd be greatly appreciated. Thanks.