提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.12.0.xxx~"}}
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.12.0.xxx~"}}
{{チュートリアル難易度|difficulty=0}}
+
作成するソース<br />
このチュートリアルでは、バニラの基本的なレシピの追加方法について解説します。
+
RecipeSample.java<br />
 
<br />
 
<br />
==ソース==
+
==全体の完成形==
===RecipeSample.java===
 
 
<source lang="java">
 
<source lang="java">
 
package mods.recipesample;
 
package mods.recipesample;
  
 +
import cpw.mods.fml.common.IFuelHandler;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
18行目: 18行目:
 
import net.minecraftforge.oredict.OreDictionary;
 
import net.minecraftforge.oredict.OreDictionary;
  
@Mod(modid = "recipe_sample")
+
@Mod(modid = "kina_tt")
public class RecipeSample{
+
public class Tutorial{
 
     @Mod.EventHandler
 
     @Mod.EventHandler
 
     public void preInit(FMLPreInitializationEvent event){
 
     public void preInit(FMLPreInitializationEvent event){
78行目: 78行目:
 
         );
 
         );
  
 +
        GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f);
 +
 +
        GameRegistry.registerFuelHandler(new IFuelHandler(){
 +
            @Override
 +
            public int getBurnTime(ItemStack fuel){
 +
                if(fuel.getItem().equals(Items.apple)){
 +
                    return 500;
 +
                }
 +
                return 0;
 +
            }
 +
        });
 
     }
 
     }
  
85行目: 96行目:
 
}
 
}
 
</source>
 
</source>
==解説==
+
 
===レシピを作る===
+
==レシピを作る==
 
<source lang="java">
 
<source lang="java">
 
  GameRegistry.addRecipe(new ItemStack(Items.diamond),
 
  GameRegistry.addRecipe(new ItemStack(Items.diamond),
106行目: 117行目:
 
</source>
 
</source>
 
このように配置が決まっています。<br />
 
このように配置が決まっています。<br />
素材を使用する部分には任意の文字を入れてください。同じ文字は同じパーツと判断されます。<br />
+
何も入れない部分は半角空白、素材を入れる部分は任意の文字を入れてください。同じ文字は同じパーツと判断されます。<br />
<source lang="java">
 
GameRegistry.addRecipe(new ItemStack(Items.diamond),
 
      "# #",
 
      '#',Blocks.dirt
 
);
 
</source>
 
何も入れない部分は上の例3のように半角空白を入れてください。<br />
 
 
空白を入れなかった場合、ワークベンチに収まればそれで作れるようになってしまいます。<br />
 
空白を入れなかった場合、ワークベンチに収まればそれで作れるようになってしまいます。<br />
"XX"のような場合"XX0"または"0XX"というように認識されます。
+
"XX"とした場合、 "XX0"または"0XX"というように認識されます。指定は3段でなくても問題ありません。<br />
上の例や下の例のように指定は3段でなくても問題はなく、例2のように<br />
 
<source lang="java">
 
GameRegistry.addRecipe(new ItemStack(Items.diamond),
 
        "###",
 
        '#',Blocks.dirt
 
);
 
</source>
 
とした場合、3段の内のいづれかに3つ土が横に並んでいれば作れるようになります。<br />
 
 
そのように指定したら、次はその文字がどんなパーツかを指定します。<br />
 
そのように指定したら、次はその文字がどんなパーツかを指定します。<br />
 
<br />
 
<br />
 
<source lang="java">
 
<source lang="java">
'#',Blocks.dirt });
+
'X',Blocks.dirt });
 
</source>
 
</source>
'#'の部分が指定したパーツの文字、その次が素材になります。<br />
+
'X'の部分が指定したパーツの文字、その次が素材になります。<br />
 
ブロックが素材の場合Blocks、置けないアイテムの場合Items、になります。<br />
 
ブロックが素材の場合Blocks、置けないアイテムの場合Items、になります。<br />
 
そのあとのアイテムの種類は、ゲームでよく呼ばれる名前とは違う場合があります。<br />
 
そのあとのアイテムの種類は、ゲームでよく呼ばれる名前とは違う場合があります。<br />
135行目: 131行目:
 
複数素材がある場合は
 
複数素材がある場合は
 
<source lang="java">
 
<source lang="java">
GameRegistry.addRecipe(new ItemStack(Items.ender_pearl),
+
GameRegistry.addRecipe(new ItemStack(Items.diamond),
         "FWF",
+
         "#",
         "W W",
+
         "#",
         "FWF",
+
         "#",
         'F',Items.feather,
+
         '#', Blocks.dirt
        'W',Blocks.end_stone
 
 
);
 
);
 
</source>
 
</source>
150行目: 145行目:
 
というように記述します。<br />
 
というように記述します。<br />
 
<br />
 
<br />
逆に、完成品のダメージ値やスタック数を決めることも可能で<br />
+
例として、石ピッケルのレシピの形を作る場合、こうなります。<br />
 
<source lang="java">
 
<source lang="java">
GameRegistry.addRecipe(new ItemStack(Blocks.wool,5),
+
GameRegistry.addRecipe(new ItemStack(Item.pickaxeStone,1),
        "LWL",
+
                    new Object[]{"XXX"," Y "," Y ",
        'L',Blocks.leaves,
+
                    'X',Block.stone,
        'W',Blocks.web
+
    'Y',Item.stick});
);
+
</source>
  
GameRegistry.addRecipe(new ItemStack(Blocks.wool,5,10),
+
==不定形レシピを作る==
        "LLL",
 
        "LWL",
 
        "LLL",
 
        'L',Blocks.leaves,
 
        'W',Blocks.web
 
);
 
</source>
 
というようになります。
 
===不定形レシピを作る===
 
 
上記のレシピに対して配置は関係ないレシピの作り方です。
 
上記のレシピに対して配置は関係ないレシピの作り方です。
  
 
<source lang="java">
 
<source lang="java">
GameRegistry.addShapelessRecipe(new ItemStack(Items.diamond),
+
GameRegistry.addShapelessRecipe(new ItemStack(Item.diamond,1),
      new ItemStack(Blocks.wool,1,5),
+
new Object[]{
      Items.feather,
+
new ItemStack(Block.dirt, 1), new ItemStack(Block.sand, 1)});
      Blocks.web
 
);
 
 
</source>
 
</source>
 
ここがレシピを指定している部分です。<br />
 
ここがレシピを指定している部分です。<br />
 
GameRegistry.addShapelessRecipeで不定形レシピを作ることを宣言しています。<br />
 
GameRegistry.addShapelessRecipeで不定形レシピを作ることを宣言しています。<br />
ここでは、羊毛(ダメージ値5)と羽と蜘蛛の巣でダイヤができるように書いてあります。
+
ここでは、土ブロック(Block.dirt, 1)と砂ブロック(Block.sand, 1)でダイヤ(Item.diamond,1)ができるように書いてあります。
  
  
185行目: 169行目:
 
追加アイテムがあればそれを作るレシピも作れます。詳しくは[[無機能のアイテムを追加する]]をご覧ください。<br />
 
追加アイテムがあればそれを作るレシピも作れます。詳しくは[[無機能のアイテムを追加する]]をご覧ください。<br />
  
==使用例==
+
==API例と解説==
 
;例)焼き石と木の棒から石ピッケルを作成
 
;例)焼き石と木の棒から石ピッケルを作成
 
<source lang="java">
 
<source lang="java">
GameRegistry.addRecipe(new ItemStack(Items.stone_pickaxe),
+
GameRegistry.addRecipe(new ItemStack(Item.pickaxeStone,1),
"XXX"," Y "," Y ",
+
new Object[]{"XXX"," Y "," Y ",
'X',Blocks.stone,
+
'X',Block.stone,
'Y',Items.stick
+
'Y',Item.stick});
);
 
 
</source>
 
</source>
 
:*一般的な定型レシピ
 
:*一般的な定型レシピ
199行目: 182行目:
 
;例)赤羊毛と黒羊毛から、茶色羊毛を2個作成
 
;例)赤羊毛と黒羊毛から、茶色羊毛を2個作成
 
<source lang="java">
 
<source lang="java">
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.cloth,2,12),
+
GameRegistry.addShapelessRecipe(new ItemStack(Block.cloth,2,12),
new ItemStack(Blocks.cloth,1,14), new ItemStack(Blocks.cloth,1,15)
+
new Object[]{
);
+
new ItemStack(Block.cloth,1,14), new ItemStack(Block.cloth,1,15)});
 
</source>
 
</source>
 
;例)木材1つと石炭(木炭)2個から、松明を8つ作成
 
;例)木材1つと石炭(木炭)2個から、松明を8つ作成
 
<source lang="java">
 
<source lang="java">
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.torchWood,8),
+
GameRegistry.addShapelessRecipe(new ItemStack(Block.torchWood,8),
new ItemStack(Items.coal,1,OreDictionary.WILDCARD_VALUE),  
+
new Object[]{
                                new ItemStack(Items.coal,1,OreDictionary.WILDCARD_VALUE),
+
new ItemStack(Item.coal,1,32767), new ItemStack(Item.coal,1,32767), new ItemStack(Block.planks,1,32767)});
                                new ItemStack(Blocks.planks,1,OreDictionary.WILDCARD_VALUE)
 
);
 
 
</source>
 
</source>
 
:*ダメージ値を指定したレシピを作る場合、ItemStackクラスを使用する。
 
:*ダメージ値を指定したレシピを作る場合、ItemStackクラスを使用する。
 
:**ItemStack(アイテム名,個数,ダメージ値) ダメージ値は省略可能(省略時は0)、個数は材料指定時には無効。
 
:**ItemStack(アイテム名,個数,ダメージ値) ダメージ値は省略可能(省略時は0)、個数は材料指定時には無効。
 
:***不定形レシピで同じアイテムを2個以上使いたい場合、個数1で2回指定する必要がある点に注意。
 
:***不定形レシピで同じアイテムを2個以上使いたい場合、個数1で2回指定する必要がある点に注意。
:**ダメージ値に関わらずレシピに使用する(例えば全ての木材で作成可能にする)には、ダメージ値に「OreDictionary.WILDCARD_VALUE」を指定する。
+
:**ダメージ値に関わらずレシピに使用する(例えば全ての木材で作成可能にする)には、ダメージ値に「32767」を指定する。
 
:*ダメージ値は、ブロックは0~15、アイテムは0-32000まで設定可能。
 
:*ダメージ値は、ブロックは0~15、アイテムは0-32000まで設定可能。
 
:**耐久力のあるアイテムの場合、ダメージ値は最大で耐久値までとなる。
 
:**耐久力のあるアイテムの場合、ダメージ値は最大で耐久値までとなる。
221行目: 202行目:
 
;例)木の棒のみで、壊れかけの(耐久値の減った)木ピッケルを作成
 
;例)木の棒のみで、壊れかけの(耐久値の減った)木ピッケルを作成
 
<source lang="java">
 
<source lang="java">
GameRegistry.addRecipe(new ItemStack(Items.pickaxeWood,1,32),
+
GameRegistry.addRecipe(new ItemStack(Item.pickaxeWood,1,32),
"YYY"," Y "," Y ",
+
new Object[]{"YYY"," Y "," Y ",
'Y',Items.stick);
+
'Y',Item.stick});
 
</source>
 
</source>
 
:*耐久値のあるアイテムは、ダメージを指定すると、その分耐久力が減少して作成される。
 
:*耐久値のあるアイテムは、ダメージを指定すると、その分耐久力が減少して作成される。
229行目: 210行目:
 
:**これを応用して、木材から「数回で壊れるハサミ」なども作成することができる
 
:**これを応用して、木材から「数回で壊れるハサミ」なども作成することができる
  
;例)耐久値の減ったダイヤモンドのくわとダイヤモンドから、新品のダイヤピッケルを作成
+
;例)耐久値の減った石ピッケルと丸石から、新品の石ピッケルを作成
 
<source lang="java">
 
<source lang="java">
GameRegistry.addRecipe(new ItemStack(Items.diamond_pickaxe),
+
GameRegistry.addShapelessRecipe(new ItemStack(Item.pickaxeStone,1),
      "HD",
+
new Object[]{
        'H',new ItemStack(Items.diamond_hoe,1, OreDictionary.WILDCARD_VALUE),
+
new ItemStack(Block.cobblestone,1), new ItemStack(Item.pickaxeStone,1,32767)});
        'D',Items.diamond
 
);
 
 
</source>
 
</source>
:*レシピに耐久値の減ったツール類を指定可能にする場合、ダメージをOreDictionary.WILDCARD_VALUEに設定する(値の中身はShortの最大値であり32767である)。
+
:*レシピに耐久値の減ったツール類を指定可能にする場合、ダメージを32767に設定する。
 
:**ダメージに1などを指定すると、1回だけ使ったツール、のように耐久値を指定することが可能(意味の有無は別として)。
 
:**ダメージに1などを指定すると、1回だけ使ったツール、のように耐久値を指定することが可能(意味の有無は別として)。
  
  
 
*このソースファイル内で定義しているアイテムやブロックを作成、使用する場合、ttrPickaxe のようにプリフィクス無しで記述する。
 
*このソースファイル内で定義しているアイテムやブロックを作成、使用する場合、ttrPickaxe のようにプリフィクス無しで記述する。
*既存のアイテムや他のファイルで定義されているアイテムやブロックを作成、使用する場合、Items.stick、Blocks.stone のように、定義しているファイル名(ItemsやBlocks)をプリフィクスとしてつける(クラスのスコープを正しく指定する)。
+
*既存のアイテムや他のファイルで定義されているアイテムやブロックを作成、使用する場合、Item.stick、Block.stone のように、定義しているファイル名(ItemやBlock)をプリフィクスとしてつける(クラスのスコープを正しく指定する)。
*その他、Block.getBlockFromName()などでブロックやアイテムを指定できる。(詳しい説明はここでは割愛させていただく)
 
  
 
==Tips==
 
==Tips==
253行目: 231行目:
 
     setContainerItem(Item.bucketEmpty); //戻ってくるアイテムを指定
 
     setContainerItem(Item.bucketEmpty); //戻ってくるアイテムを指定
 
</source>
 
</source>
*こちら側からsetContainerItemで変更することもできるが詳しい方法は割愛させていただく。
+
 
 
[[category:その他]]
 
[[category:その他]]

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: