2013-03-17 30 views
0

首先,我真的只是在嘗試學習Java。我現在想要做的就是在屏幕上顯示一個字符串;創建一個Gui實例(使用ModLoader修改我的Minecraft)

所以我有我的mod_Bite類和我的BiteGui類。 (撕咬只是一個隨機的名字,我在吃的時候)

//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); 
    } 
} 
+0

哪裏是例外?無論如何,首先要使用Java API(Swing),而不是嘗試在邏輯中添加更多混亂,請稍後再說。 – SJuan76 2013-03-17 22:07:12

+0

我很好奇你爲什麼使用ModLoader而不是Forge。 – 2013-03-17 22:14:46

+0

感謝您告訴我們您得到了什麼樣的錯誤;你不會相信有多少人會說「它沒有工作,修復它」。儘管如此,當您遇到錯誤時,請告訴我們您獲得的完整堆棧跟蹤。這告訴我們行號和其他細節,我們可以用它來更好地診斷您的問題。謝謝! – MathSquared 2013-07-17 15:56:25

回答

1

你永遠不要初始化mcBiteGui類。然後,您嘗試使用this.mc.fontRendererdrawBiteGui中提及它。如你所說,這會給你一個NullPointerException

private Minecraft mc; 

...等價於...

private Minecraft mc = null; 

你應該在你BiteGui構造函數初始化它添加一些東西。

+0

啊,這是有道理的,我從onTickInGame通過了Minecraft,它可以正常工作,但是文字會隨着每個勾號閃爍。我如何讓文本保持顯示?我用我所做的更新了主帖。 – Sharph 2013-03-17 22:40:43

1

我想出瞭如何讓它停止閃爍!在mod_Bite,

改變這一點:

ModLoader.setInGameHook(this, true, true); 

這樣:

ModLoader.setInGameHook(this, true, false); 
相關問題