Проблемка с чатом

Версия Minecraft
1.7.10
129
6
18
В общем. Перенёс я дефолтное положение чата вверх при помощи данного кода:
Java:
GuiChat chat;

       @SubscribeEvent
       public void onOpenGUI(GuiOpenEvent e) {
          
          if(e.gui instanceof GuiChat) {
              this.chat = (GuiChat)e.gui;
           }

       }



@SubscribeEvent(
                  receiveCanceled = true,
                  priority = EventPriority.HIGHEST
               )
               public void onInGameUIChat(Chat e) {
                  GL11.glTranslatef(0.0F, -80.0F, 0.0F);
               }

               @SubscribeEvent(
                  receiveCanceled = true,
                  priority = EventPriority.HIGHEST
               )
               public void onInGameUIChat(net.minecraftforge.client.event.RenderGameOverlayEvent.Post e) {
                  if(e.type == ElementType.CHAT) {
                     GL11.glTranslatef(0.0F, 80.0F, 0.0F);
                  }

               }
Но после появилась проблемка. Чат больше не обрабатывает клики на ссылки и названия фотографий, так вот как это исправвить?
 
И вот что я ещё заметил, что под чатом есть какое-то поле(как я понял чтоб ловить эти клики под чатом)(ссылку в чате брал для теста(не реклама)).
2018-03-30_09.52.15_cut-photo.ru.png
Теперь немного поменяю вопрос как поднять данное поле вверх?
 
То, что у тебя на экране, связано с тем, что ты изменил место рисования картинки, но не всю остальную логику обработки кликов и тд.
Я думаю тебе нужно менять не место отрисовки чата, а именно полностью изменить расположение. По идее в классе чата должны быть поля его расположения (позиции на экране), их и нужно пробовать менять.
 
То, что у тебя на экране, связано с тем, что ты изменил место рисования картинки, но не всю остальную логику обработки кликов и тд.
Я думаю тебе нужно менять не место отрисовки чата, а именно полностью изменить расположение. По идее в классе чата должны быть поля его расположения (позиции на экране), их и нужно пробовать менять.
Я посмотрел в GuiChat но там из возможных функций только одна похожа:
Java:
 /**
     * Draws the screen and all the components in it.
     */
    public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_)
    {
        drawRect(2, this.height - 14, this.width - 2, this.height - 2, Integer.MIN_VALUE);
        this.inputField.drawTextBox();
        IChatComponent ichatcomponent = this.mc.ingameGUI.getChatGUI().func_146236_a(Mouse.getX(), Mouse.getY());

        if (ichatcomponent != null && ichatcomponent.getChatStyle().getChatHoverEvent() != null)
        {
            HoverEvent hoverevent = ichatcomponent.getChatStyle().getChatHoverEvent();

            if (hoverevent.getAction() == HoverEvent.Action.SHOW_ITEM)
            {
                ItemStack itemstack = null;

                try
                {
                    NBTBase nbtbase = JsonToNBT.func_150315_a(hoverevent.getValue().getUnformattedText());

                    if (nbtbase != null && nbtbase instanceof NBTTagCompound)
                    {
                        itemstack = ItemStack.loadItemStackFromNBT((NBTTagCompound)nbtbase);
                    }
                }
                catch (NBTException nbtexception)
                {
                    ;
                }

                if (itemstack != null)
                {
                    this.renderToolTip(itemstack, p_73863_1_, p_73863_2_);
                }
                else
                {
                    this.drawCreativeTabHoveringText(EnumChatFormatting.RED + "Invalid Item!", p_73863_1_, p_73863_2_);
                }
            }
            else if (hoverevent.getAction() == HoverEvent.Action.SHOW_TEXT)
            {
                this.func_146283_a(Splitter.on("\n").splitToList(hoverevent.getValue().getFormattedText()), p_73863_1_, p_73863_2_);
            }
            else if (hoverevent.getAction() == HoverEvent.Action.SHOW_ACHIEVEMENT)
            {
                StatBase statbase = StatList.func_151177_a(hoverevent.getValue().getUnformattedText());

                if (statbase != null)
                {
                    IChatComponent ichatcomponent1 = statbase.func_150951_e();
                    ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("stats.tooltip.type." + (statbase.isAchievement() ? "achievement" : "statistic"), new Object[0]);
                    chatcomponenttranslation.getChatStyle().setItalic(Boolean.valueOf(true));
                    String s = statbase instanceof Achievement ? ((Achievement)statbase).getDescription() : null;
                    ArrayList arraylist = Lists.newArrayList(new String[] {ichatcomponent1.getFormattedText(), chatcomponenttranslation.getFormattedText()});

                    if (s != null)
                    {
                        arraylist.addAll(this.fontRendererObj.listFormattedStringToWidth(s, 150));
                    }

                    this.func_146283_a(arraylist, p_73863_1_, p_73863_2_);
                }
                else
                {
                    this.drawCreativeTabHoveringText(EnumChatFormatting.RED + "Invalid statistic/achievement!", p_73863_1_, p_73863_2_);
                }
            }

            GL11.glDisable(GL11.GL_LIGHTING);
        }

        super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
    }
Но я не понимаю что тут можно поменять.
 
Назад
Сверху