我的错误是什么?

时间:2015-11-15 03:40:00

标签: java

所以我编写了一个Minecraft mod,尽管我对Java和编码很新。所以我有两个班级:

InGameGUI类



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);
	}
}




Mod Class



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。

1 个答案:

答案 0 :(得分:0)

在InGameGUI课程中,您应该在String.valueof(Mod.clicks)中使用renderScreen并抛弃其他clicks变量。 Ints是值类型,因此每个都在堆栈上有自己的位置。换句话说,当鼠标点击更新Mod.clicks时,InGameGUI clicks变量不会更新,而且是您尝试打印的变量。