Метахавка на коленке.

Сообщения
4,875
Лучшие ответы
45
Реакции
681
Версия Minecraft
1.12.2
Сидел я в общем, и захотелось прям чет код пописать. Захотелось запилить предметы метадатой. Сделал я значит класс с массивом имен, сделал класс регистрации, но почему то крашит. Последнее, на что указал мне умирающий фордж, это строчка с ItemReg.register(); в проксиклиенте.
Это класс регистрации
Java:
public static String[] names = new String[] {"raspberry","strawberry"};
public static int numbers = names.length;
public static Item metafood = new MetaFoods(names, numbers);
public static void register() {
        registerItem(metafood);
    }
    public static void registerRender() {
        registerRenderItem(metafood);
    }
    private static void registerItem(Item item) {
        ForgeRegistries.ITEMS.register(item);
    }
    private static void registerRenderItem(Item item)
    {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
А это класс метахавки
Код:
public class MetaFoods extends Item{
    public MetaFoods(String[] name,int number) {
        this.setHasSubtypes(true);
        this.setRegistryName(name[number]);
        this.setCreativeTab(MainClass.tabMain);
        this.setUnlocalizedName(name[number]);
    }
    public boolean getHasSubtypes()
    {
        return this.hasSubtypes;
    }
   
   
}
Чет не пойму, где ошибка то?
Субтипы включил даже :\
 
Сообщения
2,916
Лучшие ответы
187
Реакции
542
Переопределить getUnlocalizedName, getSubItems еще вроде бы нужно.
 
Сообщения
4,875
Лучшие ответы
45
Реакции
681
Переопределил, ничего не изменилось. Что то при регистрации еще надо делать, я не помню только что...
 

Ivasik

Porting GrandBombaster
Администратор
Сообщения
3,194
Лучшие ответы
82
Реакции
441
Переопределил, ничего не изменилось. Что то при регистрации еще надо делать, я не помню только что...
getSubItems нужен. В лист добавляешь стак, в стаке указываешь метадату и все.
 
Сообщения
4,875
Лучшие ответы
45
Реакции
681
getSubItems нужен. В лист добавляешь стак, в стаке указываешь метадату и все.
Так, да?

Java:
public class MetaFoods extends Item{
    public MetaFoods(String[] name,int number) {
        this.setHasSubtypes(true);
        this.setRegistryName(name[number]);
        this.setCreativeTab(MainClass.tabMain);
        this.setUnlocalizedName(name[number]);
        
    }
    public boolean getHasSubtypes()
    {
        return this.hasSubtypes;
    }
    public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items)
    {
        for(int i = 0; i < 3; i++)
            items.add(new ItemStack(this, i));
    }

    
}
 
Сообщения
1,473
Лучшие ответы
66
Реакции
462
второй аргумент это ж кол-во, не?
 
Сообщения
4,875
Лучшие ответы
45
Реакции
681
Сообщения
2,916
Лучшие ответы
187
Реакции
542
new ItemStack(this, 1, i);
?
 
Сообщения
4,875
Лучшие ответы
45
Реакции
681
Ага... Теперь бы как нибудь блоки похожим образом можно делать, не знаете?
 
Сообщения
2,916
Лучшие ответы
187
Реакции
542
Переопределить это же, но у ItemBlock, и при реге применить блоку этот ItemBlock.
 
Сообщения
4,875
Лучшие ответы
45
Реакции
681
Сообщения
2,916
Лучшие ответы
187
Реакции
542
Должно работать.
 
Сверху