【Bukkit1.8】腐豚を怒らせないようにするには

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

【Bukkit1.8】腐豚を怒らせないようにするには

投稿記事by ツケヒゲ » 2015年9月30日(水) 10:28

プレイヤーがアドベンチャーモードのときにMOBに攻撃できないようにしようと思います。
(まぁ、最終的にはこれを応用したプラグインを作ろうと思いますが)
そこでこのように書いてみました。

コード: 全て選択
@EventHandler(priority=EventPriority.LOWEST)
  public void onEntityDamageEvent(EntityDamageByEntityEvent event)
  {
    Entity entityDamager = event.getDamager();
    if (entityDamager instanceof Player)
    {
       Player player = (Player)event.getDamager();
       if (player.getGameMode().equals(GameMode.ADVENTURE))
       {
          event.setCancelled(true);
       }
    }
  }

しかし、殴ったイベントをキャンセルしてもゾンビピッグマンの場合怒り出すのです。
そこで、殴る直前まで怒っていなかったゾンビピッグマンだけを怒らせないようにできないでしょうか?
こんな感じに

コード: 全て選択
@EventHandler(priority=EventPriority.LOWEST)
  public void onEntityDamageEvent(EntityDamageByEntityEvent event)
  {
    Entity entityDamager = event.getDamager();
    if (entityDamager instanceof Player)
    {
       Player player = (Player)event.getDamager();
       if (player.getGameMode().equals(GameMode.ADVENTURE))
       {
          event.setCancelled(true);
           if (event.getEntity() instanceof PigZombie)
           {
              PigZombie pz = (PigZombie)event.getEntity();
              if (//もともと怒ってなかった場合)
              {
                 pz.setAngry(false);
                 pz.setAnger(0);
              }
           }
       }
    }
  }

miyabi@運営チーム[運営宛のメッセージ(PM)を作成] 投稿カテゴリ違いにつき、トピックを移動しました。
MOD,プラグイン,その他ツール 開発関連 → 質問:MOD開発/プラグイン制作関連
また、コードのインデントが消えるため、codeタグを挿入しました。
ツケヒゲ
ID:df7d5c49
 

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

x