跳至主要內容

ResourcePackManager API

產生的 Java 參考文件可搜尋類別、方法與簽章,並記錄各模組的原始碼版本與提交。

ResourcePackManager 公開 Java API,讓其他外掛程式在執行時註冊其資源包以進行合併。

以 provided 或 compileOnly 範圍依賴 com.magmaguy:ResourcePackManager:2.4.6,配合已安裝的外掛版本。這是本次更新核實的公開 Maven 版本;目前原始碼版本為 2.4.6。Java API 索引提供儲存庫與依賴範例。必要的整合應宣告 depend: [ResourcePackManager]。這是 Bukkit 後端 API,代理外掛無法透過它向遠端後端註冊資源包。

存取 API​

API 類別為 com.magmaguy.resourcepackmanager.api.ResourcePackManagerAPI。所有方法都是靜態的。

本機資源包範例​

當外掛描述檔將其命名為 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。避免為每位玩家或每次檔案變更反覆觸發重新載入。

請在伺服器執行緒呼叫註冊方法,且只提供一個來源。該方法儲存輸入,但不驗證資源包能否下載或合併。驗證交付時,請檢查合併結果與伺服器日誌。此類別沒有公開的取消註冊方法。

註冊資源包​

根據您的資源包是本機、遠端或兩者皆可,有三種註冊方法。

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資源包是否已壓縮。如果為 false,ResourcePackManager 會在合併前進行壓縮。
reloadCommand您的外掛程式的重新載入指令。保留供未來使用。

觸發重新載入​

ResourcePackManagerAPI.reloadResourcePack();

重新載入 ResourcePackManager,重新合併所有已註冊的資源包,並在啟用自動託管時重新託管結果。

此 API 未涵蓋的部分​

自訂 Bedrock 實體並不是透過這個類別註冊的。外掛要貢獻這類內容,是把原生的 Bedrock 實體資產放在其 Java 資源包的 assets/<namespace>/rspm_bedrock_pack/ 之下;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 完成自身初始化並觸發第一次合併之前。