API ResourcePackManager
Сгенерированный справочник 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. Все методы статические.
Пример локального пака
Этот плагин регистрирует существующий ZIP по адресу plugins/ExamplePack/pack.zip, если его дескриптор задаёт имя ExamplePack. Разместите 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-сущностей в assets/<namespace>/rspm_bedrock_pack/ внутри своего Java-пака; 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так же, как встроенные интеграции. Добавьте имя вашего плагина вpriorityOrderвconfig.yml, чтобы контролировать его позицию в порядке объединения. - Если имя вашего плагина не указано в
priorityOrder, ваш пак получает самый низкий приоритет. - Регистрация должна происходить в
onEnableвашего плагина или при инициализации, до того как ResourcePackManager завершит свою собственную инициализацию и запустит первое объединение.