Не регистрируется предмет

Версия Minecraft
1.12.2
37
0
Попытался создать предмет с названием "coin". ID Мода - "test".
Основной файл [test.jar]:
Java:
package u241.testmod;

import net.minecraft.item.Item;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
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 net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import u241.testmod.proxy.CommonProxy;

@Mod(modid = "test")
public class TestMod
{
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        System.out.println("\u001B[32m" + "[Starting Test Mod PRE-INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        System.out.println("\u001B[32m" + "[Starting Test Mod INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        System.out.println("\u001B[32m" + "[Starting Test Mod POST-INITIALIZATION]" + "\u001B[0m");
    }

    @SidedProxy(clientSide = "u241.testmod.proxy.ClientProxy", serverSide = "u241.testmod.proxy.CommonProxy")
    public static CommonProxy proxy;

    public static class ItemKey extends Item
    {
        public ItemKey(String name)
        {
            this.setRegistryName("coin");
            this.setUnlocalizedName("Coin");
        }

        public static class ItemsRegister
        {
            public static Item KEY = new ItemKey("coin");

            public static void register()
            {
                setRegister(KEY);
            }

            @SideOnly(Side.CLIENT)
            public static void registerRender()
            {
                setRender(KEY);
            }

            private static void setRegister(Item item)
            {
                ForgeRegistries.ITEMS.register(item);
            }

            @SideOnly(Side.CLIENT)
            private static void setRender(Item item)
            {

            }
        }
    }
}
Запустил minecraft, и прописал команду для того чтобы выдать себе свой предмет, minecraft пишет, что такого предмета нет.
1515169428164.png
Подскажите, где накосячил?
 

Вложения

  • 1515169342743.png
    1515169342743.png
    240.8 KB · Просмотры: 14
Последнее редактирование:
Решение
В preInit в главном классе добавь:
ForgeRegistries.ITEMS.register(new ItemKey("coin"));
Так ты получишь свой "чудо" коин.
~~~
Смотря по коду - видно *ГавнО* код, который ты даже не знаешь как юзать.
Пустые классы, которые не используются и нафиг не нужны.
Класс в класее в классе...
Лучше идти учить джаву, чем кодить ТАК...
37
0
Ну зачем засовывать классы в классы! Может вообще мод в одном файле напишем.
Покажи CommonProxy и ClientProxy:/
CommonProxy:
Java:
package u241.testmod.proxy;

import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;

public class CommonProxy {

    public void preInit(FMLPreInitializationEvent event)
    {

    }

    public void init(FMLInitializationEvent event)
    {

    }

    public void postInit(FMLPostInitializationEvent event) {

    }
}
ClientProxy:
Java:
package u241.testmod.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;


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);
    }
}
Делаю всё как в гайде, но код в следующей статье меняется непонятным образом, и даже не написан полность, приходится только лишь догадываться, что нужно сделать, чтобы всё заработало...
 
1,470
19
189
Добавь в главный класс в preInit:
proxy.preInit(event);
в init:
proxy.init(event);
в postInit:
proxy.postInit(event);

Создай для регистраций отдельный класс, и вызови register из preInit CommonProxy а registerRender из init ClientProxy.
И создай класс для предмета
 
37
0
Добавь в главный класс в preInit:
proxy.preInit(event);
в init:
proxy.init(event);
в postInit:
proxy.postInit(event);

Создай для регистраций отдельный класс, и вызови register из preInit CommonProxy а registerRender из init ClientProxy.
И создай класс для предмета
1515191258988.png
TestMod.java:
Java:
// TestMod.java

package u241.testmod;

import net.minecraft.item.Item;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
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 net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import u241.testmod.proxy.CommonProxy;

@Mod(modid = "test")
public class TestMod
{
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        proxy.preInit(event);
        System.out.println("\u001B[32m" + "[Starting Test Mod PRE-INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        proxy.init(event);
        System.out.println("\u001B[32m" + "[Starting Test Mod INITIALIZATION]" + "\u001B[0m");
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        proxy.postInit(event);
        System.out.println("\u001B[32m" + "[Starting Test Mod POST-INITIALIZATION]" + "\u001B[0m");
    }

    @SidedProxy(clientSide = "u241.testmod.proxy.ClientProxy", serverSide = "u241.testmod.proxy.CommonProxy")
    public static CommonProxy proxy;

    public static class ItemKey extends Item
    {
        public ItemKey(String name)
        {
            this.setRegistryName("coin");
            this.setUnlocalizedName("Coin");
        }

        public static class ItemsRegister
        {
            public static Item KEY = new ItemKey("coin");

            public static void register()
            {
                setRegister(KEY);
            }

            @SideOnly(Side.CLIENT)
            public static void registerRender()
            {
                setRender(KEY);
            }

            private static void setRegister(Item item)
            {
                ForgeRegistries.ITEMS.register(item);
            }

            @SideOnly(Side.CLIENT)
            private static void setRender(Item item)
            {

            }
        }
    }
}
Register.java:
Java:
package u241.testmod.proxy;

public class Register {


    public class register extends CommonProxy {

    }

    public class registerRender extends ClientProxy {

    }
}
CommonProxy.jar:
Java:
package u241.testmod.proxy;

import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;

public class CommonProxy {

    public void preInit(FMLPreInitializationEvent event)
    {

    }

    public void init(FMLInitializationEvent event)
    {

    }

    public void postInit(FMLPostInitializationEvent event) {

    }
}
ClientProxy.jar:
Java:
package u241.testmod.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;


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);
    }
}
 
5,018
47
783
Код:
public class Register {


    public class register extends CommonProxy {

    }

    public class registerRender extends ClientProxy {

    }
}
Че за дичь. Никто так не делает. А если уж решил, то хоть классы бы с большой назвал.
Почитай вот статью, очень хорошая. А, ну и учебник по джаве, хотя бы одну- две главы, что такое метод, класс, интерфейс и т д.
 
3,005
192
592
В preInit в главном классе добавь:
ForgeRegistries.ITEMS.register(new ItemKey("coin"));
Так ты получишь свой "чудо" коин.
~~~
Смотря по коду - видно *ГавнО* код, который ты даже не знаешь как юзать.
Пустые классы, которые не используются и нафиг не нужны.
Класс в класее в классе...
Лучше идти учить джаву, чем кодить ТАК...
 
  • Like
Реакции: u241
Сверху