Как сделать свою картинку в главном меню?

Версия Minecraft
1.12.2
89
2
Как поставить свою картинку drawScreen - заменяю класс net.minecraft.client.GuiMainMenu

Как заместо панорамы сделать картинку.
 
Решение
Зачем изобретать велосипед второй раз?
А может затем понанобиться, что-то ещё добавить, типа рендер игрока. Дополнительный эффект или ещё-то.
---
Вот на 1.12.2 сделал:
Java:
@SideOnly(Side.CLIENT)
public class MainGUI extends GuiMainMenu {

    private static final ResourceLocation texture = new ResourceLocation("textures/gui/achievement/achievement_icons.png");

    public MainGUI() {
        super();
    }

    @Override
    public void initGui() {
        int i = this.height / 4 + 48;
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
        this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98...

timaxa007

Модератор
5,831
409
672
Я на 1.7.10 ради теста сделал такое:
Java:
@SideOnly(Side.CLIENT)
public class MainGUI extends GuiMainMenu {

    private static final ResourceLocation texture = new ResourceLocation("textures/gui/achievement/achievement_icons.png");

    public MainGUI() {
        super();
    }

    @Override
    public void initGui() {
        int i = this.height / 4 + 48;
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
        this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
    }

    @Override
    public void drawScreen(int mouseX, int mouseY, float parTick) {
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        mc.renderEngine.bindTexture(texture);
        drawTexturedModalRect(0, 0, 0, 0, mc.displayWidth, mc.displayHeight);
        //---
        int k;

        for (k = 0; k < this.buttonList.size(); ++k)
            ((GuiButton)this.buttonList.get(k)).drawButton(this.mc, mouseX, mouseY);

        for (k = 0; k < this.labelList.size(); ++k)
            ((GuiLabel)this.labelList.get(k)).func_146159_a(this.mc, mouseX, mouseY);

    }

}

Вот так выглядит главное меню:

2019-01-24_21.49.40.png
 
89
2
Я на 1.7.10 ради теста сделал такое:
Java:
@SideOnly(Side.CLIENT)
public class MainGUI extends GuiMainMenu {

    private static final ResourceLocation texture = new ResourceLocation("textures/gui/achievement/achievement_icons.png");

    public MainGUI() {
        super();
    }

    @Override
    public void initGui() {
        int i = this.height / 4 + 48;
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
        this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
    }

    @Override
    public void drawScreen(int mouseX, int mouseY, float parTick) {
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        mc.renderEngine.bindTexture(texture);
        drawTexturedModalRect(0, 0, 0, 0, mc.displayWidth, mc.displayHeight);
        //---
        int k;

        for (k = 0; k < this.buttonList.size(); ++k)
            ((GuiButton)this.buttonList.get(k)).drawButton(this.mc, mouseX, mouseY);

        for (k = 0; k < this.labelList.size(); ++k)
            ((GuiLabel)this.labelList.get(k)).func_146159_a(this.mc, mouseX, mouseY);

    }

}

Вот так выглядит главное меню:

Посмотреть вложение 4374
Если что 1.7.10 не 1.12.2, я видел темы 1.7.10 но к 1.12.2 совсем не подходит
 

timaxa007

Модератор
5,831
409
672
Зачем изобретать велосипед второй раз?
А может затем понанобиться, что-то ещё добавить, типа рендер игрока. Дополнительный эффект или ещё-то.
---
Вот на 1.12.2 сделал:
Java:
@SideOnly(Side.CLIENT)
public class MainGUI extends GuiMainMenu {

    private static final ResourceLocation texture = new ResourceLocation("textures/gui/achievement/achievement_icons.png");

    public MainGUI() {
        super();
    }

    @Override
    public void initGui() {
        int i = this.height / 4 + 48;
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
        this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
    }

    @Override
    public void drawScreen(int mouseX, int mouseY, float partialTicks) {
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        mc.renderEngine.bindTexture(texture);
        drawTexturedModalRect(0, 0, 0, 0, mc.displayWidth, mc.displayHeight);
        //---
        int k;

        for (int i = 0; i < this.buttonList.size(); ++i)
            ((GuiButton)this.buttonList.get(i)).drawButton(this.mc, mouseX, mouseY, partialTicks);

        for (int j = 0; j < this.labelList.size(); ++j)
            ((GuiLabel)this.labelList.get(j)).drawLabel(this.mc, mouseX, mouseY);

    }

}
2019-01-25_19.28.01.png
 
1,031
19
87
89
2
А может затем понанобиться, что-то ещё добавить, типа рендер игрока. Дополнительный эффект или ещё-то.
---
Вот на 1.12.2 сделал:
Java:
@SideOnly(Side.CLIENT)
public class MainGUI extends GuiMainMenu {

    private static final ResourceLocation texture = new ResourceLocation("textures/gui/achievement/achievement_icons.png");

    public MainGUI() {
        super();
    }

    @Override
    public void initGui() {
        int i = this.height / 4 + 48;
        this.buttonList.clear();
        this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
        this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
    }

    @Override
    public void drawScreen(int mouseX, int mouseY, float partialTicks) {
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        mc.renderEngine.bindTexture(texture);
        drawTexturedModalRect(0, 0, 0, 0, mc.displayWidth, mc.displayHeight);
        //---
        int k;

        for (int i = 0; i < this.buttonList.size(); ++i)
            ((GuiButton)this.buttonList.get(i)).drawButton(this.mc, mouseX, mouseY, partialTicks);

        for (int j = 0; j < this.labelList.size(); ++j)
            ((GuiLabel)this.labelList.get(j)).drawLabel(this.mc, mouseX, mouseY);

    }

}
Посмотреть вложение 4375
Ещё вопрос, у меня 1 картинка, на 2 разделяется.
половина экрана и другая половина экрана по картинке
 

timaxa007

Модератор
5,831
409
672
Эх... На новой версии я не знаю как правильнее сделать. У меня получается:
Java:
    @Override
    public void drawScreen(int mouseX, int mouseY, float partialTicks) {
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
        mc.renderEngine.bindTexture(texture);
        drawTexturedModalRectCustom(0, 0, 0, 0, mc.displayWidth, mc.displayHeight);
        //---
        int k;

        for (int i = 0; i < this.buttonList.size(); ++i)
            ((GuiButton)this.buttonList.get(i)).drawButton(this.mc, mouseX, mouseY, partialTicks);

        for (int j = 0; j < this.labelList.size(); ++j)
            ((GuiLabel)this.labelList.get(j)).drawLabel(this.mc, mouseX, mouseY);

    }

    public void drawTexturedModalRectCustom(int x, int y, int textureX, int textureY, int width, int height) {
        Tessellator tessellator = Tessellator.getInstance();
        BufferBuilder bufferbuilder = tessellator.getBuffer();
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        
        bufferbuilder.pos((double)(x + 0), (double)(y + height), (double)this.zLevel)
        .tex(-1, 1).endVertex();
        
        bufferbuilder.pos((double)(x + width), (double)(y + height), (double)this.zLevel)
        .tex(1, 1).endVertex();
        
        bufferbuilder.pos((double)(x + width), (double)(y + 0), (double)this.zLevel)
        .tex(1, -1).endVertex();
        
        bufferbuilder.pos((double)(x + 0), (double)(y + 0), (double)this.zLevel)
        .tex(-1, -1).endVertex();
        
        tessellator.draw();
    }
2019-01-26_22.10.52.png

Но если размер другой, то растягивается или размножается:

2019-01-26_22.10.55.png
 
89
2
Ага. Хочешь типа растянуть, то типа тебе надо использовать свой метод (не параметры) наподобие drawTexturedModalRect.
Короче если на весь экран раскрыть, то оно размажется, а если в окне тогда норм
 

Вложения

  • Снимок1.PNG
    Снимок1.PNG
    315.8 KB · Просмотры: 47
  • Снимок2.PNG
    Снимок2.PNG
    157.1 KB · Просмотры: 59
3,005
192
592
А нельзя открыть мод на кастом меню и взять от туда код посмотреть как там делается?
А не писать на все форумы (ну и дс'ы), ЧТО У МЕНЯ НЕ ПОЛУЧАЕТСЯ ПАМАГАЙТЕ
 
Сверху