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
一切都显示正确,只是按钮不起作用,当我点击singleplayer的支持打开选择世界屏幕时 我已经在这个项目上工作了一个星期了,我花了这么多的时间,写了数千行代码来达到这一点,如果你花一些时间来帮助我解决这个错误,这对我来说意味着整个世界,tysm 主菜单图像: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你的版本是什么 我也不确定,但我想你需要打电
那么鼠标单击事件在您单击该点时不会触发?对于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