Как закрепить изображение? /2...

Версия Minecraft
1.7.10
344
1
47
Решил я значит вернуться к моддинингу мк, да? И решил я значит сделать кастомный инвентарь, о да...
Сам код:
Java:
    @Override
    protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
          GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
          this.drawPanorama();
          Tessellator tessellator = Tessellator.instance;
          tessellator.startDrawingQuads();
          double minX = 0.0D;
          double minY = 0.0D;
          double maxX = 1.0D;
          double maxY = 1.0D;
          double screenRatio = (double)super.width / (double)super.height;
          double textureRatio = 1.7777777777777777D;
          if(screenRatio > textureRatio) {
             minY = (1.0D - textureRatio / screenRatio) / 2.0D;
             maxY = 1.0D - (1.0D - textureRatio / screenRatio) / 2.0D;
          } else if(textureRatio > screenRatio) {
             minX = (1.0D - screenRatio / textureRatio) / 2.0D;
             maxX = 1.0D - (1.0D - screenRatio / textureRatio) / 2.0D;
          }

          tessellator.addVertexWithUV(0.0D, (double)super.height, (double)super.zLevel, minX, maxY);
          tessellator.addVertexWithUV((double)super.width, (double)super.height, (double)super.zLevel, maxX, maxY);
          tessellator.addVertexWithUV((double)super.width, 0.0D, (double)super.zLevel, maxX, minY);
          tessellator.addVertexWithUV(0.0D, 0.0D, (double)super.zLevel, minX, minY);
          tessellator.draw();
          GL11.glEnable(3042);
          GL11.glBlendFunc(770, 771);


          GL11.glDisable(3042);
       
   
    }
   
        private void drawPanorama()
    {
        int h = this.mc.displayHeight;
        int w = this.mc.displayWidth;

//TODO

        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glDepthMask(false);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        this.mc.getTextureManager().bindTexture(menu[(int) img_num]);
        Tessellator var3 = Tessellator.instance;
        var3.startDrawingQuads();
        var3.addVertexWithUV(0.0D, (double) height, -90.0D, 0.0D, 1.0D);
        var3.addVertexWithUV((double) width, (double) height, -90.0D, 1.0D,
                1.0D);
        var3.addVertexWithUV((double) width, 0.0D, -90.0D, 1.0D, 0.0D);
        var3.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D);
        var3.draw();
        GL11.glDepthMask(true);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glPopMatrix();

        int k = (int) width - 200;
        int l = (int) height / 2 + 10;

       
    }



Так вот, образовалась у меня маленькая проблемка. Я привязываю текстурку к гуишке инвентаря, но при уменьшении/увеличивании окна она как-бы двигается... И выходит примерная анархия:

KLfe6k7E7_c.jpg
21rWL9JxpXc.jpg
 
Последнее редактирование:
3,005
192
592
Нужно что-то типо как в GuiContainer, а именно guiLeft и guiTop и от него отрисовывать.
Код:
        guiLeft = (width - xSize) / 2;
        guiTop = (height - ySize) / 2;
~~~
Всего-лишь предположения.
 
Последнее редактирование:
344
1
47
Так, я дома... Хорошо, сейчас гляну) Но там такая проблема: Она может быть закреплена, но ведь контейнер и гуи открываются отдельно? На сервере так вообще контейнер, хотя он тут не при чем.
 
3,005
192
592
Отображение идет в гуи.
ГуиКонтейнер - это гуи, который имеет контейнер.
~~~
Вроде так.
 
3,005
192
592
Зайди в любой гуи, например печки. И посмотри как там сделано.
Не вижу каких-то не обычных вещей в скринах #1.
 
344
1
47
Сделал как ты посоветовал, но образуется оная проблема. Я не могу изменить размер через glScalef

Если же попробовать - образуется оная проблема, при уменьшении и увеличивании. Не изменяя - все нормально, но тогда иммейдж не подходящего размера.

Код:
	@Override
	protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
	    //this.drawPanorama();	
		GL11.glColor4f(1.5F, 1.5F, 1.5F, 1.5F);
		this.mc.renderEngine.bindTexture(gui);
		int posX = (this.width - xSize-200) / 2;
		int posY = (this.height - ySize-170) / 2;
 
		//GL11.glScalef(2F, 2F, 2F);
		drawTexturedModalRect(posX, posY, 0, 0, xSize+70, ySize+20);
		//GL11.glScalef(0.5F, 0.5F, 0.5F);
	      GL11.glDisable(3042);
	}
 
344
1
47
Не, не работайт )))

Код:
      GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glPushMatrix();
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0, Minecraft.getMinecraft().displayWidth/2,
        		Minecraft.getMinecraft().displayHeight/2, 0.0, 
                1000.0,
                3000.0
        );
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
    	this.mc.renderEngine.bindTexture(gui);
		int posX = 200;
		int posY = -170;
        drawTexturedModalRect(posX, posY, 0, 0, xSize+70, ySize+20);
        
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glPopMatrix();
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
 
344
1
47
Отходил, секунду
____

UPDATE
 

Вложения

  • 2018-06-21_02.39.14.png
    2018-06-21_02.39.14.png
    30.3 KB · Просмотры: 18
  • 2018-06-21_02.39.18.png
    2018-06-21_02.39.18.png
    44 KB · Просмотры: 17
  • 2018-06-21_02.39.22.png
    2018-06-21_02.39.22.png
    35.1 KB · Просмотры: 17
  • 2018-06-21_02.39.27.png
    2018-06-21_02.39.27.png
    38 KB · Просмотры: 18
344
1
47
Хм, а может просто рендерить много изображений? (По частям собрать.)

К примеру для слотов одно, для украшений и брони другое, а для хотбара и вовсе третье? Костыльно правда.
 
344
1
47
В общем... Я так подумал и решил гуи с контейнером тупо по частям рисовать. И удобно и противоречить не надо. Вроде так получилось... Так что тему можно закрывать, хоть она и не решена. Увы. Но не так страшно )
 

Вложения

  • 2018-06-21_03.58.24.png
    2018-06-21_03.58.24.png
    142 KB · Просмотры: 25
Сверху