【解決済み】[1.7.10]ブロックを破壊した際に、NBTタグ付きのアイテムをドロップさせる方法について

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

【解決済み】[1.7.10]ブロックを破壊した際に、NBTタグ付きのアイテムをドロップさせる方法について

投稿記事by アカリ » 2017年8月06日(日) 23:07

こんにちわ。また質問をさせてください。
件名にある通り、ブロックを破壊した際に、そのブロックの情報(例えば、設置されていた場所)を書き込んだアイテムをドロップさせたいです。
EnderIOの機械ブロックのように、一度壊すと個別の情報が加えられる。ようなのを作りたいと持っています。
私が書いたコードでは、どうしてもただのアイテムしかドロップしませんでした。
おそらく、NBTタグが付いているItemStackではなく、ただのItemをドロップしているせいなのでしょうが、ItemStackをドロップさせる方法が分からない状態です。
どのような修正を加えれば良いでしょうか?よろしくお願いします。
バージョン:forge-1.7.10-10.13.4.1558

コード: 全て選択
//BlockContainer を継承したクラス内
@Override
    public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int p_149749_6_) {
       if (!world.isRemote) {
          ItemStack items = new ItemStack(this, 1);
          NBTTagCompound nbt = new NBTTagCompound();
          nbt.setString("position", x + "," + y + "," + z);
          items.setTagCompound(nbt);
          EntityItem eItem = new EntityItem(world, x, y, z, items);
          eItem.dropItem(items.getItem(), 1);
       }
    }
最後に編集したユーザー アカリ [ 2017年8月07日(月) 19:58 ], 累計 1 回
アカリ
ID:6c96e367
水から上がったとこ
 
記事: 5
登録日時: 2017年7月20日(木) 20:43

  • (PostNo.305959)

Re: [1.7.10]ブロックを破壊した際に、NBTタグ付きのアイテムをドロップさせる方法について

投稿記事by アカリ » 2017年8月07日(月) 19:56

自己解決できました。

eItem.dropItem(items.getItem(), 1);
で、アイテムを出すのではなく、
world.spawnEntityInWorld(eItem);
で、アイテムをスポーンさせる、という方法により同じような動作をさせることができました。
アカリ
ID:6c96e367
水から上がったとこ
 
記事: 5
登録日時: 2017年7月20日(木) 20:43


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

x