I did some digging and found hard coded blocks not being added to map model locations so that the variants are not loaded.
net.minecraftforge.client.model.ModelLoader.java
<code>
private void loadBlocks()
{
Map<IBlockState, ModelResourceLocation> stateMap = blockModelShapes.getBlockStateMapper().putAllStateModelLocations();
loadVariants(stateMap.values());
}
</code>
net.minecraft.client.renderer.BlockModelShapes.java
<code>
public void registerBlockWithStateMapper(Block assoc, IStateMapper stateMapper)
{
this.blockStateMapper.registerBlockStateMapper(assoc, stateMapper);
}
public void registerBuiltInBlocks(Block ... builtIns)
{
this.blockStateMapper.registerBuiltInBlocks(builtIns);
}
private void registerAllBlocks()
{
this.registerBuiltInBlocks(new Block[] {Blocks.air, Blocks.flowing_water, Blocks.water, Blocks.flowing_lava, Blocks.lava, Blocks.piston_extension, Blocks.chest, Blocks.ender_chest, Blocks.trapped_chest, Blocks.standing_sign, Blocks.skull, Blocks.end_portal, Blocks.barrier, Blocks.wall_sign, Blocks.wall_banner, Blocks.standing_banner});
this.registerBlockWithStateMapper(Blocks.stone, (new StateMap.Builder()).setProperty(BlockStone.VARIANT).build());
this.registerBlockWithStateMapper(Blocks.prismarine, (new StateMap.Builder()).setProperty(BlockPrismarine.VARIANT).build());
. . .
</code>
net.minecraft.client.renderer.block.statemap.BlockStateMapper.java
<code>
public class BlockStateMapper
{
private Map blockStateMap = Maps.newIdentityHashMap();
private Set setBuiltInBlocks = Sets.newIdentityHashSet();
private static final String __OBFID = "CL_00002478";
public void registerBlockStateMapper(Block p_178447_1_, IStateMapper p_178447_2_)
{
this.blockStateMap.put(p_178447_1_, p_178447_2_);
}
public void registerBuiltInBlocks(Block ... p_178448_1_)
{
Collections.addAll(this.setBuiltInBlocks, p_178448_1_);
}
public Map putAllStateModelLocations()
{
IdentityHashMap identityhashmap = Maps.newIdentityHashMap();
Iterator iterator = Block.blockRegistry.iterator();
while (iterator.hasNext())
{
Block block = (Block)iterator.next();
if (!this.setBuiltInBlocks.contains(block))
{
identityhashmap.putAll(((IStateMapper)Objects.firstNonNull(this.blockStateMap.get(block), new DefaultStateMapper())).putStateModelLocations(block));
}
}
return identityhashmap;
}
}
</code>
But I was able to create some basic json files and have been able to get the block working.
blockstates.crusher_extenstion.json
<code>
{
"variants": {
}
}
</code>
blocks.crusher_extension.json
<code>
{
"parent": "block/cube_all",
"textures": {
"all": "tools:blocks/transparent"
}
}
</code>
Also on block registry passing in a null reference for the item class so that does require an item json file.
<code>
GameRegistry.registerBlock(crusher, ItemCrusher.class, "crusher");
GameRegistry.registerBlock(crusher_head, null, "crusher_head");
GameRegistry.registerBlock(crusher_extension, null, "crusher_extension");
</code>
Thanks for the help, definitely a good learning experience.
Jim