Не регистрируется предмет, делал по учебнику https://mcmodding.ru/1.12/item/basics/

Версия Minecraft
1.12.2
API
Forge
3
0
Пытался создать предмет по учебнику, но увы и ах, ничего не получилось, может быть я чего-то не понимаю, в Java и программировании в целом понимаю лишь на базовом уровне, потому могу не видеть очевидного, мод пишу впервые, так что, господа, надеюсь вы сможете подсказать что у меня не так)
Делаю в intellij idea, думаю это может иметь значение.
Причем, создавая блок по этому учебнику, все работает, блок появляется, могу лишь предположить что нужно вызвать какую-то функцию из ItemsRegister в CommonProxy.

Main:
package ru.cherv.gcc;

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.cherv.gcc.proxy.CommonProxy;

@Mod(modid = Tutorial.MODID , version = Tutorial.VERSION ,acceptedMinecraftVersions = "[1.12.2]",name = Tutorial.NAME)
public class Tutorial
{
        public static final String MODID = "gcc";
        public static final String VERSION = "0.0.1";
    public static final String NAME = "Test cherv`s mod";
    @SidedProxy(clientSide = "ru.cherv.gcc.proxy.ClientProxy", serverSide = "ru.cherv.gcc.proxy.CommonProxy")
    public static CommonProxy proxy;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {

        proxy.preInit(event);

    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event)
    {

        proxy.init(event);
    }

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {

        proxy.postInit(event);
    }
}
ItemKey(Как понял это конструктор предмета):
package ru.cherv.gcc;


import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class ItemKey extends Item {
    public ItemKey() {
        this.setRegistryName("test");
        this.setUnlocalizedName("test");
        setCreativeTab(CreativeTabs.MATERIALS);
        this.setCreativeTab(CreativeTabs.MISC);

    }

}
ItemsRegister:
package ru.cherv.gcc;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;


@GameRegistry.ObjectHolder(Tutorial.MODID)
public class ItemsRegister
{

        @GameRegistry.ObjectHolder("test")
        public static final Item TEST = null;
        @SubscribeEvent
        public static void onRegistryItem(RegistryEvent.Register<Item> e) {
            e.getRegistry().register(new ItemKey());
        }
        @SubscribeEvent
        @SideOnly(Side.CLIENT)
        public static void onRegistryModel(ModelRegistryEvent e) {
                registryModel(TEST);
        }
    @SideOnly(Side.CLIENT)
    private static void registryModel(Item item) {
        final ResourceLocation regName = item.getRegistryName();
       final ModelResourceLocation mrl = new ModelResourceLocation(regName, "inventory");
        ModelBakery.registerItemVariants(item, mrl);
        ModelLoader.setCustomModelResourceLocation(item, 0, mrl);
    }

    }
ClientProxy:
package ru.cherv.gcc.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.cherv.gcc.ItemsRegister;


public class ClientProxy extends CommonProxy
{
    @Override
    public void preInit(FMLPreInitializationEvent event)
    {
        super.preInit(event);

    }

    @Override
    public void init(FMLInitializationEvent event)
    {

        super.init(event);
    }

    @Override
    public void postInit(FMLPostInitializationEvent event)
    {

        super.postInit(event);
    }
}
CommonProxy:
package ru.cherv.gcc.proxy;


import net.minecraft.item.Item;
import ru.cherv.gcc.BlocksRegister;
import ru.cherv.gcc.ItemKey;
//import ru.cherv.gcc.ItemsRegister;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.cherv.gcc.ItemsRegister;

public class CommonProxy {


    public void preInit(FMLPreInitializationEvent event)
    {
        BlocksRegister.register();
    }

    public void init(FMLInitializationEvent event)
    {

    }

    public void postInit(FMLPostInitializationEvent event) {

    }


}
 
Решение
Ебучий случай. Тебе не хватает вызвать MinecraftForge.EVENT_BUS.register(ItemsRegister.class); в CommonProxy, в preInit стадии. Совет не по твоей проблеме: чаще прожимай Ctrl+Alt+L в IDE, особенно перед отправкой на форум.
1,526
138
280
Как понимаю это сочетание клавиш удаляет лишние импорты?
Форматирует код, приводя его в читабельный вид. Убирает лишние табы, добавляет недостающие, однострочный код преобразует в многострочный и т.д.
 
Сверху