При открытии GUI пропадает курсор

Версия Minecraft
1.12.2

will0376

Токсичная личность
2,174
56
651
Ночи доброй всем. создал свой гуи, но пропадает курсор при входе в него(если вывести мышь с окна майна и "ввести" обратно - появляется.)
1554073726204.png
Отрисовка гуи:
Java:
    public void drawScreen(int mouseX, int mouseY, float partialTicks){
        int x = (this.width - this.xSize) / 2-105;
        int y = (this.height - this.ySize) / 2;
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(2896);
        super.mc.renderEngine.bindTexture(new ResourceLocation(Main.MODID + ":textures/gui/bg2.png"));
        this.drawWorldBackground(1);
        drawTextured(x,y,mouseX);//текстура
        drawString(mc.fontRenderer,I18n.format("shopper.page")+page+"/"+getMaxPage(),this.width/2-150-(I18n.format("shopper.page")+page+"/"+getMaxPage()).length(),this.height/2+85,16777215);
        for(int i = 0; i < 3;i++)
        for(int ii = 0; ii <= 7;ii++)
        drawSquare((x+50)+(ii*49), (y+25)+(i*60), (x+5)+(ii*49), (y-15)+(i*60), Integer.MIN_VALUE);//Квадратики

        drawItems(x,y);

        super.drawScreen(mouseX, mouseY, partialTicks);
    }
Отрисовка текстуры(да,говнокод. Ну что поделать.):
Java:
   private void drawTextured(int x,int y,int mouseX){
        Tessellator tessellator = Tessellator.getInstance();
        BufferBuilder bufferbuilder = tessellator.getBuffer();
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        bufferbuilder.pos(x, y+(176+20), 0.0D).tex(0, (double) (1F + (float)mouseX)).endVertex();
        bufferbuilder.pos(x+400, y+(176+20), 0.0D).tex((double)1F, (double)(1F + (float)mouseX)).endVertex();
        bufferbuilder.pos(x+400 , y-20.0D, 0.0D).tex((double)1F , (double)mouseX).endVertex();
        bufferbuilder.pos(x, y-20, 0).tex(0, mouseX).endVertex();
        tessellator.draw();
    }
Чем исправить?
А. да,еще. в drawItems Я вызываю RenderHelper.enableGUIStandardItemLighting(); без disableStandardItemLighting и enableStandardItemLighting
 
this.drawWorldBackground(1);
должен быть в самом верху

super.mc.renderEngine.bindTexture(new ResourceLocation(Main.MODID + ":textures/gui/bg2.png"));
можно написать просто
mc.renderEngine.bindTexture(new ResourceLocation(Main.MODID + ":textures/gui/bg2.png"));

private void drawTextured
выглядит так будто ты прямоугольник рисуешь
4a7609703b.jpg
 
выглядит так будто ты прямоугольник рисуешь
Пришлось свою реализацию накостылить, ибо стандартная кубаческая рисует текстуры чисто в квадрат..
this.drawWorldBackground(1);
Спасибо. Опробую Не. всё так-же
апд. Лол. Это никак с drawScreen не связанно...
Апд2. Интересно. если я вызываю гуи с клавиши - всё ОК, а если с сервера(отсылаю пакет,проверяю содержимое на нужное слово) - такая бодяга. Странно. ибо что на клавише, что с пакета - Minecraft.getMinecraft().displayGuiScreen()
 
Последнее редактирование:
и правда смешно, глаза подвели, уж больно он похож.
Ну и ты можешь рисовать курсор мыши сам, он точно будет отображаться.. Изначально при открытии gui он находится по центру.
И возможно это вообще никак не связано с твоим GUI.
Попробуй открыть не свой, а ванильный gui по сети
 
а ванильный gui по сети
меню паузы - такая-же фигня... Ладно,придётся костылить что-то...
рисовать курсор мыши сам
так и сделал.
Мб кому-то понадобится:
Java:
int xx = Mouse.getEventX()*width/mc.displayWidth;
        int yy = super.height-Mouse.getEventY()*height/mc.displayHeight-1;
        drawDot(xx,yy);
Java:
    private void drawDot(int x,int y){
        drawString(mc.fontRenderer,".",x+2,y-2,16777215);
        drawString(mc.fontRenderer,"...",x,y,16777215);
        drawString(mc.fontRenderer,".",x+2,y+2,16777215);
    }
 
Последнее редактирование:
гуи открывать надо в потоке майна
Весь код нужно выполнять в потоке майна.
Выполнять свой код в потоках нетти не только нельзя, но и опасно - если он тяжелый, ты блочишь целый поток приема данных, а их всего несколько штук, соответственно весь конвеер обработки пакетов страдает.
 
Назад
Сверху