Вторая рука

Версия Minecraft
1.7.10
51
0
Привет. Хотел сделать вторую руку котрая бы появлялась при каком-то условии, но запутался оконачательно. Столько информации, что сложно найти что-то конкретно. Если в общем я хочу сделать руку, котррая бы появлялась при снеге и дожде и закрывала бы левый угол экрана от первого лица. Что мне нужно для этого? Как это можно реализовать?
 
Решение
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
5,018
47
783
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
 
5,018
47
783
Попробуй изменить модель ModelBiped модом. типо уберая левую руку и создай на лицо игрока руку сделай её левой, сделай рендер что-бы было видно руку перед кубом(8x8x8)(лицом).
o_OЧувак. Не пиши ничего. Не надо пытаться так помочь, у меня инфаркт будет.
 

jopi

Попрошайка
1,421
30
260
o_OЧувак. Не пиши ничего. Не надо пытаться так помочь, у меня инфаркт будет.
xD
Так почему это плохо? во время weather Вместо обычной левой руки появляеться модель допустим из 3-х шейпов.
Было так:

Java:
  ____
 /    \
 \____/
   ||
 /====\
 |====|
 |====|
  ====
Стало так:

Код:
  ____
 /  \ \
 \___\/
   || |
 /====/
 |====
 |====
  ====
 
51
0
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
попробую покопать в этом направлении. Спасибо.
 
51
0
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
Я тебя правильно понял, что мне нужно найти рендер руки майновской. Потом вызвать его в ивенте отрисовки руки?
 

jopi

Попрошайка
1,421
30
260
Cделал все как ты говорил. Откопал код ренедринга руки в энтети рендер. Но там столько переменных. Что мне делать? Переносить-дублировать их?
То что не используеться оставь, и попробуй класс твой унаследовать от "ЕнтитиРендер".
 

jopi

Попрошайка
1,421
30
260
Cделал все как ты говорил. Откопал код ренедринга руки в энтети рендер. Но там столько переменных. Что мне делать? Переносить-дублировать их?
P.S. может не сработать
 
5,018
47
783
То что не используеться оставь, и попробуй класс твой унаследовать от "ЕнтитиРендер".
Замолчи, ты вообще чушь несешь. Не сбивай его с верного пути..))
 
51
0
Замолчи, ты вообще чушь несешь. Не сбивай его с верного пути..))
Я пытаюсь, но мало что выходит.

Нашел в Энтети рендерер метод renderHand. Я так понимаю, что это он. В шине событий форджа вписал ивент secnHand(RenderHandEvent event)... Только делать с ним дальше? Дело в том, что очень много пирватных переменных в этом классе(EntityRenderer) и просто Ctrl C + Ctrl V получается много ошибок. Ну это ладно. Я часть переменных перекинул в шину событий, скопировал. Но там в методе из которого я беру код(рендера руки), есть переменные из других методов. Получается мне и методы копировать надо или что? Я вкрай запутался. Объясни этот момент, пожайлуста.
 
5,018
47
783
все методы и переменные себе тащи. Ничего страшного
Java:
  private void renderHand(float partialTicks, int pass)
    {
        if (!this.debugView)
        {
            GlStateManager.matrixMode(5889);
            GlStateManager.loadIdentity();
            float f = 0.07F;

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(-(pass * 2 - 1)) * 0.07F, 0.0F, 0.0F);
            }

            Project.gluPerspective(this.getFOVModifier(partialTicks, false), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance * 2.0F);
            GlStateManager.matrixMode(5888);
            GlStateManager.loadIdentity();

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(pass * 2 - 1) * 0.1F, 0.0F, 0.0F);
            }

            GlStateManager.pushMatrix();
            this.hurtCameraEffect(partialTicks);

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }

            boolean flag = this.mc.getRenderViewEntity() instanceof EntityLivingBase && ((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();

            if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(mc.renderGlobal, partialTicks, pass))
            if (this.mc.gameSettings.thirdPersonView == 0 && !flag && !this.mc.gameSettings.hideGUI && !this.mc.playerController.isSpectator())
            {
                this.enableLightmap();
                this.itemRenderer.renderItemInFirstPerson(partialTicks);
                this.disableLightmap();
            }

            GlStateManager.popMatrix();

            if (this.mc.gameSettings.thirdPersonView == 0 && !flag)
            {
                this.itemRenderer.renderOverlays(partialTicks);
                this.hurtCameraEffect(partialTicks);
            }

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }
        }
    }
Вот метод. Строчка где ForgeHooksClient это форджевский хук с эвентом. Все методы которые тут вызываются тебе соотвественно надо скопировать себе.
 
5,018
47
783
51
0
все методы и переменные себе тащи. Ничего страшного
Java:
  private void renderHand(float partialTicks, int pass)
    {
        if (!this.debugView)
        {
            GlStateManager.matrixMode(5889);
            GlStateManager.loadIdentity();
            float f = 0.07F;

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(-(pass * 2 - 1)) * 0.07F, 0.0F, 0.0F);
            }

            Project.gluPerspective(this.getFOVModifier(partialTicks, false), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance * 2.0F);
            GlStateManager.matrixMode(5888);
            GlStateManager.loadIdentity();

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(pass * 2 - 1) * 0.1F, 0.0F, 0.0F);
            }

            GlStateManager.pushMatrix();
            this.hurtCameraEffect(partialTicks);

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }

            boolean flag = this.mc.getRenderViewEntity() instanceof EntityLivingBase && ((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();

            if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(mc.renderGlobal, partialTicks, pass))
            if (this.mc.gameSettings.thirdPersonView == 0 && !flag && !this.mc.gameSettings.hideGUI && !this.mc.playerController.isSpectator())
            {
                this.enableLightmap();
                this.itemRenderer.renderItemInFirstPerson(partialTicks);
                this.disableLightmap();
            }

            GlStateManager.popMatrix();

            if (this.mc.gameSettings.thirdPersonView == 0 && !flag)
            {
                this.itemRenderer.renderOverlays(partialTicks);
                this.hurtCameraEffect(partialTicks);
            }

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }
        }
    }
Вот метод. Строчка где ForgeHooksClient это форджевский хук с эвентом. Все методы которые тут вызываются тебе соотвественно надо скопировать себе.
Откуда этот код? Я не понимаю... У меня код из майн разобранного МСР и такого нет =( и как мне метод рендера руки засунуть в метод ивента рендера RenderHandEvent?
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Начал копировать методы из майна. Половина переменных не инициализированы а другая не работает без методов из класса рендера. Что, мне весь класс копировать или что? Я не понимаю...
 
Последнее редактирование:
Сверху