Minecraftでカスタムアイテム作ってみる
ForgeのMod制作の続きをしてみる。以前のセットアップの記事はこっち。
とりあえずアイテムを作る。
とりあえずアイテムを作るのは非常に簡単で、Mod初期化時に GameRegistry#registerItem()
メソッドを使ってアイテムを登録すれば良いだけのようです。
ここでいうMod初期化時というのは、 preInit(FMLPreInitializationEvent event)
が呼ばれるタイミングです。ハンドラの書き方とかはざっくりとセットアップの記事にも書いてます。
つまるところ、下記のように net.minecraft.item.Item
を継承したクラスを新しく作っておき…
package com.example.examplemod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; public class GenericItem extends Item { public GenericItem() { // 色んな設定をする setMaxStackSize(64); setCreativeTab(CreativeTabs.tabMisc); setUnlocalizedName("genericItem"); } }
下記のように、Mod初期化時のハンドラで登録してあげると、もうそれだけでアイテムが一応出来上がる。
package com.example.examplemod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Blocks; @Mod(modid = ExampleMod.MODID, name = ExampleMod.MODNAME, version = ExampleMod.VERSION) public class ExampleMod { /** MODのID。小文字であること */ public static final String MODID = "examplemod"; /** MODの名前 */ public static final String MODNAME = "Example Mod"; /** MODのバージョン */ public static final String VERSION = "1.0"; @Mod.Instance(value = ExampleMod.MODID) //Tell Forge what instance to use. public static ExampleMod instance; private static GenericItem myItem; @EventHandler public void preInit(FMLPreInitializationEvent event) { myItem = new GenericItem(); GameRegistry.registerItem(myItem, "myItem"); } }
確認してみる
- シングルプレイでワールドを生成する
- チートモードをONにしておく
- そのワールドでプレイ開始
/give @p <MODID>:<ITEMID>
というコマンドを発行する<MODID>
は、コード内のMODID
変数に格納した名前。<ITEMID>
は、#registerItem()
の第二引数に指定した名前。- 例:
/give @p examplemod:myItem
上記でアイテムが入手できる。下記のような感じ
ローカライズ(日本語化)する
アイテムの名前がなんか変な名前(item.genericItem.name)になっているのが分かります。 これを日本語名にするには、アイテム名を記述したファイルを作成します。
ファイルは、プロジェクト内のsrc/main/resources/assets/genericmod/lang
ディレクトリの下に、 ja_JP.lang
という名前で作ります。僕の環境では、 src/main/resources
まではディレクトリが存在したので、そこから先のフォルダとファイルは自分で作りました。
他の言語にも対応させるには、同様のディレクトリに別の言語向けファイルを作ります。例えば、英語だと en_US.lang
です。
IntelliJ IDEAでは下記のような表示になります。
で、そのファイルには下記のような記述をします。
英語(en_US.lang):
item.genericItem.name=Delicious Cookie
日本語(ja_JP.lang):
item.genericItem.name=おいしいクッキー
その状態で実行すると、下記のような表示になります。
英語:
日本語:
おおおお。ほとんどコード書いてないですが、実際の画面にアイテムとして出てくれるとかなり嬉しいですね!