PLUGINv3.0.2-1.20.1-26.2 · updated 2026年9月11日

BileTools - プラグインをより速くテスト

評価なし
CREATED BYVolmitSoftware7 plugins

GITHUB  •  DOCUMENTATION  •  DISCORD

Overview - what BileTools does

BileToolsは、プラグインディレクトリを監視し、ランタイムライフサイクルの変更を駆動します。これにより、再構築が再起動ではなく、実行中のサーバーに適用されます。

  • 自動ホットリロード。 既存のプラグインjarを再コンパイルし、BileToolsがコンテンツの変更を自動的に検出します。

  • ホットドロップ。 新しいjarをプラグインディレクトリにドロップすると、完全な再起動なしでランタイムロードのキューに入ります。

  • 自動アンロード。 トラッキングされたjarを削除すると、そのプラグインがアンロードされます。

  • ライフサイクルコマンド。 /bileコマンドツリーから手動でロード、アンロード、リロード、インストール、アンインストールできます。

  • 依存関係を考慮。 依存プラグインは、置き換えの周りでアンロードおよびリロードされ、盲目的に一つのjarをリロードすることはありません。

  • ローカルプラグインライブラリ。 BileToolsが見るすべてのjarはバージョンごとにアーカイブされ、同じフォルダが/bile installで読み取られます。バックアップとロールバックは同じ機能です。

  • リモートデプロイ。 選択したjarの変更を、認証された、サイズ制限のある、SHA-256で確認された転送を介して他の設定されたサーバーにプッシュします。

検出、簡単に言うと: サイズまたはタイムスタンプの変更は、監視者を起こすだけです。jarのSHA-256が実際に何かをリロードするかどうかを決定します。触れたが変更されていないjarは無視されます。

BileToolsは開発ツールです。 プラグインのライフサイクル状態をランタイムで意図的に操作します。これが開発ループを速くし、開発およびテストサーバーに存在する理由です。ホットリロードは、ライブサーバーでのクリーンな再起動の代わりにはなりません。

互換性 - ランタイムとJava

一つのjarがすべての6つのランタイムをカバーし、Minecraft 1.20.1から現在の26.xまで

  • Paper はサーバーの公開PluginManagerを介してロードされます。

  • Purpur 同じPaperファミリーのロードおよびアンロードパス

  • Leaf Paperファミリーのフォークで、Paperのように扱われます。

  • Folia 地域化されたスケジューリング、BileToolsはfoliaサポートを宣言します。

  • Canvas Foliaフォーク、同じ地域化されたルール

  • Spigot plugin.ymlを介してロードされます。paper-plugin.ymlのみを含むjarは拒否されます。

Java: Java 17はMinecraft 1.20.1+、Java 25は26.x+に対応しています。サーバーが既に要求しているものに合わせてください。

FoliaとCanvas: 地域化されたサーバーでのホットリロードは本質的により脆弱です。foliaサポートを宣言しないサードパーティプラグインは、ホットロード時に失敗する可能性があります。

コマンドと権限

ルートコマンドは /biletools です。エイリアス: /bile/bi/b です。

/bile load <plugin>                    プラグインjarをプラグインディレクトリからロード
/bile unload <plugin>                  インストールされたプラグインをアンロード
/bile reload <plugin>                  インストールされたプラグインをリロード
/bile uninstall <plugin>               プラグインjarをプラグインディレクトリから削除
/bile install <plugin> [version=..]    BileToolsライブラリからプラグインをインストール
/bile library [plugin=..]              ライブラリプラグインまたは一つのプラグインのバージョンをリスト

一つの権限が全体のツリーをカバーします:

bile.use     BileToolsへのアクセスを許可     デフォルト: op

手動コマンドは常に監視者フィルターをバイパスします。タブ補完はインストールされたプラグイン、ライブラリプラグイン、保存されたバージョンを提案します。単独で /bile を実行すると、ページネーションされたホバー&クリックヘルプメニューが開きます。

オプションの引数は名前を付ける必要があります。 位置的に渡すと、"unexpected argument"で失敗します:

/bile install MyPlugin                   動作する  (デフォルトはversion=latest)
/bile install MyPlugin version=1.4.2     動作する
/bile install MyPlugin version=latest    動作する
/bile install MyPlugin 1.4.2             失敗
/bile library                            動作する  (すべてをリスト)
/bile library plugin=MyPlugin            動作する
/bile library MyPlugin                   失敗

設定 - 完全なデフォルトconfig.yml

remote-deploy:
  slave:
    slave-enabled: false
    slave-port: 9876
    slave-payload: pickapassword
  master:
    master-enabled: false
    master-deploy-to:
    - yourserver.com:9876:password
    master-deploy-signatures:
    - MyPlugin
    - AnotherPlugin
  socket-timeout-ms: 15000
  max-transfer-bytes: 268435456
archive-plugins: true
watcher:
  idle-poll-ticks: 20
  active-poll-ticks: 5
  fingerprint-debounce-ticks: 8
  ignore:
  - LuckPerms
  - Vault
  - ProtocolLib
  - packetevents
  - WorldGuard
  - CoreProtect
  - spark
  only: []
  coalesce-window-ticks: 10
observability:
  log-timings: true
lifecycle:
  health-check: true

各オプションの説明

  • watcher.ignore 自動ホットドロップ、リロード、アンロードをスキップするプラグイン名。デフォルトは、開発ボックスで自動リロードするのが通常危険または無駄なものです。

  • watcher.only このリストが空でない場合、これらのプラグインのみが自動管理されます。忙しいサーバーで一つまたは二つのプロジェクトを積極的に開発しているときに便利です。

  • watcher.active-poll-ticks / idle-poll-ticks 変更が到着している間、監視者がスキャンする頻度と、ディレクトリが安定した後の頻度。

  • watcher.fingerprint-debounce-ticks jarのフィンガープリントが安定している必要がある時間。これにより、半分書かれたjarがロードされるのを防ぎます。

  • watcher.coalesce-window-ticks 近くのjarの書き込みを一つの依存関係順のリロードフラッシュにバッチ処理します。これにより、マルチモジュールビルドが5つの別々のリロードをトリガーしません。

  • archive-plugins 各プラグインjarを置き換えられる前にライブラリフォルダにアーカイブします。

  • lifecycle.health-check ロードまたはリロード後、プラグインが実際に登録されているかどうかを確認します。操作が失敗すると、プラグインが汚れているとマークされ、自動リロードが一時停止します。

  • observability.log-timings 各操作の各フェーズのタイミング(アンロード、依存関係、ロード、ヘルス)をログに記録します。

プラグインライブラリとロールバック

plugins/BileTools/library/<PluginName>/<version>.jar

archive-plugins」がオンのとき、BileToolsが見るすべてのプラグインjarは置き換えられる前にここにコピーされます。つまり、ライブラリはロールバック履歴としても機能し、/bile library は持っているものをリストし、/bile install <plugin> version=<version> はその中のいずれかを実行中のサーバーに戻します。

リモートデプロイ

オプション。マスターサーバーが選択したjarの変更を一つまたは複数のスレーブサーバーにプッシュできるようにします。

  • 各受信サーバーで: remote-deploy.slave.slave-enabled: true を設定し、ポートを選択して、slave-payload を共有パスワードに設定します。

  • 送信サーバーで: remote-deploy.master.master-enabled: true を設定し、以下の形式で各ターゲットをmaster-deploy-to にリストし、master-deploy-signatures に転送するプラグインをリストします。

master-deploy-to:
- host:port:password

転送は一時的な.partファイルに保存され、パスワード、ファイル名、転送サイズ、SHA-256がすべて確認された後にのみ昇格されます。ファイル名はサニタイズされ、プラグインフォルダを脱出するパスは拒否されます。デフォルトは256MBの上限と15秒のソケットタイムアウトです。

言語 - すべての17のロケールコード

デフォルトでは英語が選択されています。切り替えるには、localeplugins/BileTools/language.yml に設定します:

locale: en_US

de_DE    German (Germany)
es_ES    Spanish (Spain)
fi_FI    Finnish (Finland)
fr_FR    French (France)
he_IL    Hebrew (Israel)
it_IT    Italian (Italy)
ja-JP    Japanese (Japan)
ko_KR    Korean (South Korea)
lt_LT    Lithuanian (Lithuania)
nl_NL    Dutch (Netherlands)
pl_PL    Polish (Poland)
pt_PT    Portuguese (Portugal)
ru_RU    Russian (Russia)
tr_TR    Turkish (Turkey)
vi_VI    Vietnamese (Vietnam)
zh_CN    Chinese (Simplified)
zh_TW    Chinese (Traditional)

個々の行をバンドルに触れずにオーバーライドすることもできます。language.ymlのmessages: セクションの下に追加したものは勝ちます。省略したものは選択した言語にフォールバックし、次に英語にフォールバックします。ファイルは保存時にホットロードされます。

リロードが実際に実行される方法

すべての操作 ホットドロップ、リロード、インストール、アンインストール、リモートデプロイ:一つのシリアライズされたキューを通過し、重複排除キーを持ち、専用のプラグイン操作スレッドで実行されます。ライフサイクルの変化自体は常にグローバルまたはメインスレッドで実行されます。

detect -> stabilize -> fingerprint -> queue -> unload -> load -> dependents -> health check

VolmLibの ReloadAware コントラクトを実装しているプラグインは、タスクがキャンセルされ、リスナーが破棄される前に、HOT_RELOADまたはHOT_UNLOADコールバックを受け取ります。これにより、スケジューラがまだ生きている間に、進行中の作業を排出できます。

アンロードは、ライブコマンドグラフ、サービス、メッセージングチャネル、ルックアップテーブルからプラグインを削除し、クラスローダーを閉じる前に行われます。これにより、コマンドとタブ補完が正しく戻ってきます。

ライフサイクル待機は明示的なタイムアウトを持ちます。スタックした操作は失敗として表面化し、プラグインを汚れているとマークし、キューをブロックするのではなく、操作を中断します。 observability.log-timings をオンにすると、各操作の各フェーズのタイミングが表示されます。

ホットリロードの既知の制限

すべてのプラグインがクリーンにホットリロードできるわけではなく、BileToolsはそれを偽装しません。一般的にクラスリロードを生き残れないもの:

  • 静的状態 クラスリロードを超えて保持されるフィールド

  • バックグラウンドスレッド プラグインスケジューラの外で開始された作業

  • ネイティブリソース JVMの外でバインドされたもの

  • 外部接続 独自のライフタイムを持つソケットやプール

  • プラグイン固有の内部 他のプラグインが所有するキャッシュやレジストリ

重要または不明瞭なプラグインは無視リストに入れ、イテレーション中にタイミングログをオンにし、状態を安全に再構築できない場合はサーバーを再起動してください。

BileTools - プラグインをより速くテストFREE

素晴らしいものを作る準備はできましたか?

MCModelsコミュニティに参加して、夢のプロジェクトを今日から始めましょう。