Jump to content

[Solved] [1.12.2] Model variants not recognized


SuperManitu

Recommended Posts

Hello, I tried two days to get this working and have no idea why:

I have a (currently) rather simple block model. If I have no Blockstates it renders just fine. Now I wanted to add variants to it, so I added two PropertyEnum fields to my Block class:

Spoiler

package techmod.cablecar;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
import techmod.TechMod;

public class BlockCablecarTrack extends Block {

	public static final String blockName = "cablecar_track";

	public static final PropertyEnum<EnumFacingExtended> firstEnd = PropertyEnum.create("first_end", EnumFacingExtended.class);
    //public static final PropertyEnum<EnumFacingExtended> secondEnd = PropertyEnum.create("second_end", EnumFacingExtended.class);
	
	@ObjectHolder(TechMod.MODID + ":" + blockName)
	public static final Block instance = null;

	public BlockCablecarTrack() {
		super(Material.CIRCUITS);
		this.setCreativeTab(CreativeTabs.TRANSPORTATION);
		this.setUnlocalizedName(TechMod.MODID + "." + blockName);
		this.setRegistryName(new ResourceLocation(TechMod.MODID, blockName));
		this.setDefaultState(this.blockState.getBaseState()
                .withProperty(firstEnd, EnumFacingExtended.NORTH)
                //.withProperty(secondEnd, EnumFacingExtended.SOUTH)
        );
	}

	@Override
    public BlockStateContainer createBlockState() {
	    return new BlockStateContainer(this, firstEnd/*, secondEnd*/);
    }

	@Override
    public boolean isOpaqueCube(IBlockState state) {
	    return false;
    }

    @Override
    public boolean isFullCube(IBlockState state) {
        return false;
    }

    @Override
    public int getMetaFromState(IBlockState state) {
	    return 0;
    }

    @Override
    public IBlockState getStateFromMeta(int meta) {
        return this.getDefaultState();
    }

    @Override
    public BlockRenderLayer getBlockLayer()
    {
        return BlockRenderLayer.CUTOUT;
    }
}

 

Then I used the forge blockstate JSON format to define the variants:

Spoiler

{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "rail": "blocks/rail_normal"
        },
        "model": "wooden_pressure_plate_up"
    },
    "variants": {
        "first_end": {
            "north": {
                "submodel": { "model": "techmod:cablecar_track_normal" }
            },
            "south": {
                "submodel": { "model": "techmod:cablecar_track_normal", "y": 180 }
            },
            "west": {
                "submodel": { "model": "techmod:cablecar_track_normal", "y": 270 }
            },
            "east": {
                "submodel": { "model": "techmod:cablecar_track_normal", "y": 90 }
            },
            "none": {},
            "north_ascended": {},
            "south_ascended": {},
            "west_ascended": {},
            "east_ascended": {},
            "north_descended": {},
            "sout_descended": {},
            "west_descended": {},
            "east_descended": {}
        }
    }
}

 

But I always get "Missing variant Exceptions" even if they are clearly stated in my Blockstate json:

Spoiler

[15:53:35] [main/ERROR] [FML]: Exception loading model for variant techmod:cablecar_track#first_end=west_ascended for blockstate "techmod:cablecar_track[first_end=west_ascended]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model techmod:cablecar_track#first_end=west_ascended with loader VariantLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:233) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:221) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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:83) ~[ModelBlockDefinition.class:?]
	at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1169) ~[ModelLoader$VariantLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
	... 21 more
[15:53:35] [main/ERROR] [FML]: Exception loading blockstate for the variant techmod:cablecar_track#first_end=west_ascended: 
java.lang.Exception: Could not load model definition for variant techmod:cablecar_track
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:266) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:221) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of 'techmod:cablecar_track' from: 'techmod:blockstates/cablecar_track.json' in resourcepack: 'FMLFileResourcePack:Tech Mod (Working title)'
	at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:246) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:262) ~[ModelLoader.class:?]
	... 20 more
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Not a JSON Object: "techmod:cablecar_track_normal"
	at com.google.gson.Gson.fromJson(Gson.java:899) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:724) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:434) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Deserializer.deserialize(ForgeBlockStateV1.java:111) ~[ForgeBlockStateV1$Deserializer.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Deserializer.deserialize(ForgeBlockStateV1.java:68) ~[ForgeBlockStateV1$Deserializer.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:825) ~[Gson.class:?]
	at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:84) ~[BlockStateLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:262) ~[ModelLoader.class:?]
	... 20 more
Caused by: java.lang.IllegalStateException: Not a JSON Object: "techmod:cablecar_track_normal"
	at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:90) ~[JsonElement.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:474) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:434) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:724) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Variant$Deserializer.deserialize(ForgeBlockStateV1.java:434) ~[ForgeBlockStateV1$Variant$Deserializer.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Deserializer.deserialize(ForgeBlockStateV1.java:111) ~[ForgeBlockStateV1$Deserializer.class:?]
	at net.minecraftforge.client.model.ForgeBlockStateV1$Deserializer.deserialize(ForgeBlockStateV1.java:68) ~[ForgeBlockStateV1$Deserializer.class:?]
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
	at com.google.gson.Gson.fromJson(Gson.java:825) ~[Gson.class:?]
	at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:84) ~[BlockStateLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:262) ~[ModelLoader.class:?]
	... 20 more
[15:53:35] [main/ERROR] [FML]: Exception loading model for variant techmod:cablecar_track#first_end=north_ascended for blockstate "techmod:cablecar_track[first_end=north_ascended]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model techmod:cablecar_track#first_end=north_ascended with loader VariantLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:233) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:221) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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:83) ~[ModelBlockDefinition.class:?]
	at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1169) ~[ModelLoader$VariantLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
	... 21 more
[15:53:35] [main/ERROR] [FML]: Exception loading model for variant techmod:cablecar_track#first_end=west_descended for blockstate "techmod:cablecar_track[first_end=west_descended]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model techmod:cablecar_track#first_end=west_descended with loader VariantLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:233) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:221) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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:83) ~[ModelBlockDefinition.class:?]
	at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1169) ~[ModelLoader$VariantLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
	... 21 more
[15:53:35] [main/ERROR] [FML]: Exception loading model for variant techmod:cablecar_track#first_end=south_ascended for blockstate "techmod:cablecar_track[first_end=south_ascended]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model techmod:cablecar_track#first_end=south_ascended with loader VariantLoader.INSTANCE, skipping
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
	at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:233) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:221) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:121) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
	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:83) ~[ModelBlockDefinition.class:?]
	at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1169) ~[ModelLoader$VariantLoader.class:?]
	at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
	... 21 more
[15:53:35] [main/FATAL] [FML]: Suppressed additional 8 model loading errors for domain techmod

 

I'm also confused about the `Not a JSON Object: "techmod:cablecar_track_normal"` Error, because the model worked just fine without variants

Thank you.

 

Edited by SuperManitu
typo, solved
Link to comment
Share on other sites

Finally found the issue: I have to name the submodel. I thought this was only needed if you want to have more than one.

Final blockstate json:

Spoiler

{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "rail": "blocks/rail_normal"
        },
        "model": "wooden_pressure_plate_up"
    },
    "variants": {
        "first_end": {
            "north": {
                "submodel": { "track": { "model": "techmod:cablecar_track_normal" }}
            },
            "south": {
                "submodel": { "track": { "model": "techmod:cablecar_track_normal", "y": 180 }}
            },
            "west": {
                "submodel": { "track": { "model": "techmod:cablecar_track_normal", "y": 270 }}
            },
            "east": {
                "submodel": { "track": { "model": "techmod:cablecar_track_normal", "y": 90 }}
            },
            "none": {},
            "north_ascended": {},
            "south_ascended": {},
            "west_ascended": {},
            "east_ascended": {},
            "north_descended": {},
            "south_descended": {},
            "west_descended": {},
            "east_descended": {}
        }
    }
}

 

 

Link to comment
Share on other sites

On 12/26/2017 at 7:00 AM, SuperManitu said:

Finally found the issue: I have to name the submodel. I thought this was only needed if you want to have more than one.

No, the problem is that you didn't correctly create a valid JSON file, here's the underlying error you had:

Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Not a JSON Object: "techmod:cablecar_track_normal"

 

And your original JSON:

"north": {
    "submodel": {
        "model": "techmod:cablecar_track_normal"
    }
}

"model" (or rather, the first child of "submodel") is expected to be an Object and you have a string.

If you look at your corrected JSON file:

"north": {
    "submodel": {
        "track": {
            "model": "techmod:cablecar_track_normal"
        }
    }
}

You can see that now you have an Object child of "submodel"

 

If we look at the docs...we see two examples:

 

            1: {
                // if it is true, it will add the wall model and combine it with the pressure plate
                "submodel": "wall_n"
            },
            2: {
                "submodel": {
                    "pillar1": { "model": "wall_n" },
                    "pillar2": { "model": "wall_n", "y": 90 }
                }
            }

 

Yes, the one that has named objects does have TWO of them, but look carefully at how the first example is handled. "submodel" here is a key for a string! You made it a key for an object that then contained a string!

 

If you had done this instead:

"north": {
    "submodel": "techmod:cablecar_track_normal"
}

Everything would have been fine.

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

2 hours ago, SuperManitu said:

From the grammer my JSON would have been valid. And because it is still `forge_marker: 1`, I assumed the grammar would still work

Oh your file was valid JSON, that wasn't your problem. It was that it failed to deserialize into the expected types.

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.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.