Cosnomi
Cosnomi

医療×IT / 医学生 / Web(React, Flask) / 機械学習(画像認識, Keras)

Twitter / GitHub / Keybase

マイクラで制作したのプラグイン紹介

Mar. 27, 2018ITMinecraft

まえがき

SavaServer という 24 時間マインクラフトサーバー(追記: 現在は閉鎖中)のために使うプラグインを3つ開発してるので、今回はその紹介をしていきたいと思います。

  1. SavaWebPlugin・・・SavaWeb(公式サイト)との連携
  2. SavaPvP・・・PvP のためのログ記録やルーム、チーム管理
  3. SavaEstate・・・区画整理、土地購入のためのプラグイン

では、1 つずつ見ていきましょう

SavaWebPlugin

このプラグインはSavaWeb と連携して様々な小さい機能を提供します。独立した 1 つのプラグインにするほどではないが、SavaWeb との連携が必要なものを集めています。例えば、

  • 認証: マインクラフトサーバーにアクセスしてきたユーザーが既に SavaWeb で登録済みかを確認します
  • ペナルティ: ユーザーが BAN などのペナルティを受けていた場合、アクセスを拒否します
  • トークン生成: ユーザー登録のために必要な認証トークンを作成し、DB に保存することで、SavaWeb からも利用可能な形にします。
  • 活動量計算: SavaServer 内の様々な活動で得られる活動量を計算し更新します。

ちなみに、これが自作プラグイン第一号です。

SavaPvP

これは第二号になります。

PvP の銃は Flan’s Mod という本格的な銃 Mod を導入しています。これにはチーム分けのためのアイテムなども含まれているのですが、SavaWeb と連携するという SavaServer のコンセプトを実現するのは難しくなります。

そこで、ゲームルームやチーム分け、勝敗判定やゲームログ記録などの機能をプラグインで行うことにしました。これによって、ゲームログ(キルログや K/D などの統計情報も)を SavaWeb で閲覧できるようになります。また、メインワールドのどこにいてもコマンドを叩くだけで PvP ができるようになりました。

今後、人が増えたらゲームタイプなども増やしたいと思っていますが、どうなんでしょうね…

SavaEstate

自作プラグイン第三号。土地管理などのプラグインです。

SavaServer では道路などの公共施設をスタッフが整備し、そこに区画を割り当て、他のプレイヤーはそれを購入し、そこに建築するシステムをとっています。 このシステムのメリットとしては、

  • 道路が事前に整備されているので、街並みが綺麗になる
  • どこに建物を建てていいのか、気にする必要がない。気軽に建築できる。
  • 土地関係のトラブルが減る
  • WorldGuard が自動設定されるので、荒らし対策にも
  • 購入した土地ではWorldEditが使える

WorldGuard の API はなかなか複雑で難しかったです。(機能が豊富だから仕方ないですね)

まとめ

Mod に比べて Bukkit プラグインは操作できる範囲が狭いですが、その分、難易度が格段に低いです。私もJavaを遊びで触ったのは2~3年前が最後だった気がするのですが、それでもドキュメントを参照しながら作ることができました。

もちろん、すでに公開されているプラグインに欲しい機能があればそれを使ったほうが賢いのですが、ない場合は自作してみるというのも十分選択肢になりうると思うのです。


コメントフォームは設置していませんので、ご意見・ご感想などはTwitter(@cosnomi)などへお願いします。