[1.7.10] Эвент в рендере?

Статус
В этой теме нельзя размещать новые ответы.

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#1
Натолкнулся на проблему надобности эвента в рендере.Делаю 2Д копье, оружие нормально смотрится, и от первого лица, и от третьего. Увеличил даже грамотно :rolleyes:

Но вот вопрос: Как мне отловить событие блока игрока, чтобы его перерисовать? То есть, когда он жмакает ПКМ и не отпускает ее. Только через эвенты и костыли? Или может можно как-то в самом рендере...

Так-то вроде неплохо выглядит:


А вот с блоком беда...

 

Ivasik

Porting GrandBombaster
Команда форума
Сообщения
2,510
Лучшие ответы
71
Симпатии
203
#2
Lobotino написал(а):
Натолкнулся на проблему надобности эвента в рендере.Делаю 2Д копье, оружие нормально смотрится, и от первого лица, и от третьего. Увеличил даже грамотно :rolleyes:

Но вот вопрос: Как мне отловить событие блока игрока, чтобы его перерисовать? То есть, когда он жмакает ПКМ и не отпускает ее. Только через эвенты и костыли? Или может можно как-то в самом рендере...

Так-то вроде неплохо выглядит:


А вот с блоком беда...

Код лука глянь. Там как раз то что тебе нужно.
 

Dahaka

Золотая лига
Сообщения
2,321
Лучшие ответы
82
Симпатии
252
#3
WildHeart написал(а):
Код лука глянь. Там как раз то что тебе нужно.
Там весь рендер завязан на EnumAction, так что совет ужасный
[merge_posts_bbcode]Добавлено: 24.07.2016 22:11:45[/merge_posts_bbcode]

Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#5
Dahaka написал(а):
Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
Да даже не в этом суть, интересно то, как в принципе можно взаимодействовать с какими-то действиями и присваивать им анимацию...

А поворачиваю я вот так:
Код:
GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
[merge_posts_bbcode]Добавлено: 25.07.2016 11:12:03[/merge_posts_bbcode]

Тут парень просто делает свой extends ItemBow.
Про кастомный рендер там и слова нет :(
 

Ivasik

Porting GrandBombaster
Команда форума
Сообщения
2,510
Лучшие ответы
71
Симпатии
203
#6
Lobotino написал(а):
Dahaka написал(а):
Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
Да даже не в этом суть, интересно то, как в принципе можно взаимодействовать с какими-то действиями и присваивать им анимацию...

А поворачиваю я вот так:
Код:
GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
[merge_posts_bbcode]Добавлено: 25.07.2016 11:12:03[/merge_posts_bbcode]

Тут парень просто делает свой extends ItemBow.
Про кастомный рендер там и слова нет :(
Ты подробней посмотри, когда он сделал класс со своим луком, он написал кода, где при удержании правой кнопки меняется текстура, такой же принцип можно применить и к рендеру модели.
 

svk2140

Каменная лига
Сообщения
608
Лучшие ответы
6
Симпатии
12
#7
WildHeart написал(а):
Lobotino написал(а):
Dahaka написал(а):
Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
Да даже не в этом суть, интересно то, как в принципе можно взаимодействовать с какими-то действиями и присваивать им анимацию...

А поворачиваю я вот так:
Код:
GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
[merge_posts_bbcode]Добавлено: 25.07.2016 11:12:03[/merge_posts_bbcode]

Тут парень просто делает свой extends ItemBow.
Про кастомный рендер там и слова нет :(
Ты подробней посмотри, когда он сделал класс со своим луком, он написал кода, где при удержании правой кнопки меняется текстура, такой же принцип можно применить и к рендеру модели.
FacePalm
 

Ivasik

Porting GrandBombaster
Команда форума
Сообщения
2,510
Лучшие ответы
71
Симпатии
203
#8
svk2140 написал(а):
WildHeart написал(а):
Lobotino написал(а):
Dahaka написал(а):
Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
Да даже не в этом суть, интересно то, как в принципе можно взаимодействовать с какими-то действиями и присваивать им анимацию...

А поворачиваю я вот так:
Код:
GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
[merge_posts_bbcode]Добавлено: 25.07.2016 11:12:03[/merge_posts_bbcode]

Тут парень просто делает свой extends ItemBow.
Про кастомный рендер там и слова нет :(
Ты подробней посмотри, когда он сделал класс со своим луком, он написал кода, где при удержании правой кнопки меняется текстура, такой же принцип можно применить и к рендеру модели.
FacePalm
Так понятнее? =_=
 

svk2140

Каменная лига
Сообщения
608
Лучшие ответы
6
Симпатии
12
#9
WildHeart написал(а):
svk2140 написал(а):
WildHeart написал(а):
Lobotino написал(а):
Dahaka написал(а):
Ты как-то странно отрендерил, не по-майнкравтовски, поэтому блок ломается (glRotate не туда, куда нужно).
Да даже не в этом суть, интересно то, как в принципе можно взаимодействовать с какими-то действиями и присваивать им анимацию...

А поворачиваю я вот так:
Код:
GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
[merge_posts_bbcode]Добавлено: 25.07.2016 11:12:03[/merge_posts_bbcode]

Тут парень просто делает свой extends ItemBow.
Про кастомный рендер там и слова нет :(
Ты подробней посмотри, когда он сделал класс со своим луком, он написал кода, где при удержании правой кнопки меняется текстура, такой же принцип можно применить и к рендеру модели.
FacePalm
Так понятнее? =_=
Double FacePalm
[merge_posts_bbcode]Добавлено: 25.07.2016 12:37:52[/merge_posts_bbcode]

Просто надо повернуть в рендере так, что-бы копьё шло диагонально.

[merge_posts_bbcode]Добавлено: 25.07.2016 12:38:34[/merge_posts_bbcode]

Или тебе руку повернуть надо?
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#10
Мне нужно просто узнать как отловить когда игрок ставит ванильный блок мечом и отрендерить его по другому.Метод WildHeart просто меняет путь к текстурке, а мне нужно именно покрутить копье так, чтобы оно выглядело как блок
 

hohserg1

Золотая лига
Сообщения
3,303
Лучшие ответы
83
Симпатии
219
#11
Тебе просто покрутить нужно, или проблема в отлавливании пкм?
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#12
В отлавливании блокирования, то есть пкм, да
 

hohserg1

Золотая лига
Сообщения
3,303
Лучшие ответы
83
Симпатии
219
#13
У WildHeart вроде есть: if(player.getItemInUse()!=null/* ==<youItem>*/){
//поворачиваешь
}
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#14
Ой вэй, работает. Чето я конкретно затупил, спасибо :D
 

hohserg1

Золотая лига
Сообщения
3,303
Лучшие ответы
83
Симпатии
219
#15
Читай внимательно:lol:
 

Dahaka

Золотая лига
Сообщения
2,321
Лучшие ответы
82
Симпатии
252
#16
Lobotino написал(а):
Ой вэй, работает. Чето я конкретно затупил, спасибо :D
Куда в итоге сунул поворот-то? Что-то я не понял
 

hohserg1

Золотая лига
Сообщения
3,303
Лучшие ответы
83
Симпатии
219
#17
туда, где я написал
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#18
В рендер копья:
Код:
@Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
        switch (type){
            case EQUIPPED_FIRST_PERSON:
                renderEquippedItem(item, (EntityLivingBase) data[1], true);
                break;
            case EQUIPPED:
                renderEquippedItem(item, (EntityLivingBase) data[1], false);
                break;

            default:
        }
    }

private void renderEquippedItem(ItemStack stack, EntityLivingBase entity, boolean firstPerson) {
        GL11.glPushMatrix();
        float scale = 2.3f;
        float f = scale;
        if (firstPerson) {
            f *= 1.75F;
            GL11.glTranslatef(2.2F, 3.0f, 1.7F);
            GL11.glRotatef(45, 0.0f, 1.0f, 0.0f);
            GL11.glRotatef(-120, 0.0f, 0.0f, 1.0f);
        } else {
           if(Minecraft.getMinecraft().thePlayer.getItemInUse() != null)
           {
               f *= (entity instanceof EntityPlayer ? 2.0F : 1.75F);
               GL11.glTranslatef(-0.3f, -1.9f, -0.8f);
               GL11.glRotatef(-37, 0.0f, 1.0f, 0.0f);
               GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
               GL11.glRotatef(30, 1.0f, 0.0f, 0.0f);
           }else
            {
            f *= (entity instanceof EntityPlayer ? 2.0F : 1.75F);
                GL11.glTranslatef(-0.7f, -1.9f, -0.5f);
                GL11.glRotatef(-45, 0.0f, 1.0f, 0.0f);
                GL11.glRotatef(15, 0.0f, 0.0f, 1.0f);
            }
        }
        GL11.glScalef(f, f, f);
        IIcon icon = stack.getItem().getIcon(stack, 0);
        Tessellator tessellator = Tessellator.instance;
        ItemRenderer.renderItemIn2D(tessellator, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
        GL11.glPopMatrix();
    }
[merge_posts_bbcode]Добавлено: 25.07.2016 23:31:43[/merge_posts_bbcode]

Решено. Можно закрывать.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху