元からいるMOBに追加アイテムをドロップさせる

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.12125)

元からいるMOBに追加アイテムをドロップさせる

投稿記事by kokuoutyou » 2011年11月09日(水) 21:18

えっとタイトルとおりなのですが
羊の肉を追加したいとおもい(MODloderつかって)
羊の肉自体は追加できたものの羊から追加アイテムを落とすことができません・・
mod_SheepMeat.java
コード: 全て選択
    package net.minecraft.src; //MCPのパッケージを読み込む

    public class mod_SheepMeat extends BaseMod { //クラス本体 BaseMod(ModLoaderのMOD製作API)を継承
           
           public String Version() { //MODのバージョン
              return "1.8.1";
           }

           public static Item sheepmeat;//Itemクラス型の変数を宣言します
           public static int itemID = 3000; //ItemIDを設定。既存IDとかぶらなければ何でも。

           public mod_SheepMeat() { //mod_Nameクラスのコンストラクタ。ここで大体の処理を行います

              sheepmeat = new ItemSheepMeat(itemID,5,64,false).setItemName("sheepmeat");
              //ItemTutorialクラスのオブジェクトttrItemを作る。
              sheepmeat.iconIndex = ModLoader.addOverride("/gui/items.png", "/Kmod_img/3000.png");
                 //テクスチャを設定(ファイルパスについては後述)
              ModLoader.AddName(sheepmeat, "Sheep Meat");//ゲーム内で表示する名前を設定
             

              //アイテムのレシピを設定(詳しいレシピの作り方は別のチュートリアルで)
           }   
        }



ItemSheepMeat.java
コード: 全て選択
    package net.minecraft.src;

    public class ItemSheepMeat extends ItemFood
    {
        public ItemSheepMeat(int i, int j ,int maxstack, boolean flag)
        {
            super(i, j, flag); //初期化
            maxStackSize = maxstack;
        }
    }

EntitySheep.javaの一部
コード: 全て選択
    protected int getDropItemId()
    {
       dropItem(Item.sheepmeat,rand.nextInt(3));
        return Block.cloth.blockID;
    }

エラーがitemが存在しないと出ます
実際テストレシピを使ってやってみたところ正常でした
ドロップする際はどうすればいいでしょうか?ご教授お願いします
[追記]
ソースに変更が出たため変更しました
最後に編集したユーザー kokuoutyou [ 2011年11月09日(水) 23:13 ], 累計 1 回
最近のニュース
・新しいPluginを追加しました詳細はPlugin紹介ページにて
・白鯖を公開しましたhttp://forum.minecraftuser.jp/viewtopic.php?f=18&t=3880
・Kuropを1.2.3に対応させました
・Serverのアップデートを行いました[1.1.0]
!!鯖に関しての質問は受け付けておりません!!
アバター
kokuoutyou
ID:427c217d
石掘り
 
記事: 146
登録日時: 2011年6月29日(水) 23:35
お住まい: 沖縄

  • (PostNo.12131)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by laco0416 » 2011年11月09日(水) 22:05

mod_SheepMeat.sheepmeatだと思います。
Item.~ で呼び出せるのは既存アイテムだけです。
MOD作ったりしてます。らこと呼んでください
http://forum.minecraftuser.jp/viewtopic.php?f=13&t=1047
アバター
laco0416
ID:f991a69e
石炭掘り
 
記事: 150
登録日時: 2011年9月17日(土) 19:58

  • (PostNo.12134)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by kokuoutyou » 2011年11月09日(水) 22:25

mod_SheepMeat.sheepmeatで試して見ましたができないようです・・・
最近のニュース
・新しいPluginを追加しました詳細はPlugin紹介ページにて
・白鯖を公開しましたhttp://forum.minecraftuser.jp/viewtopic.php?f=18&t=3880
・Kuropを1.2.3に対応させました
・Serverのアップデートを行いました[1.1.0]
!!鯖に関しての質問は受け付けておりません!!
アバター
kokuoutyou
ID:427c217d
石掘り
 
記事: 146
登録日時: 2011年6月29日(水) 23:35
お住まい: 沖縄

  • (PostNo.12137)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by uniunichan » 2011年11月09日(水) 22:54

kokuoutyou さんが書きました:mod_SheepMeat.sheepmeatで試して見ましたができないようです・・・


getDropItemId()はint型の値を参照しているので、アイテム名の後に.shiftedIndexをつける必要があります。
よって、mod_SheepMeat.sheepmeat.shiftedIndexと書く必要があります。

つまり、
コード: 全て選択
    protected int getDropItemId()
    {
       dropItem(mod_SheepMeat.sheepmeat.shiftedIndex,rand.nextInt(3));
        return Block.cloth.blockID;
    }

こうなります。

あと、ここからはオマケなのですが、牛のように肉が一箇所でなく散らばってドロップするようにするならば、
dropItem(mod_SheepMeat.sheepmeat.shiftedIndex,rand.nextInt(3)); の部分を
コード: 全て選択
int i = rand.nextInt(3);
        for(int j = 0; j < i; j++)
        {
                dropItem(mod_SheepMeat.sheepmeat.shiftedIndex, 1);
        }

このようにしてみるといいと思います。
うにうにちゃんです。
アバター
uniunichan
ID:255a64bb
鉄鉱掘り
 
記事: 343
登録日時: 2011年6月21日(火) 18:40
お住まい: グンマー

  • (PostNo.12139)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by kokuoutyou » 2011年11月09日(水) 23:12

やはり出て来ませんね・・・
最近のニュース
・新しいPluginを追加しました詳細はPlugin紹介ページにて
・白鯖を公開しましたhttp://forum.minecraftuser.jp/viewtopic.php?f=18&t=3880
・Kuropを1.2.3に対応させました
・Serverのアップデートを行いました[1.1.0]
!!鯖に関しての質問は受け付けておりません!!
アバター
kokuoutyou
ID:427c217d
石掘り
 
記事: 146
登録日時: 2011年6月29日(水) 23:35
お住まい: 沖縄

  • (PostNo.12173)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by kokuoutyou » 2011年11月10日(木) 12:43

リコンバイルなどは正常でした
プレイにも問題はなかったのですが
羊から羊肉を落とす設定にしても落としてくれないようです・・
最近のニュース
・新しいPluginを追加しました詳細はPlugin紹介ページにて
・白鯖を公開しましたhttp://forum.minecraftuser.jp/viewtopic.php?f=18&t=3880
・Kuropを1.2.3に対応させました
・Serverのアップデートを行いました[1.1.0]
!!鯖に関しての質問は受け付けておりません!!
アバター
kokuoutyou
ID:1521f813
石掘り
 
記事: 146
登録日時: 2011年6月29日(水) 23:35
お住まい: 沖縄

  • (PostNo.12701)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by ゲスト » 2011年11月15日(火) 22:28

protected void a(boolean flag) のメソッドに、
dropItem(mod_SheepMeat.sheepmeat.shiftedIndex,rand.nextInt(3));
を追加すればいいんじゃない?

<蛇足>
本来、a(boolean flag)の中で、getDropItemId()が呼ばれてるんだけど、
EntitySheep.java内でa(boolean flag)がオーバーライドされてるから
getDropItemId()が呼ばれずに出なかったみたいですね。
ゲスト
ID:5b1b2f29
 

  • (PostNo.12774)

Re: 元からいるMOBに追加アイテムをドロップさせる

投稿記事by kokuoutyou » 2011年11月16日(水) 19:14

ありがとうございます
コード: 全て選択
   
 protected void a(boolean flag)
    {
        if(!getSheared())
        {
           int i = rand.nextInt(3);
             for(int j = 0; j < i; j++)
              {
                   dropItem(mod_SheepMeat.sheepmeat.shiftedIndex, 1);
           }
            entityDropItem(new ItemStack(Block.cloth.blockID, 1, getFleeceColor()), 0.0F);
        }
    }

にしたところ正常に作動しました
ご協力ありがとうございました
最近のニュース
・新しいPluginを追加しました詳細はPlugin紹介ページにて
・白鯖を公開しましたhttp://forum.minecraftuser.jp/viewtopic.php?f=18&t=3880
・Kuropを1.2.3に対応させました
・Serverのアップデートを行いました[1.1.0]
!!鯖に関しての質問は受け付けておりません!!
アバター
kokuoutyou
ID:427c217d
石掘り
 
記事: 146
登録日時: 2011年6月29日(水) 23:35
お住まい: 沖縄


Return to 質問:開発・制作関連

x