メインコンテンツまでスキップ

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を配置してください。

ExamplePack.java
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プラグインリストに表示される通りのプラグイン名。大文字小文字を区別します。
localPathplugins ディレクトリからリソースパックファイルまたはフォルダへの相対パス。
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が独自の初期化を完了して最初のマージをトリガーする前に行う必要があります。