GUI и Слоты

Версия Minecraft
1.7.10
126
6
33
Суть такова: слоты инвентаря имеют начало координат в левом верхнем углу экрана, а нужно чтобы оно было в в левом верхнем углу GUI.

Java:
int var3;
        
        for(var3 = 0; var3 < 9; ++var3) {
            this.addSlotToContainer(new Slot(inventoryPlayer, var3, 8 + var3 * 18, 142));
        }

        for(var3 = 0; var3 < 3; ++var3) {
            for(int var4 = 0; var4 < 9; ++var4) {
                this.addSlotToContainer(new Slot(inventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
            }
        }

Безымянный.png
 
Нужно использовать переменные guiLeft и guiTop, что бы рендер был относительно левого верхнего угла GUI, а не minecraft'а.
 
Java:
@Override
    protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        mc.getTextureManager().bindTexture(guiPageTextures[0]);
        this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);

    }
Эти переменные я получаю на месте
 
У тебя координаты слотов идут относительно левого верхнего угла minecraft'а, а не GUI..
ОЛО!
 
Безымянный.png

this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize);

Думаю, я понял в чём проблема и могу её решить

Проблема была в том что по неизвестной причине guiLeft и guiTop были равны 0

UPD: причина обнуления была в пустом initGui()
 
Последнее редактирование:
В метод initGui, типа попробуй сделать так:
Java:
@Override
public void initGui() {
    guiLeft = (gui.width - xSize) / 2;
    guiTop = (gui.height - ySize) / 2;
}
А в рендере не используй:
Java:
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
т.е.:
Java:
@Override
    protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        mc.getTextureManager().bindTexture(guiPageTextures[0]);
        this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize);
    }
И xSize и ySize в конструктор укажи нужные размеры Gui активной области.
---
xSize и ySize от маяка.
Java:
        this.xSize = 230;
        this.ySize = 219;
 
Назад
Сверху