提供: Minecraft Modding Wiki
ModderKina (トーク | 投稿記録) (できた。後は随時訂正で。) |
(→解説) |
||
(3人の利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
+ | {{チュートリアル難易度|difficulty=0}} | ||
+ | ここでは、精錬レシピ、および新しい燃料を追加するMODを作成する。 | ||
=精錬レシピの追加= | =精錬レシピの追加= | ||
− | + | ==ソース== | |
− | == | + | ===TutorialSmelt.java=== |
− | |||
<source lang="java"> | <source lang="java"> | ||
package mods.recipesample; | package mods.recipesample; | ||
30行目: | 31行目: | ||
public int getBurnTime(ItemStack fuel){ | public int getBurnTime(ItemStack fuel){ | ||
if(fuel.getItem().equals(Items.apple)){ | if(fuel.getItem().equals(Items.apple)){ | ||
− | return | + | return 200; |
} | } | ||
return 0; | return 0; | ||
43行目: | 44行目: | ||
} | } | ||
</source> | </source> | ||
− | + | ==解説== | |
− | ==精錬レシピを作る== | + | ''編集中'' |
+ | ===精錬レシピを作る=== | ||
<source lang="java"> | <source lang="java"> | ||
GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f); | GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f); | ||
</source> | </source> | ||
*GameRegistry.addSmeltingで、精錬レシピを追加する。 | *GameRegistry.addSmeltingで、精錬レシピを追加する。 | ||
− | * | + | *第一引数には、精錬する素材を、BlockかItemかItemStackで指定する。 |
+ | **鉄ブロックを精錬する素材として要求する場合は、 Blocks.iron_block とする。 | ||
+ | **サドルを精錬する素材として要求する場合は、 Items.saddle とする。 | ||
+ | **ラピスラズリを精錬する素材として要求する場合は、 new ItemStack(Items.dye, 1, 4) とする。 | ||
*第二引数には、完成後のアイテムを、ItemStackで指定する。 | *第二引数には、完成後のアイテムを、ItemStackで指定する。 | ||
− | **書き方は、 new | + | **書き方は、 new ItemStack(Itemまたはブロック, 作成数, ダメージ値) |
− | ** | + | **第二引数以降は特に指定しなくても良い。 |
*サンプルは、人参を焼くと石炭を1つ出すように指定されています。 | *サンプルは、人参を焼くと石炭を1つ出すように指定されています。 | ||
*第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。 | *第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。 | ||
64行目: | 69行目: | ||
**1.0F ダイヤモンド鉱石、エメラルド鉱石、金鉱石 | **1.0F ダイヤモンド鉱石、エメラルド鉱石、金鉱石 | ||
− | =新しい燃料を追加する= | + | ===新しい燃料を追加する=== |
<source lang="java"> | <source lang="java"> | ||
GameRegistry.registerFuelHandler(new IFuelHandler(){ | GameRegistry.registerFuelHandler(new IFuelHandler(){ |
2016年12月11日 (日) 20:15時点における最新版
ここでは、精錬レシピ、および新しい燃料を追加するMODを作成する。
精錬レシピの追加[編集]
ソース[編集]
TutorialSmelt.java[編集]
package mods.recipesample; import cpw.mods.fml.common.IFuelHandler; import cpw.mods.fml.common.Mod; 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.Items; import net.minecraft.item.ItemStack; @Mod(modid = "ttr_smelt") public class TutorialSmelt{ @Mod.EventHandler public void preInit(FMLPreInitializationEvent event){ } @Mod.EventHandler public void init(FMLInitializationEvent event){ 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 200; } return 0; } }); } @Mod.EventHandler public void postInit(FMLPostInitializationEvent event){ } }
解説[編集]
編集中
精錬レシピを作る[編集]
GameRegistry.addSmelting(Items.carrot,new ItemStack(Items.coal),0.1f);
- GameRegistry.addSmeltingで、精錬レシピを追加する。
- 第一引数には、精錬する素材を、BlockかItemかItemStackで指定する。
- 鉄ブロックを精錬する素材として要求する場合は、 Blocks.iron_block とする。
- サドルを精錬する素材として要求する場合は、 Items.saddle とする。
- ラピスラズリを精錬する素材として要求する場合は、 new ItemStack(Items.dye, 1, 4) とする。
- 第二引数には、完成後のアイテムを、ItemStackで指定する。
- 書き方は、 new ItemStack(Itemまたはブロック, 作成数, ダメージ値)
- 第二引数以降は特に指定しなくても良い。
- サンプルは、人参を焼くと石炭を1つ出すように指定されています。
- 第三変数もしくは第四変数に経験値オーブの出る確率をfloatで指定します。
- バニラの設定値は以下のようになっています。
- 0.1F 砂、丸石、石炭鉱石
- 0.15F 原木
- 0.2F サボテン、ラピス鉱石
- 0.3F 粘土
- 0.35F 牛肉、豚肉、鶏肉、生魚、ジャガイモ
- 0.7F 鉄鉱石、レッドストーン鉱石
- 1.0F ダイヤモンド鉱石、エメラルド鉱石、金鉱石
新しい燃料を追加する[編集]
GameRegistry.registerFuelHandler(new IFuelHandler(){ @Override public int getBurnTime(ItemStack fuel){ if(fuel.getItem().equals(Items.apple)){ return 200; } return 0; } });
- registerFuelHandlerメソッドは、引数に実装したIFuelHandlerを渡すことで利用できる。
- IFuelHandlerのメソッドの引数であるItemStack:fuel には、燃料スロットに入れられたアイテムの種類とメタデータが格納されたItemStackが入る。
- これらを判定し、燃焼効率を返す。
- 200 でアイテム1個分の効率。
- 例えば木の棒や苗木は100(0.5個分)、石炭木炭は1600(8個分)となる。
- 上の例ではりんごで200(1個分)の燃焼効率を返している。