Ошибка чтения модели блока (а вернее файла blockstates, он его вообще не видит...)

Версия Minecraft
1.12+
56
2
4
Не загружается модель блока, ни с состоянием normal, ни с пользовательскими. По результату экспериментов: forge не видит файл blockstates. Как исправить - не пойму, уже загружал собранный мод-пакет через лаунчер, что исправляло ошибку чтения модели предмета, результат - отсутствует

2019-09-26.png2019-09-26 (1).png2019-09-26 (2).png2019-09-26_02.24.45.png
 
56
2
4
Допустим,
1.
оформи код нормально
Почему не читабельно то? Всё мобильно и ясно. Вообще да, у меня всегда код получается как из ж*пы. Нужны советы по оформлению. Читабельность крайне низкая всегда. На том же js я писал калькулятор. Вышло в итоге 3Мб кода без картинок.
2. Класс блока:
Java:
public AluminBlock(String name){
        super(Material.ROCK);
        this.setDefaultState(this.blockState.getBaseState().withProperty(anormal, true));
        this.setRegistryName(name);
        this.setUnlocalizedName(name);
        this.setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
    }
    @Override
    public boolean isOpaqueCube(IBlockState state){
        return false;
    }
    @Override
    public boolean isFullCube(IBlockState state){
        return true;
    }
. Что тут может быть необычного... Ну и саму модель я беру из самого майнкрафта : "model":"block/anvil"
3. Ошибка, имеется в виду, не в коде, а, собственно, в наличии модели, это forge не фиксирует. Да и к тому же, логи перестали сохранятся в файл еще дня 3 назад (я начинающий мододел :))
 
4,045
63
645
1. Под оформлением я имел ввиду не картинками его вставлять, а кодом, как ты сделал во втором сообщении...
2. В блоке твоём ни слова про твои пропертисы.
Где ты ему свойства добавляешь? С чего ты взял, что он будет видеть твои стейты, если в блоке ты их не указываешь?
Откуда ты берёшь anormal? Что это где это?
Как сохраняешь мету, как читаешь мету? Где стейт контейнер?
В общем, читай гайды.
3. Фордж всё фиксирует. И ошибки в моделях тоже. Крашлог можно скопировать из консоли.
 
56
2
4
Где ты ему свойства добавляешь
Я это решил пропустить.

Хорошо, если нужны подробности, то вот:
Java:
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;

public class AluminBlock extends Block {
    public static final PropertyBool anormal = PropertyBool.create("anormal");
    public AluminBlock(String name){
        super(Material.ROCK);
        this.setDefaultState(this.blockState.getBaseState().withProperty(anormal, true));
        this.setRegistryName(name);
        this.setUnlocalizedName(name);
        this.setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
    }
    @Override
    public boolean isOpaqueCube(IBlockState state){
        return false;
    }
    @Override
    public boolean isFullCube(IBlockState state){
        return true;
    }
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
        Block block = worldIn.getBlockState(pos.up()).getBlock();
        return state.withProperty(anormal, Boolean.valueOf(block != Blocks.AIR));
    }

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

    @Override
    public int getMetaFromState(IBlockState state)
    {
        return 0;
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {anormal});
    }
}
Java:
import developer.modid.blocks.AluminBlock;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class BlocksRegister {
    public static Block alumin_block = new AluminBlock("alumin_block");
    public static void register(Block block){
            setRegister(block);
        }
    }
    @SideOnly(Side.CLIENT)
    public static void registerRender(Block block){
            setRender(block);
        }
    }
    private static void setRegister(Block block){
        ForgeRegistries.BLOCKS.register(block);
        ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
    }
    @SideOnly(Side.CLIENT)
    public static void setRender(Block block){
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
    }
}
Java:
import developer.modid.BlocksRegister;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy {
    public void preInit(FMLPreInitializationEvent event) {
        BlocksRegister.register(BlocksRegister.alumin_block);
    }
    public void init(FMLInitializationEvent event) {

    }
    public void postInit(FMLPostInitializationEvent event) {

    }
}
Java:
{
    "variants":
    {
    "anormal=true":{"model":"block/anvil"},
    "anormal=false":{"model":"block/bedrock"}
    }
}
 
Сверху