Hi, have been stuck for a while now on my mod, unable to test it to see if the block added is rendering correctly, namely because the act of loading the model crashes the game during PreInit, giving me this error:
[02:54:29] [Client thread/ERROR] [FML]:
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized
FML{7.2.156.1060} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
Forge{10.12.1.1060} [Minecraft Forge] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
financiacraft{0.0.1} [Financiacraft] (bin) Unloaded->Constructed->Errored
[02:54:29] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[02:54:29] [Client thread/ERROR] [FML]: Caught exception from financiacraft
net.minecraftforge.client.model.ModelFormatException: IO Exception reading model format
at net.minecraftforge.client.model.obj.WavefrontObject.<init>(WavefrontObject.java:60) ~[WavefrontObject.class:?]
at net.minecraftforge.client.model.obj.ObjModelLoader.loadInstance(ObjModelLoader.java:27) ~[ObjModelLoader.class:?]
at net.minecraftforge.client.model.AdvancedModelLoader.loadModel(AdvancedModelLoader.java:65) ~[AdvancedModelLoader.class:?]
at net.professordey.financiacraft.CustomTESR.<init>(CustomTESR.java:18) ~[CustomTESR.class:?]
at net.professordey.financiacraft.Financiacraft.preinit(Financiacraft.java:63) ~[Financiacraft.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
...
Caused by: java.io.FileNotFoundException: financiacraft:models/CoinPressBody.obj
at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:71) ~[simpleReloadableResourceManager.class:?]
at net.minecraftforge.client.model.obj.WavefrontObject.<init>(WavefrontObject.java:55) ~[WavefrontObject.class:?]
... 41 more
For a time I struggled to work out what was wrong, but I eventually determined that it couldn't find the file because it ended with ".obj". When I removed that, the file was located without error, but I then get an immediate error from the AdvancedModLoader itself:
[02:59:21] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from PREINITIALIZATION to INITIALIZATION. Loading cannot continue
[02:59:21] [Client thread/ERROR] [FML]:
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized
FML{7.2.156.1060} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
Forge{10.12.1.1060} [Minecraft Forge] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
financiacraft{0.0.1} [Financiacraft] (bin) Unloaded->Constructed->Errored
[02:59:21] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[02:59:21] [Client thread/ERROR] [FML]: Caught exception from financiacraft
java.lang.IllegalArgumentException: The resource name is not valid
at net.minecraftforge.client.model.AdvancedModelLoader.loadModel(AdvancedModelLoader.java:55) ~[AdvancedModelLoader.class:?]
at net.professordey.financiacraft.CustomTESR.<init>(CustomTESR.java:18) ~[CustomTESR.class:?]
at net.professordey.financiacraft.Financiacraft.preinit(Financiacraft.java:63) ~[Financiacraft.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
So now it's saying the resource name is invalid. Does anyone know what it's actually getting upset about and how to get around it? My model is located here: src\main\resources\assets\financiacraft\models\CoinPressBody.obj
Edit: Oops, forget to include the TESR class
package net.professordey.financiacraft;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
public class CustomTESR extends TileEntitySpecialRenderer{
private IModelCustom theModel;
private ResourceLocation theTexture;
private ResourceLocation modelnam;
public CustomTESR(String modelname){
modelnam = new ResourceLocation("financiacraft", "models/" + modelname);
theModel = AdvancedModelLoader.loadModel(modelnam);
theTexture = new ResourceLocation("financiacraft", modelname +".png");
}
@Override
public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) {
bindTexture(theTexture);
theModel.renderAll();
}
}