gpt4 book ai didi

java - 创建 Gui 的实例(使用 ModLoader 进行 Minecraft 模组)

转载 作者:行者123 更新时间:2023-12-02 07:11:23 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com