所以我编写了一个Minecraft mod,尽管我对Java和编码很新。所以我有两个班级:
package kaelinatorclickingspeedmod;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
public class InGameGUI extends GuiScreen{
public InGameGUI() {
this.mc = Minecraft.getMinecraft();
}
int clicks = Mod.clicks;
public void renderScreen(){
mc.fontRendererObj.drawString(String.valueOf(clicks), 305, 232, 0x0026FF);
}
}

package kaelinatorclickingspeedmod;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import io.netty.util.Timer;
public class Mod implements MouseListener {
private static InGameGUI
inGameGUI = new InGameGUI();
public static InGameGUI getInGameGUI() {
return inGameGUI;
}
public static int clicks=0;
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
clicks++;
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}

无论如何,我期望发生的事情是,每次从0开始点击它都会增加1.但真正发生的是它只是保持在0.当我点击时没有任何改变。是因为它是静态int吗?让我能够拨打"点击"从Mod到InGameGUI,它必须是一个静态int。但还有另一种方式来称呼它吗?我可以使用get命令吗?是因为我需要某种继续命令吗?谢谢!
编辑:即使我将点击次数默认设置为1,它仍会显示0。
答案 0 :(得分:0)
在InGameGUI课程中,您应该在String.valueof(Mod.clicks)
中使用renderScreen
并抛弃其他clicks
变量。 Ints是值类型,因此每个都在堆栈上有自己的位置。换句话说,当鼠标点击更新Mod.clicks
时,InGameGUI clicks
变量不会更新,而且是您尝试打印的变量。