Рендер брони на руке от первого лица 1.7.10

DarkMoon

Каменная лига
Сообщения
36
Лучшие ответы
0
Симпатии
1
#1
Версия Minecraft
1.7.10
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Помогите зарендеритть броню на руке от первого лица буду благодарер
 
Краш-лог:
Не надо

RareScrap

Каменная лига
Сообщения
634
Лучшие ответы
20
Симпатии
151
#2
Тебе нужно написать свой ItemRenderer и зарегистрировать его для своего предмета. Вот пример. Это хоть и итем блока, но думаю суть ясна.

Java:
// https://www.youtube.com/watch?v=OkoQ78ktAb8
    // Это не совсем тот тутор, по которому я это делал, но он натолкнул меня на многие важные мысли
    /**
     * Рендерер блока {@link UpgradeStationBlock} в инвентаре и в руке
     */
    public static class Renderer implements IItemRenderer {
        TileEntitySpecialRenderer render;
        private TileEntity te; // Хз зачем, но в туторе нужно

        public Renderer(TileEntitySpecialRenderer render, TileEntity te) {
            this.render = render;
            this.te = te;
        }

        @Override
        public boolean handleRenderType(ItemStack item, ItemRenderType type) {
            return true;
        }

        @Override
        public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
            return true;
        }

        @Override
        public void renderItem(ItemRenderType type, ItemStack item, Object... data) {

            if (type == ItemRenderType.EQUIPPED) {
                GL11.glTranslatef(0.5F, 0.0F, 0.5F); // Делаем так, чтобы рука игрока держалась за центр блока
                GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); // Поворачиваем тисками в другую сторону, чтобы сами тиски были видны. А то некрасиво
            }

            if (type == ItemRenderType.INVENTORY) {
                GL11.glTranslatef(0.0F, -0.5F, 0.0F); // Чутка опустим предмет вниз, чтобы он нормально отображался в слоте инвентаря
                //GL11.glScalef(1.3F, 1.3F, 1.3F);
            } else {
                // Делаем его чуть-больше, чтобы лучше смотрелся
                //GL11.glScalef(1.5F, 1.5F, 1.5F);
            }

            if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
                GL11.glTranslatef(0.0F, 0.35F, 0.5F); // Смещаем центр предмета в руке, чтобы он рисовался там же, где и все остальные блоки, когда их держит юзер
                //GL11.glScalef(1.3F, 1.3F, 1.3F);
            }

            // биндим текстуру
            //Minecraft.getMinecraft().renderEngine.bindTexture(texture);

            // Рендерим obj-модель
            //model.renderAll();
        }
}
В ClientProxy потом регай рендерер

Java:
// Как-то так. Адаптируешь потом сам.
MinecraftForgeClient.registerItemRenderer(c1, new UpgradeStationTESR.Renderer(new UpgradeStationTESR(), new UpgradeStationEntity()));
 

RareScrap

Каменная лига
Сообщения
634
Лучшие ответы
20
Симпатии
151
#3
Ну как, получилось?
 
Сверху