クラスの書き換えについて

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

クラスの書き換えについて

投稿記事by 1.7.10modder » 2018年5月06日(日) 06:15

1.7.10,forge10.13.4.1558でmoddingをしています。
クラスの書き換えを使って、自作の羊肉を羊からドロップさせたいのですが、
チュートリアルを読んでも、いまいちよくわかりません。

どなたか、一からわかりやすく教えてください。
お願いします。
1.7.10modder
ID:da05adc8
 

  • (PostNo.316440)

Re: クラスの書き換えについて

投稿記事by alice » 2018年5月06日(日) 23:50

1.7.10でドロップを追加するのであれば、LivingDropsEventの実装を行えばクラスの書き換えをしなくても実現出来ると思います。
コード: 全て選択
public class SheepEvent
{
  // モブが倒されてアイテムをドロップする直前に呼ばれるイベント
  @SubscribeEvent
  public void onLivingDrop(LivingDropsEvent eventDrop)
  {
    // 倒れたのは羊かどうか?
    if(eventDrop.entityLiving instanceof EntitySheep)
    {
      // ドロップアイテムを拾ったとき、プレーヤーのインベントリに加わるItemStackを作成する
      ItemStack item = new ItemStack(自作の羊肉のItemインスタンス, メタデータ, 個数);
      // 上記のItemStackからドロップアイテムを生成する
      // 座標は倒れたモブの位置にする
      EntityItem entityItem = new EntityItem(eventDrop.entityLiving.worldObj, eventDrop.entityLiving.posX, eventDrop.entityLiving.posY, eventDrop.entityLiving.posZ, item);
      // ドロップ一覧に追加
      eventDrop.drops.add(entityItem);
    }
  }
}

このようなクラスを作成後、FMLInitializationEventでMinecraftForge.EVENT_BUS.register(new SheepEvent());とすれば目的の動作は実現するはずです。

最後に、クラスの書き換えは他に方法が無い最終手段としておいたほうがよろしいかと。
スチマーとツイッタラーと化してる。
@a1lic,a1lic.net,MOD公開場所,GitHub
アバター
alice
ID:eba49ea0
金掘り
 
記事: 448
登録日時: 2011年10月23日(日) 20:10
お住まい: 舞天市

  • (PostNo.316535)

Re: クラスの書き換えについて

投稿記事by 1.7.10modder » 2018年5月12日(土) 05:04

ありがとうございます。
では、既存のレシピを削除するのも、クラスの書き換えを使わずにできますか?
お願いします。
1.7.10modder
ID:da05adc8
 

  • (PostNo.316547)

Re: クラスの書き換えについて

投稿記事by defeatedcrow » 2018年5月12日(土) 17:40

1.7.10modder さんが書きました:ありがとうございます。
では、既存のレシピを削除するのも、クラスの書き換えを使わずにできますか?
お願いします。


基本的に、書き換えは難易度が高いので上級者向きです
(既存チュートリアルの読解に不自由している状態では論外です)

レシピ削除は、バニラのCraftingManagerにある全クラフトレシピの一覧リストを
CraftingManager.getInstance().getRecipeList()
で取得できるので、このリストから目的のレシピ(IRecipeインターフェイスの形で入っています)を取得し、リストから削除してやれば削除できます
(Listの取り扱いについてはModding以前の予備知識の範疇なので除外)

1.7の場合、最新版と違ってバニラのレシピかForgeのOreRecipe(鉱石辞書レシピ)かどうかでinputの型が違うので、材料を調べたい場合は難易度が若干上がります
削除はせず、鉱石辞書レシピに変換して自動追加する機能であれば過去に作ったことがあるのでソースを置いときます
https://github.com/defeatedcrow/FluidityFoodstuffs_1.7.10/blob/master/java/defeatedcrow/addonforamt/fluidity/recipe/CustomizeVanillaRecipe.java
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:0790d4e9
ラピスラズリ収集家
 
記事: 1038
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.316590)

Re: クラスの書き換えについて

投稿記事by 1.7.10modder » 2018年5月13日(日) 20:03

本当にありがとうございます。
やってみます。
1.7.10modder
ID:da05adc8
 


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

x