Java 我想做一个自定义的minecraft开始屏幕单人按钮,但它不会工作? package skink.ui; 导入net.minecraft.client.gui.GuiScreen; 导入net.minecraft.client.gui.GuiSelectWorld; 导入net.minecraft.client.renderer.GlStateManager; 导入net.minecraft.util.ResourceLocation; 导入skink.Client; 公共类主菜单扩展GUI屏幕{ 公共主菜单(){ } public void initGui(){ } 公共真空抽丝网(内置鼠标器、内置鼠标器、浮球){ mc.getTextureManager().bindTexture(新资源位置(“Skink/background.png”); this.DrawModalRect带有自定义大小的纹理(0,0,0,0,this.width,this.height,this.width,this.height); 这个.drawRect(0,5000,5000,300,0xff162922); String[]按钮={“单人”、“多人”、“设置”、“语言”、“退出”}; 整数计数=0; 用于(字符串名称:按钮){ 这个.drawCenteredString(mc.fontrenderObj,name,(width/buttons.length)*count+(width/buttons.length)/2f+8,height-20,-1); 计数++; } GlStateManager.pushMatrix(); GlStateManager.translate(宽度/2f,高度/5f,0); GlStateManager.量表(3,3,1); GlStateManager.translate(-(宽度/2f),-(高度/5f),0; 这个.drawCenteredString(mc.fontrenderObj,Client.name+“Client”+Client.version,宽度/2f,高度/5f-mc.fontrenderObj.FONT\u高度/2f,-1); GlStateManager.popMatrix(); } 公共无效鼠标单击(int mouseX、int mouseY、int按钮){ String[]按钮={“单人”、“多人”、“设置”、“语言”、“退出”}; 整数计数=0; 用于(字符串名称:按钮){ 浮点x=(宽度/按钮.长度)*计数+(宽度/按钮.长度)/2f+8-mc.fontrenderobj.getStringWidth(名称)/2f; 浮动y=高度-20; 如果(mouseX>=x&&mouseY>=y&&mouseX

Java 我想做一个自定义的minecraft开始屏幕单人按钮,但它不会工作? package skink.ui; 导入net.minecraft.client.gui.GuiScreen; 导入net.minecraft.client.gui.GuiSelectWorld; 导入net.minecraft.client.renderer.GlStateManager; 导入net.minecraft.util.ResourceLocation; 导入skink.Client; 公共类主菜单扩展GUI屏幕{ 公共主菜单(){ } public void initGui(){ } 公共真空抽丝网(内置鼠标器、内置鼠标器、浮球){ mc.getTextureManager().bindTexture(新资源位置(“Skink/background.png”); this.DrawModalRect带有自定义大小的纹理(0,0,0,0,this.width,this.height,this.width,this.height); 这个.drawRect(0,5000,5000,300,0xff162922); String[]按钮={“单人”、“多人”、“设置”、“语言”、“退出”}; 整数计数=0; 用于(字符串名称:按钮){ 这个.drawCenteredString(mc.fontrenderObj,name,(width/buttons.length)*count+(width/buttons.length)/2f+8,height-20,-1); 计数++; } GlStateManager.pushMatrix(); GlStateManager.translate(宽度/2f,高度/5f,0); GlStateManager.量表(3,3,1); GlStateManager.translate(-(宽度/2f),-(高度/5f),0; 这个.drawCenteredString(mc.fontrenderObj,Client.name+“Client”+Client.version,宽度/2f,高度/5f-mc.fontrenderObj.FONT\u高度/2f,-1); GlStateManager.popMatrix(); } 公共无效鼠标单击(int mouseX、int mouseY、int按钮){ String[]按钮={“单人”、“多人”、“设置”、“语言”、“退出”}; 整数计数=0; 用于(字符串名称:按钮){ 浮点x=(宽度/按钮.长度)*计数+(宽度/按钮.长度)/2f+8-mc.fontrenderobj.getStringWidth(名称)/2f; 浮动y=高度-20; 如果(mouseX>=x&&mouseY>=y&&mouseX,java,minecraft,Java,Minecraft,一切都显示正确,只是按钮不起作用,当我点击singleplayer的支持打开选择世界屏幕时 我已经在这个项目上工作了一个星期了,我花了这么多的时间,写了数千行代码来达到这一点,如果你花一些时间来帮助我解决这个错误,这对我来说意味着整个世界,tysm 主菜单图像: 那么鼠标单击事件在您单击该点时不会触发?对于1.12.2,如果您不是从其他地方调用@Override,则至少@Override称为mouseClicked而不是mouseClick。但是idk你的版本是什么 我也不确定,但我想你需要打电

一切都显示正确,只是按钮不起作用,当我点击singleplayer的支持打开选择世界屏幕时

我已经在这个项目上工作了一个星期了,我花了这么多的时间,写了数千行代码来达到这一点,如果你花一些时间来帮助我解决这个错误,这对我来说意味着整个世界,tysm

主菜单图像:

那么鼠标单击事件在您单击该点时不会触发?对于1.12.2,如果您不是从其他地方调用@Override,则至少@Override称为mouseClicked而不是mouseClick。但是idk你的版本是什么

我也不确定,但我想你需要打电话

package skink.ui;

import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiSelectWorld;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.ResourceLocation;
import skink.Client;

public class MainMenu extends GuiScreen {

    public MainMenu() {
        
    }
    
    public void initGui() {
        
    }
    
    public void drawScreen(int mouseX, int mouseY, float partialTicks) {
        mc.getTextureManager().bindTexture(new ResourceLocation("Skink/background.png"));
        this.drawModalRectWithCustomSizedTexture(0, 0, 0, 0, this.width, this.height, this.width, this.height);
        
        this.drawRect(0, 5000, 5000, 300, 0xff162922);
        
        String[] buttons = { "Singleplayer", "Multiplayer", "Settings", "Language", "Quit"};
        
        int count = 0;
        for(String name : buttons) {
            this.drawCenteredString(mc.fontRendererObj, name, (width/buttons.length)*count + (width/buttons.length)/2f + 8, height - 20, -1);
            count++;
        }
        
        GlStateManager.pushMatrix();
        GlStateManager.translate(width/2f, height/5f, 0);
        GlStateManager.scale(3, 3, 1);
        GlStateManager.translate(-(width/2f), -(height/5f), 0);
        this.drawCenteredString(mc.fontRendererObj, Client.name + " Client " + Client.version, width/2f, height/5f - mc.fontRendererObj.FONT_HEIGHT/2f, -1);
        GlStateManager.popMatrix();
    }
    
    public void mouseClick(int mouseX, int mouseY, int button) {
        String[] buttons = { "Singleplayer", "Multiplayer", "Settings", "Language", "Quit"};
        
        int count = 0;
        for(String name : buttons) {
            float x = (width/buttons.length)*count + (width/buttons.length)/2f + 8 - mc.fontRendererObj.getStringWidth(name)/2f;
            float y =  height - 20;
            
            if(mouseX >= x && mouseY >= y && mouseX < x + mc.fontRendererObj.getStringWidth(name) && mouseY < y + mc.fontRendererObj.FONT_HEIGHT) {
                switch(name) {
                    case "Singleplayer":
                        mc.displayGuiScreen(new GuiSelectWorld(this));
                        break;
                }
            }
            
            count++;
        }
    }
    
    public void onGuiClosed() {
        
    }
    
}
因此,如果这些是按钮位置-->0、5000、5000、300的坐标,则应该如下所示

super.mouseClicked(i, j, k);
@覆盖
受保护的无效鼠标点击(int MouseX、int MouseY、int按钮){
超级鼠标点击(鼠标,鼠标,按钮);
如果(0MouseX&&5000MouseY){
//做事
}
}
更改:

@Override
protected void mouseClicked(int MouseX, int MouseY, int button) {
    super.mouseClicked(MouseX, MouseY, button);
    if (0 < MouseX && 5000 > MouseX && 5000 < MouseY && 300 > MouseY) {
        //Do stuff
    }
}
致:


您是否收到任何错误消息?在程序停止工作之前,该程序在该部分中运行了多远?
public void mouseClick
public void mouseClicked