ResourcePackManager API
生成されたJavaリファレンスではクラス、メソッド、シグネチャを検索でき、各モジュールのソースバージョンとコミットも確認できます。
ResourcePackManagerは、他のプラグインがランタイムでリソースパックをマージ登録できるJava APIを公開しています。
インストールしたプラグインに合わせて、com.magmaguy:ResourcePackManager:2.4.6 を provided または compileOnly で参照してコンパイルします。これは今回の更新で確認した公開Mavenバージョンです。現在のソースは 2.4.6 です。リポジトリと依存関係の例はJava API一覧を参照してください。必須の連携なら depend: [ResourcePackManager] を宣言します。このAPIはBukkitバックエンド用です。プロキシプラグインがリモートのバックエンドにパックを登録するためには使えません。
APIへのアクセス
APIクラスは com.magmaguy.resourcepackmanager.api.ResourcePackManagerAPI です。すべてのメソッドはstaticです。
ローカルパックの例
このプラグインは、記述子で名前を ExamplePack とした場合に、既存の plugins/ExamplePack/pack.zip を登録します。サーバー起動前にZIPを配置してください。
package example;
import com.magmaguy.resourcepackmanager.api.ResourcePackManagerAPI;
import java.io.File;
import org.bukkit.plugin.java.JavaPlugin;
public final class ExamplePack extends JavaPlugin {
@Override
public void onEnable() {
File pack = new File(getDataFolder(), "pack.zip");
if (!pack.isFile()) {
getLogger().warning("Pack registration skipped: pack.zip is missing");
return;
}
ResourcePackManagerAPI.registerLocalResourcePack(
getName(), getDataFolder().getName() + "/pack.zip",
false, false, true, "");
}
}
登録メソッドの戻り値は void で、同じプラグイン名の既存登録を置き換えます。入力を登録するだけで、その場でマージ、ホスト、送信するわけではありません。最初のマージが終わっている場合は、パックの準備が整ってからリロードを要求するか、管理者に /rspm reload を実行してもらってください。プレイヤーやファイル変更のたびに繰り返しリロードしないでください。
登録はサーバースレッドから呼び出し、ソースを1つだけ指定します。メソッドは入力を保存しますが、ダウンロードやマージが可能かどうかは検証しません。配信の確認には、マージ結果とサーバーログを調べてください。このクラスには登録を解除する公開メソッドはありません。
リソースパックの登録
パックがローカル、リモート、またはいずれかに応じて、3つの登録メソッドがあります。
registerResourcePack
ResourcePackManagerAPI.registerResourcePack(
String pluginName,
String localPath,
String url,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
ローカルパスまたはリモートURLからのリソースパックを登録します。localPath と url のいずれか一方のみがnull以外である必要があります。
registerLocalResourcePack
ResourcePackManagerAPI.registerLocalResourcePack(
String pluginName,
String localPath,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
plugins ディレクトリからの相対パスでローカルのリソースパックを登録します。
registerRemoteResourcePack
ResourcePackManagerAPI.registerRemoteResourcePack(
String pluginName,
String url,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
指定されたURLからダウンロードされるリソースパックを登録します。
パラメータ
| パラメータ | 説明 |
|---|---|
pluginName | プラグインリストに表示される通りのプラグイン名。大文字小文字を区別します。 |
localPath | plugins ディレクトリからリソースパックファイルまたはフォルダへの相対パス。 |
url | リソースパックをダウンロードするURL。 |
encrypts | 将来の使用のために予約済み。現在は何も行いません。 |
distributes | 将来の使用のために予約済み。現在は何も行いません。 |
zips | リソースパックが既にzip形式かどうか。false の場合、ResourcePackManagerがマージ前にzip化します。 |
reloadCommand | プラグインのリロードコマンド。将来の使用のために予約済み。 |
リロードのトリガー
ResourcePackManagerAPI.reloadResourcePack();
ResourcePackManagerをリロードし、登録されたすべてのパックを再マージします。自動ホスティングが有効な場合は結果を再ホストします。
このAPIが扱わないもの
カスタムBedrockエンティティはこのクラスを通じて登録するものではありません。プラグインは、自身のJavaパック内の assets/<namespace>/rspm_bedrock_pack/ 配下にネイティブのBedrockエンティティアセットを同梱することで提供します。RSPMがそれらを生成Bedrockパックに取り込み、同梱のGeyser拡張が結果として得られた定義を登録します。Bedrock変換とGeyser拡張とカスタムエンティティを参照してください。
アイテムのBedrock変換用のヒントも、APIの呼び出しではなくパック内のファイルです。assets/<namespace>/rspm_item_bases/ はベースアイテムを宣言し、assets/<namespace>/rspm_item_java_only/ はアイテムをBedrock変換の対象外にし、assets/<namespace>/rspm_item_particles/ は手持ちアイテムにパーティクルを付けます。ベースアイテム、Java専用アイテム、手持ちアイテムのパーティクルを参照してください。
備考
- APIを通じて登録されたパックは、組み込み連携と同様に
priorityOrderに参加します。マージ順序を制御するには、config.ymlのpriorityOrderにプラグイン名を追加してください。 - プラグイン名が
priorityOrderに記載されていない場合、パックは最低の優先度を受けます。 - 登録はプラグインの
onEnableまたは初期化中に行い、ResourcePackManagerが独自の初期化を完了して最初のマージをトリガーする前に行う必要があります。