Перейти к основному содержимому

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 там до запуска сервера.

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 к файлу или папке вашего ресурс-пака.
urlURL для скачивания ресурс-пака.
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 завершит свою собственную инициализацию и запустит первое объединение.