跳到主要内容

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 不涵盖的内容​

自定义基岩版实体不通过该类注册。插件需要在自己的 Java 资源包中的 assets/<namespace>/rspm_bedrock_pack/ 下提供原生基岩版实体资源来贡献它们;RSPM 会把这些资源带入生成的基岩版资源包,随附的 Geyser 扩展再注册由此产生的定义。参见基岩版转换与 Geyser 扩展与自定义实体。

物品的基岩版转换提示同样是资源包文件,而不是 API 调用:assets/<namespace>/rspm_item_bases/ 声明基础物品,assets/<namespace>/rspm_item_java_only/ 让物品不参与基岩版转换,assets/<namespace>/rspm_item_particles/ 为手持物品附加粒子。参见基础物品、仅限 Java 版的物品和手持物品粒子。

注意事项​

  • 通过 API 注册的资源包参与 priorityOrder 的方式与内置集成相同。在 config.yml 中将你的插件名称添加到 priorityOrder 以控制它在合并顺序中的位置。
  • 如果你的插件名称未在 priorityOrder 中列出,你的资源包将获得最低优先级。
  • 注册应在你的插件的 onEnable 或初始化期间进行,在 ResourcePackManager 完成自身初始化并触发首次合并之前。