2017-03-16 3 views
0

これで、Minecraft TNTブロックを拡張し、onBlockActivated関数をオーバーライドする 'BlockTest.java'というブロック用のクラスを作成しました。問題はブロックを登録する方法です。私が見つけることができる唯一のチュートリアルは以前のバージョンのものです。minecraft 1.11 forgeでブロックを登録する方法

私はすべてのブロックにItemBlockも必要と考えています。

//(this code is in my main class inside init) 
public static Block oldTNT; 
public static ItemBlock oldTNTIB; 

oldTNT = new blockTest(); 
oldTNT.setRegistryName("oldTNT"); 
oldTNT.setUnlocalizedName(oldTNT.getRegistryName().toString()); 
GameRegistry.register(oldTNT); 

oldTNTIB.setRegistryName("oldTNT"); 
oldTNTIB.setUnlocalizedName(oldTNTIB.getRegistryName().toString()); 
GameRegistry.register(oldTNTIB); 

しかし、これはゲームをクラッシュし、問題が登録段階にあった私に言っている:これは、現在登録で私の試みのように見えるものです。これはまったく正しい線に沿っていますか? itemBlockもインスタンス化する必要がありますか?

ボーナスの質問、クリエイティブタブの設定は、ローカライズされていない名前を設定した場所で行われますか?

私はmod開発に新しいので、どんな助けもありません。

答えて

2

はい、ItemBlockをインスタンス化する必要があります。これは、1つの方法です:

oldTNTIB = new ItemBlock(oldTNT); 

創造タブを設定するために、あなたが使用することができます。

oldTNT.setCreativeTab(<enter tab here>); 
0

あなたが原因となる二つのブロック(oldTNToldTNTIB)のために同じレジストリ名oldTNTを使用していますクラッシュ。

2番目のブロックのレジストリ名を最初のブロックのレジストリ名と異なるものに変更する必要があります。

さらに、1.11以降では、レジストリ名などのすべての小文字を使用することを強くお勧めします。これは、1.11+ Minecraftのリソースパックシステムで、小文字をResourceLocationに強制するためです。レジストリ名のように大文字を使用すると、後で混乱する可能性があります。

創造タブを設定するために、あなただけの(すべてのバニラのMinecraftのタブがCreativeTabsクラスの静的フィールドを持っている)適切なCreativeTabsインスタンスを使用してブロックインスタンスにsetCreativeTabを呼び出します。

関連する問題