[Туториал]Меняем положение ванильного гуи в игре(Перезалив)

 http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%A2%D1%83%D1%82%D0%BE%D1%80%D0%B8%D0%B0%D0%BB-%D0%9C%D0%B5%D0%BD%D1%8F%D0%B5%D0%BC-%D0%BF%D0%BE%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B0%D0%BD%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B3%D1%83%D0%B8-%D0%B2-%D0%B8%D0%B3%D1%80%D0%B5

Туториал маленький и очень простой, но думаю, что кому-то да пригодится.(Переделано)
Весь урок будет основываться на событиях. Если вы не знаете что это такое и как ими пользоваться - загляните сюда .
Итак, начнем.
Для начала, создадим класс с  именем ChangeGUIPosition.
Напишем в него это:

Код:
Код:
@SubscribeEvent
public void render(RenderGameOverlayEvent.Pre event){
   if(event.type == ElementType.FOOD){
       GL11.glPushMatrix();
       GL11.glTranslatef(0.0F, -10.0F, 0.0F);
   }
}

@SubscribeEvent
public void render(RenderGameOverlayEvent.Post event){
   if(event.type == ElementType.FOOD){
       GL11.glPopMatrix();
   }
}


Вместо ElementType.FOOD пишите любое другое гуи.
Пример:

Код:
ElementType.FOOD - Индикатор еды
ElementType.ARMOR - Индикатор брони
ElementType.BOSSHEALTH - Индикатор здоровья у боссов
ElementType.HOTBAR - Положение быстрого инвентаря
ElementType.CHAT - Положение чата
ElementType.PLAYER_LIST - Положение списка игроков

Здесь пишите координаты, на сколько и куда хотите сместить по x, y, z: GL11.glTranslatef(0.0F, -10.0F, 0.0F).
Вот и все.
Регистрируем Client Proxy в главном классе : //Могу ошибаться , если что поправьте
Код:

Код:
@SidedProxy(clientSide = "com.name.mod.proxy.ClientProxy") 
      public static ClientProxy proxy; 
@Instance("Название мода") 
      public static Mod instance;	
      public static final Logger logger = LogManager.getLogger(MODID); + ведение логов
@EventHandler
     public void preLoad(FMLPreInitializationEvent event){
          proxy.preInit(); 
}

Осталось только зарегистрировать наш ивент в Client Proxy:

Код:
Код:
public void init() {
     MinecraftForge.EVENT_BUS.register(new ChangeGUIPosition());
}

Поворот - GL11.glRotatef(angle, x, y, z);
Отмена - event.setCanceled(true);

Отдельная благодарность , тем кто помогает игрокам.
 
SubscribeEvent
public void render(RenderGameOverlayEvent.Pre event){
if(event.type == ElementType.FOOD){
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, -10.0F, 0.0F);
}
}

@SubscribeEvent
public void render(RenderGameOverlayEvent.Post event){
if(event.type == ElementType.FOOD){
GL11.glPopMatrix();
}
}
За такое убил бы
 
Я просто переписал старую тему , так что меня чур последнего убить. А за что убивать то , что с кодом?
 
Вот именно, что ты просто переписал тему. Нахрена?
 
дело было вечером , делать было нечего + там изменилось в эвенте . и немного его рассписал


если это не нужно , то пусть лежит
 
Ivasik написал(а):
SubscribeEvent
public void render(RenderGameOverlayEvent.Pre event){
  if(event.type == ElementType.FOOD){
      GL11.glPushMatrix();
      GL11.glTranslatef(0.0F, -10.0F, 0.0F);
  }
}

@SubscribeEvent
public void render(RenderGameOverlayEvent.Post event){
  if(event.type == ElementType.FOOD){
      GL11.glPopMatrix();
  }
}
За такое убил бы

Случайно лайкнул твой коммент.
Интересно, что в нем не так? Если ты тупо напишешь все в Pre, то нифига у тебя не заработает.
 
Agravaine написал(а):
Ivasik написал(а):
SubscribeEvent
public void render(RenderGameOverlayEvent.Pre event){
  if(event.type == ElementType.FOOD){
      GL11.glPushMatrix();
      GL11.glTranslatef(0.0F, -10.0F, 0.0F);
  }
}

@SubscribeEvent
public void render(RenderGameOverlayEvent.Post event){
  if(event.type == ElementType.FOOD){
      GL11.glPopMatrix();
  }
}
За такое убил бы

Случайно лайкнул твой коммент.
Интересно, что в нем не так? Если ты тупо напишешь все в Pre, то нифига у тебя не заработает.

А то что если ты так пишешь, то уж лучше не использовать Pre и Post, я pre использую для того, чтобы поместить текстуру под чем либо, а пост после. А такой код это уже край извращения.
 
Ivasik написал(а):
А то что если ты так пишешь, то уж лучше не использовать Pre и Post, я pre использую для того, чтобы поместить текстуру под чем либо, а пост после. А такой код это уже край извращения.
Есть еще какие-то идеи?
 
Dahaka написал(а):
Ivasik написал(а):
А то что если ты так пишешь, то уж лучше не использовать Pre и Post, я pre использую для того, чтобы поместить текстуру под чем либо, а пост после. А такой код это уже край извращения.
Есть еще какие-то идеи?
Ну автору нужно убрать пре и пост и всё в одном писать, а уж если захочет что-то до и после поместить, то...
 
Ivasik написал(а):
Ну автору нужно убрать пре и пост и всё в одном писать, а уж если захочет что-то до и после поместить, то...
Да тут прикол в том, что нужно подвинуть еду. А код рендера еды находится между соответствующими pre и post
 
Dahaka написал(а):
Ivasik написал(а):
Ну автору нужно убрать пре и пост и всё в одном писать, а уж если захочет что-то до и после поместить, то...
Да тут прикол в том, что нужно подвинуть еду. А код рендера еды находится между соответствующими pre и post
Хм, ну тогда... ладно. Надо будет протестировать.
 
Назад
Сверху