MOD製作チュートリアル > MOBの追加

概要

MOBを追加する。
今回は、匠型のMOBを追加する。

ソースコード

  • AluminiumMod.java
+ 長いので囲みます

  • EntityAluminiumCreeper.java
+ 長いので囲みます

  • RenderAluminiumCreeper.java
+ 長いので囲みます

  • ModelAluminiumCreeper.java
+ 長いので囲みます

  • ItemAluminiumEgg.java
+ 長いので囲みます

解説

AluminiumMod

+ 長いので囲みます

EntityAluminiumCreeper

+ 長いので囲みます

RenderAluminiumCreeper

ResourceLocation(String p_i1293_1_)

Entityなどでテクスチャを指定する際につかうコンストラクター。
"aluminiummod:textures/mobs/aluminium_creeper.png"のように、ファイルと修飾子まで入れる必要がある。
また、テクスチャを実装する場合は、今回のものはモデルをクリーパーのものを流用したため、クリーパーのテクスチャをaluminiummod/mobs/に放り込んでaluminium_creeperと名前を付ければよい。

ItemAluminiumEgg

spawnEntityInWorld(Entity p_72838_1_)

Entityをワールドにスポーンさせるメソッド。
ただし、setLocationAndAnglesなどで先にスポーン位置を指定する必要がある。

Tips

クリーパーに因んでEntityを光らせる方法と爆発を発生させる方法を説明する。

Entityを光らせる

以下のコードを追加する。
@SideOnly(Side.CLIENT)
    public int getBrightnessForRender(float p_70070_1_) {
        return 15728880;
    }
 
    public float getBrightness(float p_70013_1_) {
        return 50.0F;
    }
 
getBrightnessForRenderが描画側、getBrightnessが計算側に明るさを渡す。数値はこれらが最大値である。

爆発を発生させる

爆発を発生させる方法は二種類ある。どちらもWorldクラスに属する。

createExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks)

引数は発生Entity(このEntityは爆発によるダメージ、処理から除外されることになる)、座標(double三つ)、威力(大体土ブロックでの爆発半径に等しい。威力15以上は何故か正方形状に削れてしまう上範囲がほぼ広がらないため別処理の実装が望ましい。匠CraftのEntityGiantCreeper参照。)、ブロックを破壊するか否か、となっている。

newExplosion(Entity entity, double x, double y, double z, float power, boolean destroyBlocks, boolean spreadFire)

最終引数以外上記と一緒。最終引数は炎を撒き散らすかどうか。ファイアボールのような処理にしか使わない。なお、上のcreateExplosionはこの関数にfalseを渡しているだけである。
また、この二つの関数はExplosion型を返すため、イベントの追加にある爆発のフック処理をこの爆発限定で行うことも出来る。

コメント

この項目に関する質問などをどうぞ。
  • EntityAluminiumCreeperの解説のEntityLivingBase.getEntityAttributeの下にあるmaxHealth|体力|20|がミスってますよ - 名無しさん 2016-02-02 19:49:20
    • ご指摘ありがとうございます。修正いたしました。 - Tom Kate 2016-02-02 20:28:33
  • AluminiumModの解説の(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates)のObject modをthisを使わないで処理しようと思ったら何を入れればいいですか? - west_village 2016-08-08 21:53:19
    • public static final AluminumMod instance = new AluminumMod();のように、インスタンスを作ってインスタンスを引数に渡してください。 - Tom Kate 2016-08-08 22:37:24
  • 匠Craftの光匠やグロウストーン匠のように、光るMOBを作る方法はありますか?(実際は光っていないのかもしれないのか…?) - あるふぁ 2017-05-30 19:48:05
  • 追記いたします。ご確認ください。 - Tom Kate 2017-06-01 19:39:57
    • たびたびすみません。プレイヤーなど既存のMOBを光らせる方法はありますか? - あるふぁ 2017-06-01 20:53:42
      • 返信遅くなりまして申し訳ありません。こちらのチュートリアルにTipsとして追記しました。 - Tom Kate 2017-06-07 19:27:42
      • 追記できておりません。Tom氏が多忙のようですので、もうしばらくお時間いただくことになりそうです。申し訳ありません。 - 赤砂蛇凪浜 2017-06-16 18:11:48
名前: