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 放至該位置。
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 完成自身初始化並觸發第一次合併之前。