Block Variants

Версия Minecraft
1.12.2
1,057
50
234
День добрый формучане.

Возникла проблема с метадатой блоков, а именно: Рендер в инвентаре.

Собственно:

Есть блок с ENUM и параметрами.
Java:
public class BlockFutureGlasses extends BlockGlass implements ISortableBlock {

    public static final PropertyEnum<EnumBlock> BASIC_TYPE = PropertyEnum.create("typefutureglass", EnumBlock.class);
   
    public BlockFutureGlasses()
    {
        super(Material.GLASS, false);
        this.setUnlocalizedName("futureglass");
        this.setSoundType(SoundType.GLASS);
    }
   
    @Override
    public MapColor getMapColor(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {      
        return MapColor.AIR;
    }
   
    @SideOnly(Side.CLIENT)
    @Override
    public CreativeTabs getCreativeTabToDisplayOn()
    {
        return GSCreativeTabs.GSBlocksTab;
    }
   
    @SideOnly(Side.CLIENT)
    @Override
    public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> list)
    {
        for (EnumBlock blockBasic : EnumBlock.values())
        {
            list.add(new ItemStack(this, 1, blockBasic.getMeta()));
        }
    }
   
    @Override
    public IBlockState getStateFromMeta(int meta)
    {
        return this.getDefaultState().withProperty(BASIC_TYPE, EnumBlock.byMetadata(meta));
    }
   
    @Override
    public int getMetaFromState(IBlockState state) {
        return ((EnumBlock) state.getValue(BASIC_TYPE)).getMeta();
    }
   
    @Override
    public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
        return new ItemStack(Item.getItemFromBlock(this), 1, this.getMetaFromState(state));
    }
   
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, BASIC_TYPE);
    }
   
    @Override
    public EnumSortCategoryBlock getCategory(int meta) {
        return EnumSortCategoryBlock.GENERAL;
    }
   
    @Override
    @SideOnly(Side.CLIENT)
    public BlockRenderLayer getBlockLayer()
    {
        return BlockRenderLayer.TRANSLUCENT;
    }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
    public enum EnumBlock implements IStringSerializable
    {
        F_GLASS_BLACK(0, "black"),
        F_GLASS_RED(1, "red"),
        F_GLASS_BLUE(2, "blue"),
        F_GLASS_BROWN(3, "brown"),
        F_GLASS_CYAN(4, "cyan"),
        F_GLASS_GRAY(5, "gray"),
        F_GLASS_GREEN(6, "green"),
        F_GLASS_LIGHTBLUE(7, "lightblue"),
        F_GLASS_LIGHTGRAY(8, "lightgray"),
        F_GLASS_LIME(9, "lime"),
        F_GLASS_MAGNETA(10, "magneta"),
        F_GLASS_ORANGE(11, "orange"),
        F_GLASS_PINK(12, "pink"),
        F_GLASS_PURPLE(13, "purple"),
        F_GLASS_WHITE(14, "white"),
        F_GLASS_YELLOW(15, "yellow");

        private final int meta;
        private final String name;

        private EnumBlock(int meta, String name)
        {
            this.meta = meta;
            this.name = name;
        }

        public int getMeta() { return this.meta; }      

        public static EnumBlock byMetadata(int meta) { return values()[meta]; }

        @Override
        public String getName() { return this.name; }
    }

}

Есть рега вариантов
ClientUtil.addVariant(GalaxySpace.MODID, name, variants);
Java:
    @EventBusSubscriber(modid = MODID)
    public static class RegistrationHandler
    {
        @SubscribeEvent
        public static void registerModels(ModelRegistryEvent event) {
            proxy.registerVariants();
        }
    }


private static void addVariants()
{
        addCoreVariant("futureglass", "futureglass_black", "futureglass_red", "blue");
}

public static void addVariant(String modID, String name, String... variants)
    {
//        Item itemBlockVariants = GameRegistry.findItem(modID, name);
        Item itemBlockVariants = Item.REGISTRY.getObject(new ResourceLocation(modID, name));
        ResourceLocation[] variants0 = new ResourceLocation[variants.length];
        for (int i = 0; i < variants.length; ++i)
        {
            variants0[i] = new ResourceLocation(modID + ":" + variants[i]);
        }
        ModelBakery.registerItemVariants(itemBlockVariants, variants0);
    }

В игре установленные блоки отображаются как надо, а вот в инвентаре не хотят.
Проверял видит ли json файлы - да, видит. Если меняешь название файла - он пишет что нет такого json, возвращаешь - не пишет.

Рега Json тоже есть, вызывается из Init ядра:
Java:
for (BlockFutureGlasses.EnumBlock blockBasic : BlockFutureGlasses.EnumBlock.values())
        {
           ClientUtil.registerBlockJson(GalaxySpace.TEXTURE_PREFIX, FUTURE_GLASS, blockBasic.getMeta(), blockBasic.getName());
        }

Проверял все это на обычных блоках, без ENUM и вариантов, работает прекрасно, блок рендерится. А вот с вариантами такая дичь. Что делать?
 
5,018
47
783
Можешь конкретно описать, как решил проблему? Может другим пользователям понадобится(мне то есть:))
 
Сверху