純規の暇人趣味ブログ

手を突っ込んで足を洗う

[Bukkit]従量課金制/flyプラグイン「EbiFly」を作った

      2016/08/20    HimaJyun

Minecraftのマルチプレイ、サーバによっては/flyコマンドでサバイバルモードであれど空を飛べる様になっている所があります。

僕のサーバではサーバ内通貨「アミト」を消費する事で飛行できる仕組みになっているのですが、今日はこのためのプラグイン「EbiFly」を公開しようと思います。(特段隠す必要がある物でもないですからね。

EbiFly

EbiFly、エビフライ、ええ、好きです、美味しいですよね、エビフライ。

まぁ……フライか天ぷらかって聞かれたら……僕は天ぷらを選びますけどね。

と、好みの問題どうこうは別として、通称(?)「空飛ぶ揚げ物」とか言ってみたり。

特徴

EbiFlyは比較的シンプルなプラグインで、使い方は主に「/fly」のみです。

最大の特徴は「飛行に料金を設定できる」事です。

Vaultを導入する事で「1分辺りいくら」で料金を徴収する事が出来ます。

僕のサーバ内では「/fly」は例え有料であっても非常によく使われているため、インフレ防止にも高い効果を誇っています。

無制限に使われてしまうとサバイバルとしての面白さを奪ってしまう/flyですが、この様にする事でバランスを保ちつつ遊びの幅を広げる事が出来ます。(とか、もっともらしい事を言ってみたりする)

使い方

例によってソースコードはGitHubにほっぽり出してる次第です。

  1. EbiFlyをGitHubよりダウンロードする(EbiFly-x.x.jarがそれ)
  2. サーバのpluginsに入れて一度起動して下さい。
  3. 設定変更を行った後に再起動(今回は都合によりリロードコマンドはありません)

今回は都合によりreloadコマンドはないの、良いねっ?!

Bukkitの「/reload」を使うと他のプラグインを豪快に巻き込んでリロードするので再起動した方が良いでしょう。

config.yml

(1つでも差支えは無いのですが)設定ファイルは2つに分かれています。

さらっと重要な事を書くとすれば、バージョン問わずそれはUTF-8で保存される必要がある事でしょう。

config.ymlは以下の様になっています。

# デフォルト(引数省略)時の飛行時間(分単位、0で無限)
FlightTime: 10

# 終了通知を行う時間(秒単位)
Notice:
  Enable: true
  Time: 30

# Vault( http://dev.bukkit.org/bukkit-plugins/vault/ )が必要です。
Economy:
  Enable: false
# 自らコマンドで/flyを無効化した場合に残り時間分のお金を返金するか
  Refund: true
# 1分辺りの金額
  Cost: 100
  Tax:
#   集めたお金を特定のアカウントに送金するか
    Enable: false
#   送金先のアカウントは予め作成しておいてください
    Remittee: "Admin"

message.yml

メッセージもお手軽に変更できますよ、親切な設計ですね?

よしなに日本語化されたmessage.ymlをここに書いておきましょう、状況に合わせて文言やら言い回しを変更すればよろし。

DontHavePermission: "&cあなたには権限がないの……"
InvalidValue: "&c変な値が指定さてれる……"

Fly:
  Disable: "&c飛行モードが無効になりました"
  # マクロ:[%time%]=飛行時間
  Enable: "&a飛行モードが有効になりました!! ([%time%]分)"
  Infinity: "無限"
  # マクロ:[%time%]=残り時間
  Left: "&c残り[%time%]秒で飛行モードが無効になります、着地して下さい。"

Not:
  Found: "&cプレイヤーが見つかりません"
  # マクロ:[%player%]=プレイヤー名
  Online: "&c[%player%]はオフラインです。"
  Survival: "&c[%player%]はサバイバルモードではありません。"

Economy:
  NotEnough: "&cお金が足りません。"
  # マクロ:[%price%]=料金
  Payment: "&a飛行モードを利用するために[%price%]を支払いました"
  # マクロ:[%minutes%],[%second%]=残り時間
  Refund: "&a[%minutes%]分[%second%]秒の飛行時間が残っていたため、[%price%]を返金致しました。"

コマンド/パーミッション

コマンドは「/fly」です。ですです。ですわ。

コマンド パーミッション 説明 デフォルト
/fly [時間] ebifly.fly 飛行モードを切り替えます、時間が指定された場合は指定時間飛行 全員
/fly <時間> <ユーザ> ebifly.other 指定したユーザの飛行モードを切り替えます、お金は自分が支払います。 OP
N/A ebifly.worldchange 飛行状態を維持したまま別世界への移動を許可します 全員
N/A ebifly.infinity 無限時間飛行(0指定)を許可します。 OP
N/A ebifly.free 飛行が無料になります。 OP
N/A ebifly.op ebifly.free、ebifly.infinity、ebifly.otherをまとめたもの N/A
N/A ebifly.* 上記全てをまとめたもの N/A

基本的に「/fly」でぴょんぴょ~んっと飛び回るのがデフォかと思います。

ソースコード

先にも書いてある通り、GitHubにあります。

ライセンスはMiTです。(GPLは人に理解させる事を放棄しているので)

どうぞ勝手に改造なりなになりご自由に……

 - サーバ運営 ,