1

首先,我真的只是在尝试学习 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);
    }
}
4

2 回答 2

2

你从来没有mc在你的BiteGui班级初始化。然后你尝试在drawBiteGuiwith中引用它this.mc.fontRendererNullPointerException正如你所说,这会给你一个。

private Minecraft mc;

……相当于……

private Minecraft mc = null;

你应该在你的BiteGui构造函数中添加一些东西来初始化它。

于 2013-03-17T22:07:23.337 回答
1

我想出了如何让它停止闪烁!在 mod_Bite 中,

改变这个:

ModLoader.setInGameHook(this, true, true);

对此:

ModLoader.setInGameHook(this, true, false);
于 2013-10-25T00:06:56.897 回答