Проблемы с рендером предметов с метадатой.

Сообщения
23
Лучшие ответы
0
Реакции
1
Версия Minecraft
1.12.2
У меня есть предмет с метадатой. И при регистрации рендера метадат нужно указывать ModelResourceLocation, состоящий из ResourceLocation и "inventory". С простыми предметами в первой части можно обойтись <item>.getRegistryName, но если такое проделать с метадатой, то либо у них будут тексутры одного и того же предмета, либо текстуры уже существующих предметов. Я пробовал туда указывать разные ResourseLocation, вроде
new ResourceLocation("redcraft", "iron_rod")
но если так делать, то он не находит модель. Принимается только registryName зарегистрированных предметов, если просто создать объект Предметом и не зарегать его, то модель не находится. мне нужно указать разные текстуры для разных метадат. Код:
Java:
package ru.darknd.redcraft.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ru.darknd.redcraft.RedCraft;

public class rod extends Item {
    public rod (String name){
        this.setCreativeTab(RedCraft.redCraftTab);
        this.setUnlocalizedName(name);
        this.setRegistryName(name);
        this.setHasSubtypes(true);
    }

    @SideOnly(Side.CLIENT)
    public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items)
    {
        if (this.isInCreativeTab(tab))
        {
            for (int i = 0; i < 4; ++i)
            {
                items.add(new ItemStack(this, 1, i));
            }
        }
    }

    @SideOnly(Side.CLIENT)
    public String getItemStackDisplayName(final ItemStack stack)
    {
        final String name;
        switch(stack.getMetadata())
        {
            case 0: name = "iron_rod"; break;
            case 1: name = "aluminium_rod"; break;
            case 2: name = "tin_rod"; break;
            case 3: name = "test_rod"; break;
            default: name = "rod"; break;
        }

        //Возвращаем название предмета
        return I18n.translateToLocal("item." + name + ".name");
    }
}

Код:
package ru.darknd.redcraft;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.*;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ru.darknd.redcraft.basic.ArmorBase;
import ru.darknd.redcraft.basic.Food.FoodBase;
import ru.darknd.redcraft.basic.Item.ItemBase;
import ru.darknd.redcraft.basic.Tools.*;
import ru.darknd.redcraft.items.dense_coal;
import ru.darknd.redcraft.items.rod;

public class ItemsRegister {

    public static Item rod = new rod("rod");

    public static void register() {
        setRegister(rod);

    }

    @SideOnly(Side.CLIENT)
    public static void registerRender() {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(rod, 0, new ModelResourceLocation(iron_rod.getRegistryName(), "inventory"));
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(rod, 1, new ModelResourceLocation(aluminium_rod.getRegistryName(), "inventory"));
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(rod, 2, new ModelResourceLocation(aluminium_hoe.getRegistryName(), "inventory"));
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(rod, 3, new ModelResourceLocation(tin_hoe.getRegistryName(), "inventory"));
    }


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

    @SideOnly(Side.CLIENT)
    private static void setRender(Item item) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }

}
Картиночка.png
 
Сверху