石橋を叩いて壊すページ

ボスモンスタープラグインを更新した

1年ほど前に書いたボスモンスターを追加するプラグインを、いくつかバグを直して最新にしてみた。
さすがに前回のは、ダイヤ装備でも余裕で死ぬとんでもない難易度設定だったので、その辺も修正した。
今回も、クライアントMODは不要。


スティーブ、いまこそ我を倒してみせよ。

導入

導入方法は簡単。BossMonster.jarファイルをダウンロードして、Bukkitのpluginsフォルダに入れるだけ。
Bukkitの1.6.4-R2.0 Recommended Buildと、1.7.10-R0.1 Development Build(ビルド番号3105)で動作確認済み。

BossMonster.jar - 17KB

使用

導入後、OP権限付きプレイヤーがゲーム内でコマンド「/boss」を実行すると、コマンド実行者のいる場所にボスが現れる。

「/boss 10」のように、コマンドの後ろに数字をつけると難易度調整ができる。指定しない場合のデフォルトは1。
基本的にはボスの討伐に参加する人数(10人なら10)を指定して、あとは好みで増減。最低は1、最大は50。(50以上を指定すると50になる)

もし、ボスを出現させたあとにボスがどこにいるか分からなくなった場合は、もういちど「/boss」コマンドを実行するとコマンド実行者のいる場所にボスを強制移動できる。
ボスを消去したい場合は、OP権限付きプレイヤーが「/reload」コマンド(プラグインを再起動するBukkitのコマンド)を実行すると、プラグインが再起動され、ボスは消去される。

変更内容

上記したとおり、主な変更は難易度に関する調整。
鉄の剣と鉄の防具、そしていくつかの回復ポーションを用意し攻撃力増加ポーションを飲んだプレイヤーがLv1のボスをひとりで倒せる程度にしてみた。
ダイヤ装備の人には物足りないと思うので、その場合はボスのレベルを上げて挑戦してほしい。

ボスのエンチャントを下方修正。
ボスに予め付いている、攻撃力上昇Lv4・再生能力Lv4・耐性Lv3・火炎耐性Lv3の各エンチャントをすべてLv2に変更。
移動速度はLv3のまま変更なしなので、エンチャントなしのプレイヤーが走って逃げても障害物がない限り追いつかれるのは相変わらず。
さらに、レベル21以上では移動速度がLv4にアップ。


レベル50の強さは以前よりも凶悪に。ゾンビピッグマン384匹(スポーンエッグ6スタック分)とボスを閉鎖空間に入れて実験。
(ノーマルモードでボスの前に立ってボスの流れ弾でピッグマンが怒るのを待ち、戦闘開始後はクリエイティブモードに切り替えて観戦。)
結果、4分05秒でボスの圧倒的勝利。ていうかHPが半分も減ってない。

ボスのレベルに応じて、ボスが使うスキルが強力になるよう変更。
前回は、ボスのスキルは常に同じ動作だった。
今回は4つのスキルがすべてレベル依存の動作になるよう修正。
例えばマシンガンショットは、レベルが低いと0.1秒おきに矢を射ってくるが、レベル11以上では0.05秒おきと2倍の速度になる。
矢の本数もレベルに依存して増加するうえ、レベル20以上では一度に最大4本射出してくる。
ヒールポーションでは、レベル10以下では負傷のスプラッシュポーションLv1を、それ以上では同Lv2を使ってくる。
投げるポーションの数はレベルに依存して増加する。
なお、ヒールポーションはHPが半分以下の場合のみ使用するよう変更。





見よ、この圧倒的な矢の数を。(左がLv1スキル、右がLv50スキル。)

ボスのレベルに応じて報酬が変動するよう修正。
前回はボスを倒したとき、得られるアイテムや経験値はレベルに依存しなかった。
今回はレベルが高いほど高い報酬を得られるように変更。
ボスにエフェクトが付くよう変更。
ボスが矢を射ったりダメージを受けたときに、それらしい音が出るように変更。これにより臨場感がアップ。
また、ボスの周囲に炎のエフェクトが出て禍々しさもアップ。


再生速度50%のブレイズの吐息音と、スポーンブロックの炎を組み合わせ、クライアントMODなしでもこの禍々しさ。

/bossコマンドにボス呼び出し機能を追加。
上記のとおり、ボスが行方不明になった場合に、OP権限プレイヤーが/bossコマンドを実行すると、ボスがその場に移動するよう変更。
リスポーンするわけではなく、移動してくるので、残りHPやエフェクトは維持される。

改善内容

以前のバージョンで起こっていたいくつかの問題を修正した。

ボスがデスポーンしないよう修正。
前回のバージョンでは、出現したボスがいつの間にかいなくなっていることがあった。
どうやら、(主にプレイヤーが死んでリスポーンしたときなどに)ボスの周囲にプレイヤーがひとりもいない場合に、マインクラフトの仕様でモンスターがデスポーンしていたらしい。
ということで、デスポーンしないよう設定のうえ、ボスがいるチャンクもアンロードしないよう変更。
スキルで放たれた矢が、早めに消えるように修正。
前回は、ボスが射った矢が放置されていたので、矢が多くなるとグラフィックの描画に負荷が掛かっていた。
今回は発射後5~8秒ですべての矢が消去されるように変更したので、負荷が軽減されたはず。
(ちなみに、デフォルトでは射った矢が消えるのに60秒かかる。)
ボスの残りHPがHPバーの右側に表示していたのを左右反転。
前回はボスの残りHPを示す緑色のバーがHPバーの右側に出ていた (||||||||||形式)が、 FF14などで一般的な左側に出るように修正。 (||||||||||形式)
トルネードショット使用時、ボスが回転するよう変更。
前回は正面を向いたまま全方位に矢を射っていたので見た目が不自然だった。
今回は矢を射る方向を見てから射るようになった。(ただし、気休め程度。)
ソースコードを若干修正。
前回、文字に色をつけるのに装飾コードを直接指定していたが、プラグインのサンプル用としては不適切なのでChatColor定数指定へ変更。
アイテムIDを直接指定するItemStackのコンストラクタが非推奨になったので、Materialを使うコンストラクタに変更。

ソースコード

このプラグインは、8つのjavaソースファイルと、2つの設定ファイルからなっている。

  • BossMonster.java - このプラグインの本体。ボスの生成・HP表示・死亡時処理などを行う。
  • Skill.java - ボスが使う必殺技のベースとなるクラス。一定時間おきに必殺技のための処理を呼び出したりする。
  • MachinegunShot.java - 必殺技のひとつ、マシンガンショットの処理をする。
  • ShowerShot.java - 必殺技のひとつ、シャワーショットの処理をする。
  • ThrowPotion.java - 必殺技のひとつ、ヒールポーションの処理をする。
  • TornadoShot.java - 必殺技のひとつ、トルネードショットの処理をする。
  • BossEffect.java - ボスモンスターに存在を示す音と炎のエフェクトをつける処理をする。(ダメージ音や死亡音はBossMonster.javaで処理。)
  • RemoveEntities.java - 射った矢を数秒後に消す処理をする。
  • plugin.yml - Bukkitプラグインの実行に必要な設定ファイル。
  • pom.xml - Bukkitプラグインの開発に必要な設定ファイル。

もしEclipseをつかっているなら、BossMonsterというパッケージを作り、
そのなかに以下の構成になるよう上記すべてのファイルを配置してビルドすれば動くはず。
ソースコードはわかりやすいよう多めに日本語でコメントを打ってあるので参考になれば幸い。
組み込みや改造しての配布はご自由にどうぞ。
プラグイン自体の作成に関する知識はMinecraft Modding WikiのPlugin Tutorialのページで。


パッケージの構成

設定項目 設定値
グループID jp.jias.bukkit
アーティファクトID BossMonster
バージョン番号 1.7.9-R0.2
パッケージの名前 jp.jias.bukkit.bossmonster
メインクラスの名前 BossMonster

基本的な構成は前回から変えていないので、ソースコードに関する解説は以下のあたりをご参考にしていただきたい。
以下に書いていないこと(エフェクト関係)は後日書く。

2014/08/07追記:
V1.6.4 R2.0でも動くようになりました。
ソースは変えてませんがBossMonster.jarをビルドしなおしたので、新しいBossMonster.jarをダウンロードして試してみてください。

この記事を評価

この記事にコメント

  1. ...

【この記事にコメント】
お名前:
コメント:

Menu