【Minecraft】BKCommonLib プラグイン
BKCommonLib
適応バージョン:1.16
対応バージョン:1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21
BKCommonLibの概要
BKCommonLibは、Paper/Spigot/Bukkitサーバープラグインおよびライブラリであり、多数のユーティリティ、API、フレームワーク、およびパフォーマンスに重要なコードを提供します。このライブラリは、プラグインがMinecraft Server Code(NMS)を直接使用する必要がなくなることで、安定性を向上させることを目的としています。
特徴と利用方法
1. Minecraftのバージョン対応
- BKCommonLibの最新バージョンは、Minecraft 1.8以上と互換性があります。つまり、BKCommonLibの1.19バージョンは、Spigot 1.12.2、Paper 1.16.5、Pufferfish 1.18.2などのサーバーで動作します。
- 古いMinecraftバージョンには、それに対応する古いバージョンのBKCommonLibをインストールしないでください。
2. サポート
- MinecraftやPaperで重要な最適化が行われた場合、BKCommonLibが正常に動作しなくなる可能性があります。開発者はすでにその問題に取り組んでおり、開発ビルドが公開されることがあります。問題の報告やサポートは、GitHubのIssue Trackerや公式Discordサーバーで行うことができます。
- 過去のサーバーバージョンに関する問題報告も歓迎されています。
3. チュートリアルと例題プロジェクト
- BKCommonLibに関するチュートリアルや例題プロジェクトは少ないですが、公式DiscordでAPIに関するヘルプを求めることができます。開発者やコミュニティメンバーがサポートします。
追加情報とリンク
- 開発ビルド: BKCommonLibの開発ビルドは、問題の修正や新機能のテストに利用できます。
- Discordサーバー: 問題や質問がある場合は、公式Discordサーバーに参加して開発者やコミュニティとコミュニケーションを取ることが推奨されています。
BKCommonLibは、Minecraftサーバープラグインの開発を支援するための強力なツールであり、安定性とバージョン互換性を確保することに焦点を当てています。
BKCommonLibは、多くのMinecraftサーバーバージョンとさまざまなフォーク(例: Paper、Spigot、Forge)をサポートするための汎用Javaリフレクションライブラリ、Mountiplexを含む、高機能なプラグインおよびライブラリです。以下はその主な特徴です:
Mountiplex General Purpose Java Reflection Library
- ASM、Javassist、Objenesisの統合: Mountiplexは、これらのライブラリを組み合わせて、ランタイムで互換性のあるコードを生成するために使用されます。テンプレートエンジンを利用して、異なるMinecraftサーバーバージョンやフォークに対応したコードを動的に生成します。
- 動的なタイプ/名前のリマッピング: Forgeや複数バージョン、Mojangのマッピングをサポートするために、動的にタイプや名前をリマップします。
- プライベートメンバーへのアクセス:
#require
を使用してプライベートメンバーにアクセスし、#name
を用いてメソッドを呼び出すことが可能です。
Cloud Command Framework
- クリーンなコマンド作成: アノテーションやビルダーパターンを使用して、コマンドを清潔に記述できます。提案、権限管理、ローカライゼーションなどがサポートされています。
PluginBase Framework
- プラグインベースの実装: JavaPluginの代わりに使用でき、以下の機能を提供します:
- プラグインの事前読み込みのネイティブサポート
- 他のプラグインの有効化時にコールバックを受け取り、動的な読み込み/解放を行うための機能
- プラグインメタデータのカスタムストレージとしてplugin.ymlを読み取る
- 依存関係の確認および有効化済みの確認
- パケットリスナーの登録などのヘルパーメソッド
Permission API
- 権限管理: 簡単なENUMベースの権限APIを提供し、* ワイルドカードをサポートします。PermissionDefaults.ymlでデフォルトの設定をカスタマイズ可能です。
Localization API
- ローカライゼーション: ENUMベースのローカライゼーションAPIで、カスタマイズ可能なLocalization.ymlを生成します。プレースホルダー(%0%、%1%など)もサポートします。
SoftDependency Library
- ソフト依存ライブラリ: サードパーティのソフト依存関係を遅延ロードで管理し、有効化および無効化時の動作を簡素化します。
これらの機能により、BKCommonLibは多様なMinecraftサーバーエコシステムにおいて、プラグインの安定性と互換性を向上させる強力なツールとなっています。
BKCommonLibは、多くのMinecraftサーバーバージョンとさまざまなフォーク(例: Paper、Spigot、Forge)をサポートする汎用Javaリフレクションライブラリであり、さまざまな機能とAPIを提供しています。以下はその主な特徴と機能です:
Mountiplex General Purpose Java Reflection Library
- ASM、Javassist、Objenesisの統合: ランタイムでの互換性のあるコード生成を可能にするテンプレートエンジンを利用して、多様なMinecraftサーバーバージョンやフォークに対応します。
- 動的なタイプ/名前のリマッピング: Forgeや複数バージョン、Mojangのマッピングをサポートし、動的にタイプや名前を調整します。
- プライベートメンバーへのアクセス:
#require
を使用してプライベートメンバーにアクセスし、#name
を用いてメソッドを呼び出すことが可能です。
Cloud Command Framework
- クリーンなコマンド作成: アノテーションやビルダーパターンを使用して、効率的でクリーンなコマンドを作成できます。提案、権限管理、ローカライゼーションがサポートされています。
PluginBase Framework
- プラグインベースの実装: JavaPluginの代わりに使用でき、便利な機能を提供します:
- プラグインの事前読み込みのサポート
- 他のプラグインの有効化時のコールバック処理
- プラグインメタデータのカスタムストレージとしてplugin.ymlの読み取り
- パケットリスナーの簡単な登録メソッドなど
Permission API
- 権限管理: ENUMベースの権限APIを提供し、* ワイルドカードをサポートします。PermissionDefaults.ymlでデフォルトの設定をカスタマイズ可能です。
Localization API
- ローカライゼーション: ENUMベースのローカライゼーションAPIで、カスタマイズ可能なLocalization.ymlを生成します。プレースホルダー(%0%、%1%など)もサポートします。
SoftDependency Library
- ソフト依存ライブラリ: サードパーティのソフト依存関係を遅延ロードで管理し、有効化および無効化時の動作を簡素化します。
YAML Configuration
- 効率的なYAML設定: SnakeYAMLを使用し、メモリ使用量を最適化したYAMLライブラリを提供します。デフォルト値の取得やコメントの追加が容易であり、大容量のファイルにも対応しています。
NBT – CommonTag API
- NBT操作の簡略化: Minecraftサーバーの内部NBTタグライブラリに対する簡単なラッパーを提供し、アイテムやプレーヤープロファイルのNBTデータの読み書きを可能にします。
ForcedChunk – Chunk Loader
- 強制チャンク読み込み: メインスレッドのブロッキングを回避しながらチャンクを読み込み、ロードしたままに保つ機能を提供します。エンティティのTick処理やブロックデータの処理に重要です。
Chunk Future Provider
- チャンクの非同期処理: CompletableFuture APIを使用して、チャンクの読み込みやアンロードをイベント駆動で処理します。チャンクがロードされた後の処理や、隣接するチャンクの読み込み完了後の処理をサポートします。
Block Utilities
- ブロック関連の便利機能: オフライン状態のブロックやワールドを安全に管理し、メモリリークのリスクを回避します。署名の変更を追跡し、ブロックデータの効率的な取得と設定をサポートします。
これらの機能により、BKCommonLibはMinecraftサーバープラグインの開発と管理を効率化し、互換性と安定性を向上させる強力なツールとなっています。
BKCommonLibは、BukkitのMap APIに代わる高機能なMap Display APIを提供しています。以下はその主な特徴と機能です:
Map Display API
- 2D/3Dコンテンツの描画: Minecraftのマップやテクスチャバッファに対して2Dおよび3Dのコンテンツを描画します。
- イベントループとコールバック: 各マップ表示には独自のイベントループがあり、
onTick()
などのコールバックがサポートされています。 - アイテムメタデータによる自動ロード: アイテムを作成するだけで、自動的にマップIDが割り当てられます。
- ItemFrameのネイティブなタイリングサポート: 大きな画像の表示に対応しています。
- 科学的に支持されたRGB -> Map Color変換: RGBカラーをマップカラーに変換します。
- Minecraftのアセット(ブロック、アイテム)やリソースパックのレンダリングサポート: Minecraftのリソースを使用してレンダリングが可能です。
- カラーブレンディング、深度バッファ、256キャンバスレイヤー: 高度なグラフィックス処理をサポートします。
- 左/右クリックによるItemFrameのハンドリング: クリックされたピクセル座標が提供されます。
Entity Controllers
- エンティティの動作変更: サーバーのエンティティクラスをランタイムで拡張し、完全にカスタマイズしたエンティティの振る舞いを実装します。
- onTick()メソッドのオーバーライド: 自身のルーチンを実行するためのメソッドです。
- エンティティの移動やブロック・エンティティとの衝突の処理: エンティティの動作や衝突をカスタマイズ可能です。
Protocol API
- 多バージョン対応のパケットAPI: フェイクエンティティの作成などに特化した、かなり完全なパケットAPIを提供します。
- ProtocolLibの自動使用: ProtocolLibがインストールされていれば、自動的にその機能を利用します。
- パケットリスナーやモニター: パケットの修正やキャンセルが可能で、パケットの送信時にリスナーをバイパスするオプションも提供します。
これらの機能により、BKCommonLibはBukkitのMap APIやその他のAPIに対して高度な操作と柔軟性を提供し、Minecraftサーバープラグインの開発を効率化します。
ダウンロード手順
BKCommonLibのインストールと設定に関する説明は、公式Wikiのインストールページを参照してください。
- 1.プラグインをダウンロードする。
- 公式サイトから「BKCommonLib」プラグインをダウンロードします。
- 2.プラグインをサーバーに追加する。
- 「BKCommonLib.jar」をサーバーフォルダ内の「Plugins」に追加します。
- 3.サーバーを再起動する。
- サーバーを再起動することで「plugins」フォルダ内に「BKCommonLib」フォルダが生成されます。同時にプラグインがサーバーに適応されます。
権限について
権限については、公式wikの権限一覧ページを参照してください。
コマンドについて
コマンドについては、公式wikのコマンド一覧ページを参照してください。
参考ページ
この記事では、海外向けの記事を日本人向けに翻訳し情報公開しています。参考ページは以下になります。