Java 创建Gui实例(使用ModLoader进行Minecraft建模)

Java 创建Gui实例(使用ModLoader进行Minecraft建模),java,user-interface,minecraft,Java,User Interface,Minecraft,首先,我只是在尝试学习Java。此时我只想在屏幕上显示一个字符串 所以我有我的mod_-Bite类和我的BiteGui类。(咬只是一个随机的名字,我当时正在吃) 及 我不明白的是如何创造它。我试着在onTickInGame方法中创建一个BiteGui对象(尽管我认为它不应该每勾一次就创建一个) 但它说有一个空指针异常,据我所知,这意味着我试图使用未赋值的东西,或者它不指向任何东西。 我显然没有在这里做什么 编辑:我更改了代码,除了文本会随着每个勾号闪烁而不是停留在屏幕上外,代码正常工作。这显然

首先,我只是在尝试学习Java。此时我只想在屏幕上显示一个字符串

所以我有我的mod_-Bite类和我的BiteGui类。(咬只是一个随机的名字,我当时正在吃)

我不明白的是如何创造它。我试着在onTickInGame方法中创建一个BiteGui对象(尽管我认为它不应该每勾一次就创建一个)

但它说有一个空指针异常,据我所知,这意味着我试图使用未赋值的东西,或者它不指向任何东西。 我显然没有在这里做什么


编辑:我更改了代码,除了文本会随着每个勾号闪烁而不是停留在屏幕上外,代码正常工作。这显然是因为我正在用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;
    }
}


您永远不会在
BiteGui
类中初始化
mc
。然后尝试在
drawBiteGui
中使用
this.mc.fontRenderer
引用它。正如您所说,这将给您一个
NullPointerException

private Minecraft mc;
。。。相当于

private Minecraft mc = null;

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

我想出了如何让它停止闪烁的方法!在摩登咬

更改此项:

ModLoader.setInGameHook(this, true, true);
为此:

ModLoader.setInGameHook(this, true, false);

例外在哪里?无论如何,首先使用Java API(Swing),不要试图给逻辑添加更多的混乱,留待以后再说。我很好奇为什么您使用ModLoader而不是Forge。感谢您告诉我们您遇到了什么样的错误;你不会相信有多少人只是说“它不起作用。修复它。”然而,当你遇到错误时,请告诉我们你得到的完整堆栈跟踪。这会告诉我们行号和其他详细信息,我们可以使用这些信息更好地诊断您的问题。非常感谢。您是否可以添加您编写代码使用的Minecraft、Java和ModLoader的哪些版本?以及最终如何解决mc==null问题;(即显示初始化mc的代码行)?啊,这是有道理的,我从onTickInGame传入Minecraft,它可以工作,但文本随着每个勾号闪烁。如何使文本保持显示状态?我用我所做的更新了主要帖子。
private Minecraft mc;
private Minecraft mc = null;
ModLoader.setInGameHook(this, true, true);
ModLoader.setInGameHook(this, true, false);