無機能なIGNISアイテムを作る
早速新規Item制作に取りかかります。
この先のやり方は、各Modderによって千差万別だと思います。私の場合は、アイテムを作るならまず無機能なアイテムとして作り、レンダー周りを作成していきます。要するに、見た目から作る方向です。
機能を一つずつ追加していった方がデバッグプレイ時に確認しやすいためでもありますし、早い段階で面白おかしい物がゲーム中に出現した方がモチベーションが維持しやすいのでこうしています。自分が作った物をゲーム中で見られるようになるのは、やはり何度やっても面白いものです。
無機能アイテムの追加
アイテムを追加するための最低限のパーツは、
- Item.class継承クラス
- アイコン画像
- langファイル
この3つです。
ただし今回は、アイテムの見た目はTechneで作るモデルを適用するつもりでいますので、アイコンは仮の物を適当にあてがいます。
- ItemIgnis.class
今回、IGNISはバニラの弓のクラスであるItemBow.classを継承させます。 ItemBow.classのメソッドには依存しない造りにするつもりなので、本来であれば不要なのですが、アイテムに弓用のエンチャントが付けられるかの可否がItemBow.classを継承しているかで判定されているというバニラの処理の都合により、こうしています。
package defeatedcrow.flamethrower.item; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemBow; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ItemIgnis extends ItemBow { public ItemIgnisClone() { // スタックサイズ上限。スタック出来ないようにするので1にする。 this.setMaxStackSize(1); // この武器はメタデータ(耐久値)を持たない。 this.setMaxDamage(0); // クラフトでの修理を不可に。 this.setNoRepair(); } // Icon用テクスチャファイルの指定はここで行う。 // ItemBowクラスでも、このメソッドでテクスチャパスを指定しているため、 // オーバーライドして上書きしなければならない。(コンストラクタでのテクスチャパス指定は推奨しない。) @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister par1IconRegister) { this.itemIcon = par1IconRegister.registerIcon("dcsflame:flamethrower"); } }
- テクスチャ
テクスチャの置き場は、src/main/resources/assets/dcsflame/textures/itemsフォルダのflamethrower.pngです。 "dcsflame"の部分はテクスチャ登録時に登録するドメイン。
余談ですが、テクスチャの数が多い場合、itemsフォルダの中でフォルダ分けしたい場合は、以下のように記述することで設定できます。
.registerIcon("dcsflame:tools/flamethrower");
このように、コロン(:)の後にフォルダ名を入れてスラッシュ(/)を入れれば、上記の場合は「tools」フォルダ内のテクスチャファイルを読み込ませることが出来ます。
- Langファイル
1.6までは言語設定はソース内で設定できていました。 1.7からはそれが不可になり、別途langファイルを用意します。基本的には、英語(en_US)と日本語(ja_JP)を用意すれば十分ではないかと思います。
作り方は、
- 新規のテキストファイルを作成
- 一行目を空行にし、二行目以降に言語設定を記述していく
- ファイルを保存し、「en_US.lang」など所定の名前・拡張子を.langに変更
- できたファイルをsrc/main/resources/assets/MODのIDを小文字にしたもの/langに配置
注意点として、テクスチャなどと違いドメインを変えられません。MODIDを小文字にしたもの(IGNISの場合は「dcsflame」)固定です。 また、日本語等の2バイト文字を含む場合は、扱うソフトに注意して下さい。
- ja_JP.lang
item.dcsflame.flamethrower.name=火炎放射器
- en_US.lang
item.dcsflame.flamethrower.name=Flamethrower
作者の経験談:もらい物の中国語LangファイルをうっかりTerraPadで開いた際、中国語の漢字の大部分がバケ文字に変わってしまったことがありました。 化けないテキストエディタを探して、結局一番良かったのがeclipse内蔵のテキストエディタだったりします。 eclipse上のエクスプローラでファイルを右クリック→次で開く→テキストエディターを選択で、内蔵のテキストエディタから開けます。
ただ、TerraPadのように保存時の文字コードを選択できる点も有利になることがあるので、テキストエディタは用途によって使い分けるのが良さそうです。