提供: Minecraft Modding Wiki
2012年8月1日 (水) 09:42時点におけるTakanasayo (トーク | 投稿記録)による版
移動先: 案内検索

この記事は"ModLoader"を前提MODとしています。

作成するソース
mod_Tutorial.java

全体の完成形

package net.minecraft.src;
 
 public class mod_Tutorial extends BaseMod {
    
    public String getVersion() {
       return "1.0.0";
    } 
    public void load() {       
       ModLoader.addRecipe(new ItemStack(Item.diamond, 4), 
                           new Object[]{ "X","X","X",
                           Character.valueOf('X'),Block.dirt });

     /*
       ここは不定形レシピを作るときに使います。
       作らないのであれば削除してください。
       */
       ModLoader.AddShapelessRecipe(new ItemStack(Item.diamond,1),
                           new Object[]{
                           new ItemStack(Block.dirt, 1), new ItemStack(Block.sand, 1)});

    }   
 }

レシピを作る

ModLoader.addRecipe(new ItemStack(Item.diamond, 4), 
                     new Object[]{ "X","X","X",
                     Character.valueOf('X'),Block.dirt });

レシピを指定してる部分はこの部分です。
ModLoader.addRecipeで形が決まったレシピでこれを作りますよ!というのを決めています。
(new itemStack(追加アイテム名,一度に作れる数))となっています。
今回の場合 土を縦に3つ並べるとダイヤモンドというアイテムを4個出すというプログラムになっています。

new Object[]{

この後の文がレシピの形を決めています。分かりやすく見せると、
"000"
"000"
"000"
このように配置が決まっています。
何も入れない部分は半角空白、素材を入れる部分は任意の文字を入れてください。同じ文字は同じパーツと判断されます。
空白を入れなかった場合、ワークベンチに収まればそれで作れるようになってしまいます。
"XX"とした場合、 "XX0"または"0XX"というように認識されます。指定は3段でなくても問題ありません。
そのように指定したら、次はその文字がどんなパーツかを指定します。

Character.valueOf('X'),Block.dirt });

valueOfの後の中の文字が指定したパーツの文字、その次が素材になります。
ブロックが素材の場合Block、置けないアイテムの場合Item、になります。
そのあとのアイテムの種類は、ゲームでよく呼ばれる名前とは違う場合があります。
Item.javaやBlock.javaにリストのような部分があったりしますので、そこに書いてある名前を参考にしてください。
複数素材がある場合、1つ指定した後に , で区切って次のパーツを指定してください。
また、ダメージ値(炭、羊毛など)を指定したい場合、

Character.valueOf('X'),new ItemStack(Item.coal, 1, 0) });

というように記述します。

例として、石ピッケルのレシピの形を作る場合、こうなります。

ModLoader.addRecipe(new ItemStack(ttrPickaxe,1),
                     new Object[]{"XXX"," Y "," Y ",
                     Character.valueOf('X'),Block.stone,Character.valueOf('Y'),Item.stick});

不定形レシピを作る

上記のレシピに対して配置は関係ないレシピの作り方です。

ModLoader.AddShapelessRecipe(new ItemStack(Item.diamond,1),
            new Object[]{
            new ItemStack(Block.dirt, 1), new ItemStack(Block.sand, 1)});

ここがレシピを指定している部分です。
ModLoader.AddShapelessRecipeで不定形レシピを作ることを宣言しています。
ここでは、土ブロック(Block.dirt, 1)と砂ブロック(Block.sand, 1)で(Item.diamond,1)ができるように書いてあります。


レシピはこれで終わりです。
追加アイテムがあればそれを作るレシピも作れます。詳しくは無機能のアイテムを追加するをご覧ください。

API例と解説

addRecipe 定型レシピの追加
例)焼き石で石ピッケルを作成
ModLoader.addRecipe(new ItemStack(Item.pickaxeStone,1),
    new Object[]{"XXX"," Y "," Y ",
    Character.valueOf('X'),Block.stone,Character.valueOf('Y'),Item.stick});
addShapelessRecipe 不定形レシピの追加
例)赤羊毛と黒羊毛から、茶色羊毛を作成
ModLoader.addShapelessRecipe(new ItemStack(Block.cloth,2,12),
    new Object[]{
    new ItemStack(Block.cloth,1,14), new ItemStack(Block.cloth,1,15)});
例)木材1つと石炭(木炭)2個から、松明を8つ作成
ModLoader.addShapelessRecipe(new ItemStack(Block.torchWood,8),
    new Object[]{
    new ItemStack(Item.coal,1,-1), new ItemStack(Item.coal,1,-1), new ItemStack(Block.planks,1,-1)});
  • このソースファイルで定義しているアイテムやブロックを作成、使用する場合、ttrPickaxe のようにプリフィクス無しで記述する。
  • 既存のアイテムや他のファイルで定義されているアイテムやブロックを作成、使用する場合、Item.stick、Block.stone のように、定義しているファイル名(ItemやBlock)をプリフィクスとしてつける(クラスのスコープを正しく指定する)。
  • ダメージ値を指定したレシピを作る場合、ItemStack関数を使用する。
    ItemStack(アイテム名,個数,ダメージ値) ダメージ値は省略可能(省略時は0)、個数は材料指定時には無効。
    ダメージ値に関わらずレシピに使用する(例えば全ての木材で作成可能にする)には、ダメージ値に「-1」を指定する。