ガイド
Minecraftのエコノミープラグインの作り方
2026年10月18日に更新
エコノミープラグインは、プレイヤーごとの残高を管理し、プレイヤー同士の支払い、お金の獲得、ショップでの使用を可能にします。大事なのはコマンドではなくVaultとの連携です。これがあるからこそ、ショップ、ジョブ、オークションのプラグインがあなたのお金を使えます。このガイドでは、設計、保存方法、ビルドとテストの方法を解説します。
この例から始めて、ルールを自分のものに変えてください。
Codexeでこれを生成手順
1.プラグインの役割を決める
プラグイン自体がエコノミーになる(残高を保存し、Vaultのエコノミーとして自分を登録する)か、Vaultを通じて既存のエコノミーを使う(ショップ、賞金首、ジョブのプラグインなど)かのどちらかです。ほとんどのサーバーに必要なのは、それぞれ1つずつで、エコノミーを2つ入れることではありません。
2.サーバーとバージョンを決める
サーバーソフトウェアとバージョンを書きます。例: Paper 1.21.4。プラグインはそのバージョンのAPIとJavaのレベルに合わせてビルドされます。
3.コマンドとルールを書き出す
/balance、/pay <player> <amount>、/baltop、そして/eco give|take|setなどの管理者コマンド。初期残高、通貨名、小数点以下の桁数、最低支払額も加えます。4.残高の保存先を選ぶ
サーバーが1台ならSQLite、複数のサーバーで同じ残高を共有するならMySQLです。お金は再起動やクラッシュでも消えてはいけないので、メモリだけに保持することはありません。
5.Codexeに書いてビルドさせる
プラグインの内容を説明し、依存関係として追加されるようにVaultの名前をはっきり書きます。CodexeがJavaのコード、
plugin.yml、config.ymlを書き、コンパイルして、プロジェクトが準備完了になる前にビルドエラーを修正します。6.ゲーム内で支払いをテストする
「今すぐ試す」を押してテストサーバーに参加します。2つのアカウント間で支払い、大きすぎる額、マイナスの額、数字でない値を試したら、再起動して残高が残っているか確認します。
7.インストールする
Vaultとあなたの.jarをサーバーの
plugins/フォルダに入れて再起動します。ほかのエコノミープラグインは外すか、Vaultがどれを使うかを決めておきます。
Vaultの役割
Vaultはエコノミーではなく、橋渡し役です。エコノミープラグインはVaultのEconomyインターフェースを実装し、サーバーのサービスマネージャーに登録します。ほかのプラグインはgetServer().getServicesManager().getRegistration(Economy.class)でそれを取得し、getBalance、withdrawPlayer、depositPlayerなどのメソッドを呼び出します。
そのため、ショップのプラグインは、どのエコノミーが動いているかを知る必要がありません。plugin.ymlでは、Vaultなしでは動かないプラグインならdepend: [Vault]、Vaultが任意ならsoftdependを使います。Vault APIはコンパイルにだけ必要で、Vault本体はサーバーにインストールします。
リクエストに書いておくべきこと
- お金の表示形式: 通貨名の単数形と複数形、記号、小数点以下の桁数。
- 上限: 初期残高、最大残高、残高がマイナスになってもよいか。
- オフラインのプレイヤー: オンラインでないプレイヤーにも
/payと/ecoが使えるか。 - ログ: データベースやファイルへの取引ログ。スタッフがトラブルを確認できるようにします。
- お金の稼ぎ方: モブを倒す、プレイ時間の報酬、アイテムの売却、または管理者コマンドのみ。
残高の保存先
| 保存方法 | 向いている用途 | 注意点 |
|---|---|---|
| YAMLファイル | ごく小規模なサーバー、読みやすい | プレイヤーが多いと遅く、クラッシュで壊れやすい |
| SQLite | サーバー1台、設定不要 | サーバー間で共有できない |
| MySQL / MariaDB | 1つの残高を共有するネットワーク | データベースサーバーと、config.ymlへのログイン情報が必要 |
説明の例
「Vaultのエコノミーとして自分を登録する、Coinsという名前のPaper 1.21.4エコノミープラグイン。/balance [player]、最低1の/pay <player> <amount>、上位10人の/baltop、coins.adminを持つプレイヤー向けの/eco give|take|set。新規プレイヤーは100コインからスタート。小数点以下2桁。すべての支払いを日付、送り手、受け手、金額とともに記録。残高はSQLiteに保存。通貨名とすべてのメッセージはconfig.ymlに置く。」
ほかに指定がなければ、CodexeはデフォルトでSQLiteを使います。MySQLを指定すると、プラグインはstorage-type設定付きで書かれ、試している間はテストサーバーが専用のMySQLデータベースを用意します。
よくある質問
Vaultは必要ですか?
ほかに何も使わない単独のエコノミーなら不要です。ほかのプラグイン(ショップ、ジョブ、オークション)が残高を読み取ったり変更したりする必要が出た時点で必要になります。それらのプラグインが探すのがこのAPIだからです。
EssentialsXと一緒に動かせますか?
EssentialsXは独自のエコノミーを持ち、それもVaultに登録します。エコノミーは一度に1つだけ動かすか、不要なほうを無効にしてください。そうしないと、ほかのプラグインが、あなたのコマンドで表示されるものとは別の残高を使うことがあります。
複数のサーバーで同じ残高を共有できますか?
はい。保存先にMySQLまたはMariaDBを使い、すべてのサーバーのconfig.ymlに同じデータベースを指定します。プラグインが残高を長くキャッシュしすぎず、データベースから読み込むように、リクエストで指定してください。
本物のサーバーなしでテストするには?
「今すぐ試す」を使います。コンパイル済みのプラグインを入れた、あなたのバージョンの専用Paperサーバーが起動し、Vaultなどdependとsoftdependに書かれたプラグインもインストールされます。Freeプランでは、1日3回、1回10分までテストサーバーを使えます。
サーバーのエコノミーを作る
このプロンプトは、そのまま送信できる状態で開きます:
“Vaultのエコノミーとして登録される、Coinsという名前のPaper 1.21.4エコノミープラグイン: /balance、最低1の/pay、上位10人の/baltop、coins.admin向けの/eco give|take|set、初期残高100、小数点以下2桁、すべての支払いを記録、残高はSQLite、通貨名とメッセージはconfig.yml。”
Codexeでこれを生成