BungeePteroPowerは、サーバーの人数に応じてサーバーを自動的に起動/終了することができるプラグインです。
プレイヤーがBungeecordプロキシサーバーに参加または退出したときに、Pterodactylパネル上のサーバーを起動および停止することができます。
そのため、サーバーのリソースを節約し、サーバーをより効率的に管理するのに役立ちます。
BungeePteroPower.mp4
- サーバーに一定時間プレイヤーがいない状態になった場合、PterodactylのAPIを使用して自動的にサーバーを停止します。
- 停止までの時間は、サーバーごとに設定可能です。
- サーバーにプレイヤーが参加した場合に、PterodactylのAPIを使用して自動的にサーバーを起動します。
- 権限設定により、手動起動可能なプレイヤー、及び、入ると自動的に起動が行われるプレイヤーを設定できます。
- サーバー終了時、バックアップからサーバーをリセットすることができます。
- 一度プレイしたらリセットされるミニゲームサーバーなどを作成したい場合に便利です。
- Spigot または GitHub Releases からダウンロードできます。
- Java 11 以上
- PterodactylとのREST API通信に、Java11の
java.net.http.HttpClient
を使用しています。
- PterodactylとのREST API通信に、Java11の
- PterodactylパネルでAPIキーを取得します。
- PterodactylのクライアントAPIキーは、アカウントページの「API Credentials」タブから確認できます。
- プラグインをBungeeCordサーバーに追加し、起動します。
- 生成された
plugins/BungeePteroPower/config.yml
ファイルで 設定が必要な項目 を設定します。# Pterodactyl 設定 pterodactyl: # Pterodactyl パネルの URL # Cloudflare Tunnel を使用する場合は、バイパス設定で IP を許可する必要があります。 url: "https://panel.example.com" # Pterodactyl パネルのクライアント API キー。"ptlc_" で始まります。 # クライアント API キーは、「アカウント」ページの「API 資格情報」タブで見つけることができます。 apiKey: "ptlc_000000000000000000000000000000000000000000" # サーバーごとの設定 servers: pvp: # Pterodactyl サーバー ID # Pterodactyl サーバーページの URL で Pterodactyl サーバー ID を見つけることができます。 # たとえば、URL が https://panel.example.com/server/1234abcd の場合、サーバー ID は 1234abcd です。 id: 1234abcd # 最後のプレイヤーが退出した後、サーバーを停止するまでの秒数。 # 自動的にサーバーを停止したくない場合は、-1 に設定します。 # 0 に設定すると、最後のプレイヤーが退出した直後にサーバーが停止します。 timeout: 30
/ptero reload
コマンドで設定をリロードします。- 権限設定 を構成します。
(このプラグインを使用するためには権限を設定する必要があります。そうしないと、プレイヤーは何もできません!)
次のいずれかの方法を使用できます。- LuckPerms のような権限プラグインを使用します。
- LuckPermsの場合、以下のコマンドで権限を設定します。
※
# プレイヤーはすべてのサーバーを起動できます /lp user <プレイヤー名> permission set ptero.autostart.* # プレイヤーは特定のサーバーを起動できます /lp user <プレイヤー名> permission set ptero.autostart.<サーバー名> # すべてのプレイヤーはすべてのサーバーを起動できます /lp group default permission set ptero.autostart.*
<プレイヤー名>
はプレイヤーの名前、<サーバー名>
は BungeeCord のconfig.yml
で指定されたサーバー名を指します。
- LuckPermsの場合、以下のコマンドで権限を設定します。
- ビルトインの権限設定を使用します。
config.yml
を開きます。- 以下の設定を
config.yml
ファイルに追加します。※permissions: default: # プレイヤーはすべてのサーバーを起動できます - ptero.autostart.* # プレイヤーは特定のサーバーを起動できます - ptero.autostart.<server_name>
<server_name>
は BungeeCord のconfig.yml
で指定されたサーバー名を指します。 - BungeeCord サーバーを再起動します。
- LuckPerms のような権限プラグインを使用します。
- プレイヤーがBungeeCord上の各サーバーに参加しようとしたときに、サーバーが自動的に起動します。
ptero.autostart.<サーバー名>
権限を持つプレイヤーのみが使用できます。
/ptero start <サーバー名>
コマンドで、サーバーを手動で起動できます。ptero.start.<サーバー名>
権限を持つプレイヤーのみが使用できます。
/ptero stop <サーバー名>
コマンドで、サーバーを手動で停止できます。ptero.stop.<サーバー名>
権限を持つプレイヤーのみが使用できます。
※ <サーバー名>
はBungeeCordの config.yml
に記述されているサーバー名です。
/ptero reload
でconfig.ymlと言語ファイルのリロードができます。
config.yml
ファイルには以下の設定項目がありますが、すべての項目を設定する必要はありません。
pterodactyl
: Pterodactylの設定を行います。URLとAPIキーを設定します。url
: ご自身のPterodactylパネルのURLを設定します。(例: https://panel.example.com/)- Cloudflare Tunnelなどを使用している場合は、通信できるようにIPによるバイパス設定を行ってください。
apiKey
: PterodactylのクライアントAPIキーを設定します。ptlc_
から始まる文字列です。- PterodactylのクライアントAPIキーは、アカウントページの「API Credentials」タブから確認できます。
servers
: サーバーごとの設定を行います。サーバーIDと自動停止までの時間を設定します。id
: Pterodactyl上のサーバーIDを設定します。- PterodactylのサーバーIDは、サーバーページのURLから確認できます。
- 例えば、URLが https://panel.example.com/server/1234abcd の場合、サーバーIDは 1234abcd です。
version
: プラグインのバージョンを設定します。- プラグイン更新時、この値とプラグインのバージョンが一致しない場合、警告が表示されます。
config.new.yml
が生成されるためマージツールなどを用いて設定を手動で移行する必要があります。- 移行後は、この値を新しいバージョンに変更してください。
checkUpdate
: プラグインの更新を確認するかどうかを設定します。デフォルトはtrue
です。language
: 使用する言語を設定します。デフォルトは英語(en
)です。- 対応している言語はコンフィグ内のコメントを参照してください。
startTimeout
: このプラグインでサーバーを起動した後、一定時間プレイヤーがいない場合にサーバーを停止します。単位は秒です。- 起動後は、startTimeout+サーバーのtimeout時間が経過すると、サーバーが停止します。
- 1に設定すると、サーバー起動後、プレイヤーが入って抜けるまではサーバーを起動したままになります。
powerControllerType
: 使用するパワーコントローラーのタイプを設定します。- ビルトインのPowerControllerは現状
pterodactyl
のみで、Pterodactylを操作します。 - アドオンを追加することで、独自のPowerControllerを追加することができます。
- ビルトインのPowerControllerは現状
useSynchronousPing
: ログイン時、サーバーにPingを送信する際に同期的に行うかどうかを設定します。 (実験的な機能)- この設定を有効にすると、ログイン時、サーバーにPingを送信する際に非同期ではなく同期的に行います。
- これによりログイン時に「Could not connect to a default or fallback server」メッセージの代わりにBungeePteroPowerのメッセージ(messages.yml 内の
join_autostart_login
)を表示することができます。 - デフォルトは
false
です。ログイン直後に参加するサーバー(ロビーサーバーなど)をBungeePteroPowerで休止状態にしたい場合にONにすると便利です。
startupJoin
: サーバー開始後、プレイヤーを自動的に参加させるため、サーバーのステータスをチェックするために使用されます。timeout
: サーバー起動後、プレイヤーが参加するまでの最大待機時間を設定します。- この値をサーバーが起動するまでの最大時間を設定してください。
- 0に設定すると、この機能はOFFになり、起動後にプレイヤーが自動参加することはなくなります。
joinDelay
: サーバーがping可能になった後、プレイヤーをサーバーに送る前に指定した秒数待機します。- この遅延はLuckpermsなどのプラグインが完全に読み込まれるのを待つために役立ちます。
- 0に設定すると、サーバーがping可能になるとすぐにプレイヤーが接続されます。
pingInterval
: サーバーのステータスをチェックする間隔を設定します。
restoreOnStop
: サーバーを停止したときにバックアップからサーバーをリセットする機能の設定を行います。timeout
: 停止シグナルを送信した後、サーバーが停止するまでの最大待機時間を設定します。(リストアはサーバーが停止した後に行われます)pingInterval
: 停止シグナルを送信した後、サーバーがオフラインかどうかを確認する間隔を設定します。
servers
: サーバーごとの設定を行います。サーバーIDと自動停止までの時間を設定します。timeout
: サーバーからプレイヤーがいなくなった際、一定時間プレイヤーがいない場合にサーバーを停止します。単位は秒です。backupId
: サーバーが停止したときに復元するバックアップのUUIDです。- この設定を空、又は削除すると、サーバー停止時にバックアップからのリストアは行われません。
- 各ゲームの後にリセットする必要があるサーバーに便利です。
BungeePteroPowerプラグインでは、パーミッションを使用して、プレイヤーが使用できるコマンドをサーバーごとに細かく制限できます。
ptero.autostart.<サーバー名>
: この権限を持つプレイヤーがBungeeCord上の各サーバーに参加したときに、サーバーが自動的に起動します。ptero.start.<サーバー名>
:/ptero start <サーバー名>
コマンドで、サーバーを手動で起動できます。ptero.autostart.<サーバー名>
の権限がなく、この権限を持つ場合、サーバーに入ると「[サーバーを起動]」という手動で起動できるボタンが表示されます。
ptero.stop.<サーバー名>
:/ptero stop <サーバー名>
コマンドで、サーバーを手動で停止できます。ptero.reload
:/ptero reload
コマンドで、コンフィグを再読み込みできます。
※ <サーバー名>
はBungeeCordの config.yml
に記述されているサーバー名です。
※ <サーバー名>
のところに *
を指定すると、すべてのサーバーに対して権限が適用されます。
config.yml
のlanguage
で言語を設定できます。- 対応している言語はコンフィグ内のコメントを参照してください。
- 起動すると、コンフィグで設定した言語のファイルが生成されます。
- このファイルには、変更したいメッセージのみを定義することができます。
- 定義されていないメッセージはプラグイン内部の設定した言語ファイルから読み込まれます。
- 編集してから
/ptero reload
コマンドで再読み込みすることで、プラグインの言語を変更できます。 - Pull Requestで言語ファイルを追加していただけると嬉しいです。
BungeePteroPowerは、Pterodactyl以外をサポートするためのパワーコントローラーAPIを提供しています。
アドオンを作成することで、Pterodactyl以外のパワーコントローラーを追加することができます!
また、組み込みのパワーコントローラを追加するためのプルリクエストを受け付けています!
できれば、以下のようなものをサポートしていきたいです
- サーバーをローカルで起動できるもの
- またはPterodactyl以外の管理ソフトウェアと互換性のあるもの。
例えば以下のようなものをサポートしたいです- PufferPanel
- Minecraft Server Manager
- MCSManager
- MC Server Soft
- AMP
- BungeePteroPowerは、他のプラグインと連携するためのAPIを提供しています。
- Pterodactyl以外に対応したい場合は、APIを実装することで対応可能です。
- 依存関係を追加することで、BungeePteroPowerのAPIを使用できます。
- アドオン内のpom.xml内にJitPackリポジトリを追加します
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
- BungeePteroPowerを依存関係に追加します
<dependency> <groupId>com.github.Kamesuta</groupId> <artifactId>BungeePteroPower</artifactId> <version>バージョン</version> </dependency>
- bungee.ymlに依存関係を追加します
depends: - BungeePteroPower
- APIを使用します
Pterodactyl向けのPowerControllerの実装例は、PterodactylController.javaを参照してください。
import com.kamesuta.bungeepteropower.api.BungeePteroPowerAPI; public class YourPlugin extends JavaPlugin { @Override public void onEnable() { // BungeePteroPowerAPIのインスタンスを取得します BungeePteroPowerAPI api = BungeePteroPowerAPI.getInstance(); // カスタムPowerControllerを登録します api.registerPowerController("your_service", new YourPowerController()); } }
- アドオン内のpom.xml内にJitPackリポジトリを追加します
- あなたのPowerControllerをBungeePteroPowerに追加してほしい場合は、プルリクエストを送ってください。
BungeePteroPowerではプルリクエストを歓迎しています。
以下の手順でビルドできます。
git clone https://github.com/Kamesuta/BungeePteroPower.git
cd BungeePteroPower
mvn install
- このプラグインは、Java 11 以上でビルドする必要があります。
- ビルド後、
target
ディレクトリにBungeePteroPower-<バージョン>.jar
ファイルが生成されます。
BungeePteroPowerは、bStatsを使用して匿名の統計データを収集しています。
統計データはこちら。
bStatsは、プラグインの使用状況を把握するために使用され、プラグインの改善に役立てられます。
統計データの収集を無効にするには、plugins/bStats/config.yml
の enabled
を false
に設定してください。