Отрисовать кнопку в меню на Esc

Версия Minecraft
1.6.4
Здравствуйте, мне нужно отрисовать стандартную кнопку из Minecraft'а в меню на Esc и обработать ее клик. В 1.6.4 нет события GuiScreenEvent, поэтому я столкнулся со сложностями. У кого-нибудь есть идеи по поводу реализации?
 
2,505
81
397
Agravaine написал(а):
Он-то как раз и наследует от GuiScreenEvent, ало.
Ало. Просто GuiScreenEvent для этой цели, как ты сам знаешь, не подойдет.

С 1.6.4 я не работал. Может быть там название другое, может еще что. Посоветовал хоть что-то.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Dahaka написал(а):
Agravaine написал(а):
Он-то как раз и наследует от GuiScreenEvent, ало.
Ало. Просто GuiScreenEvent для этой цели, как ты сам знаешь, не подойдет.

С 1.6.4 я не работал. Может быть там название другое, может еще что. Посоветовал хоть что-то.

Ну епт, зачем ему дочерный класс, если нет родителя? Твой InitGuiEvent наследует от GuiScreenEvent, чо ты тупишь.
 
Вроде нашел способ, но кнопка отображается, как бы, ниже(см скриншот)
Кнопку отображаю с помощью такого кода:
Код:
@ForgeSubscribe
    public void render(RenderGameOverlayEvent event) {
        if (event.type == RenderGameOverlayEvent.ElementType.ALL) {
            if (Minecraft.getMinecraft().currentScreen instanceof GuiIngameMenu) {
                GuiButton button = new GuiButton(228, (Minecraft.getMinecraft().currentScreen.width-200)/2, Minecraft.getMinecraft().currentScreen.height-100, "Кнопка");
                button.drawButton(mc, 100, 100);
            }
        }

    }
У кого-нибудь есть идеи, как решить эту проблему?
 

Icosider

Kotliner
Администратор
3,603
99
664
Ты создаёшь кнопку до того как появится меню, юзай RenderGameOverlayEvent.Post или лучше если открывается GuiInGameMenu то создавать там кнопку, а не этим событием её создавать, так как оно рендерит в GuiInGame.
 

Icosider

Kotliner
Администратор
3,603
99
664
Код:
   @SubscribeEvent
   public void onGuiOpened(final GuiOpenEvent e)
   {
       if (e.getGui() instanceof GuiIngameMenu) 
      {
           GuiButton button = new GuiButton(228, (Minecraft.getMinecraft().currentScreen.width-200)/2, Minecraft.getMinecraft().currentScreen.height-100, "Кнопка");
          button.drawButton(mc, 100, 100);
       }
   }
 
Ivasik написал(а):
Код:
   @SubscribeEvent
   public void onGuiOpened(final GuiOpenEvent e)
   {
       if (e.getGui() instanceof GuiIngameMenu) 
      {
           GuiButton button = new GuiButton(228, (Minecraft.getMinecraft().currentScreen.width-200)/2, Minecraft.getMinecraft().currentScreen.height-100, "Кнопка");
          button.drawButton(mc, 100, 100);
       }
   }
В таком случае кнопка появляется и сразу исчезает


Ivasik написал(а):
Ты создаёшь кнопку до того как появится меню, юзай RenderGameOverlayEvent.Post или лучше если открывается GuiInGameMenu то создавать там кнопку, а не этим событием её создавать, так как оно рендерит в GuiInGame.
С RenderGameOverlayEvent.Post отображается все равно так же
 

Icosider

Kotliner
Администратор
3,603
99
664
Doc написал(а):
А разве RenderGameOverlayEvent не вызывается каждый тик?
Причём тут это? Это событие рендерит в GuiInGame, соответственно, если открыто GuiInGameMenu оно перекроет GuiInGame! И да, оно вызывается каждый тик, как и большинство событий, так как GuiInGame ты постоянно видишь.
 
Сверху