提供: Minecraft Modding Wiki
この記事は"ModLoader"を前提MODとしています。 |
ここでは、飲食物の作成方法を紹介します。
食べ物と飲み物の違いは、
アイテムが戻って来るor来ないと食べた(飲んだ)時の動作の違いだけですので不要な処理は削除してお使いください。
作成するソース
mod_Tutorial.java
ItemTutorialFoodOrDrink.java
ttritemDrink.png
ソースの解説[編集]
mod_Tutorialクラス作成[編集]
mod_***クラスを作成します
mod_Tutorialソース
package net.minecraft.src; public class mod_Tutorial extends BaseMod { public String getVersion() { return "1.0.0"; } public static Item TutorialFoodOrDrink; public void load() { /* !!食べ物と飲み物共通!! (5000, 3, 1F , false)の所の5000がアイテムID 3が回復量 1Fは満腹度が減るまでの時間の回復量 falseは犬に与えれるかです。 1Fの部分はそのまま回復量になるわけではなく、この数値*満腹度の回復量*2.0Fが実際の回復量になる。この例では3*1*2で6(焼き魚と同等)が実際の回復量。 */ TutorialFoodOrDrink = new ItemTutorialFoodOrDrink(5000, 3, 1F , false).setItemName("TutorialDrink"); TutorialFoodOrDrink.iconIndex = ModLoader.addOverride("/gui/items.png", "/ttr/ttritemDrink.png"); ModLoader.addName(TutorialFoodOrDrink, "TutorialFoodOrDrink Item"); /* レシピの作成。 */ /* !!食べ物を作成する時にだけ必要。飲み物を追加するなら削除してください。!! ここでは、土(dirt)をクラフトして土フード(TutorialFoodOrDrink)を作っています。 ここで注意するのは(Item.TutorialFoodOrDrink,4)にしないこと『Item.』はMinecraft 本体に元からあるItemのみです。自作ModのItemには付けられません。 */ ModLoader.addRecipe(new ItemStack(TutorialFoodOrDrink, 4), new Object[]{ "X", Character.valueOf('X'),Block.dirt }); /* !!飲み物を作成する時にだけ必要。食べ物を追加するなら削除してください。!! ここでは、空のボトル(glassBottle)と土(dirt)をクラフトして土ドリンク(TutorialFoodOrDrink)を作っています。 */ ModLoader.addRecipe(new ItemStack(TutorialFoodOrDrink, 1), new Object[]{ "X","Y", Character.valueOf('X'),Block.dirt, Character.valueOf('Y'), Item.glassBottle }); } }
ItemTutorialFoodOrDrinkクラス作成[編集]
ItemTutorialFoodOrDrinkクラスを作成します。 ItemFoodクラスを継承して作成します。
package net.minecraft.src; import java.util.Random; public class ItemTutorialFoodOrDrink extends ItemFood { /* !!食べ物と飲み物共通!! */ public ItemTutorialFoodOrDrink(int i, int j , float par3, boolean flag) { super(i, j, par3 ,flag); } /* !!食べ物と飲み物共通 しかし、消費した時にアイテムを戻さないなら削除してください。!! アイテムを消費した後の処理を書いています。 return par1ItemStack.stackSize <= 0 ? new ItemStack(Item.glassBottle) : par1ItemStack; の所の(Item.glassBottle)を違うアイテムに変更すれば戻ってくるアイテムも変わります。 詳しくはIDlistを見てください。 例 空のバケツにするなら(Item.bucketEmpty)に変更してください。 例2 多分使う人いないけど、(Item.diamond)と書き換えればダイヤモンドが戻ってきます。 */ public ItemStack onFoodEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { --par1ItemStack.stackSize; if (!par2World.isRemote) { par3EntityPlayer.clearActivePotions(); } return par1ItemStack.stackSize <= 0 ? new ItemStack(Item.glassBottle) : par1ItemStack; } /* !!飲み物を作成する時にだけ必要。食べ物を追加するなら削除してください。!! 右クリック長押しをした時の動作を指定しています。 ここを削除すれば食べ物を食べる時と同じ動作になります。 */ public EnumAction getItemUseAction(ItemStack par1ItemStack) { return EnumAction.drink; } }
誤字脱字や内容に誤りがありましたらコメントで教えてください。
- ItemTutorialFoodOrDrinkクラスでonFoodEatenメソッドをオーバーライドしているので、スーパークラスで処理されている「コンストラクタで設定した回復値分回復する」処理が呼び出されないからです。(1.4.6) --125.195.53.104 2012年12月25日 (火) 18:27 (JST)
- この党利に作ったアイテムを食べても回復しないんだが(1.4.2) --114.180.48.97 2012年11月11日 (日) 22:27 (JST)
- mod_Tutorialクラスの解説、load()の1行目、2行目の変数名がTutorialFoodOrDrinkではなくTutorialDrinkになっているようです --222.13.48.136 2012年9月25日 (火) 22:58 (JST)
- ModLoader.addRecipe(new ItemStack(TutorialFoodOrDrink, 4), に修正した方がよろしいかと。Mod制作では割とこのミス気づかないんですよね --182.163.42.98 2012年7月4日 (水) 19:51 (JST)
- ModLoader.addRecipe(new ItemStack(Item.TutorialFoodOrDrink, 4), では正しく動作しないので。 --182.163.42.98 2012年7月4日 (水) 19:49 (JST)
コメントの自動更新を有効化