首先,我真的只是在尝试学习 Java。此时我想做的就是在屏幕上显示一个字符串;
所以我有我的 mod_Bite 类和我的 BiteGui 类。 (Bite只是一个随意的名字,我当时正在吃饭)
//mod_Bite.java
package net.minecraft.src;
import net.minecraft.client.Minecraft;
public class mod_Bite extends BaseMod {
@Override
public String getVersion() {
return "1.0";
}
@Override
public void load() {
ModLoader.setInGameHook(this, true, true);
}
public mod_Bite() {
}
@Override
public boolean onTickInGame(float tick, Minecraft mc)
{
return true;
}
}
和
//BiteGui.java
package net.minecraft.src;
import net.minecraft.client.Minecraft;
public class BiteGui extends Gui {
private Minecraft mc;
public BiteGui(){
drawBiteGui();
}
public void drawBiteGui() {
FontRenderer fr = this.mc.fontRenderer;
drawString(fr, "Testing!", 5, 5, 0xffffff);
}
}
我不明白的是如何创建它。我尝试在 onTickInGame 方法中创建一个 BiteGui 对象(尽管我认为它不应该在每次更新时创建它)
public boolean onTickInGame(float tick, Minecraft mc)
{
BiteGui biteObj = new BiteGui();
return true;
}
但它说存在空指针异常,据我所知,这意味着我正在尝试使用未分配任何值的东西或者它指向任何东西。 我显然没有在这里做某事。
<小时/>编辑:我更改了代码,它可以工作,只是文本会随着每个刻度闪烁而不是停留在屏幕上。显然是因为我在 onTickInGame 方法中创建对象,但我不知道如何从其他地方初始化 Minecraft。
package net.minecraft.src;
import net.minecraft.client.Minecraft;
public class mod_Bite extends BaseMod {
@Override
public String getVersion() {
return "1.0";
}
@Override
public void load() {
ModLoader.setInGameHook(this, true, true);
}
public mod_Bite() {
}
@Override
public boolean onTickInGame(float tick, Minecraft mc)
{
BiteGui biteObj = new BiteGui(mc);
return true;
}
}
和
package net.minecraft.src;
import net.minecraft.client.Minecraft;
public class BiteGui extends Gui {
private Minecraft mc;
public BiteGui(Minecraft minecraft) {
this.mc = minecraft;
drawBiteGui();
}
public void drawBiteGui() {
FontRenderer fr = this.mc.fontRenderer;
drawString(fr, "Testing!", 5, 5, 0xffffff);
}
}
最佳答案
您永远不会在 BiteGui
类中初始化 mc
。然后,您尝试在 drawBiteGui
中使用 this.mc.fontRenderer
引用它。正如您所说,这会给您一个 NullPointerException
。
private Minecraft mc;
...相当于...
private Minecraft mc = null;
您应该在 BiteGui
构造函数中添加一些内容以将其初始化为某些内容。
关于java - 创建 Gui 的实例(使用 ModLoader 进行 Minecraft 模组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466787/