API ресурсов

AssetManager позволяет разработчикам извлекать ресурсы из JAR-файла плагина.

A plugin’s assets reside in a directory named assets/myplugin/ where myplugin is the plugin ID.

После правильной настройки Вы можете получить ресурс для своего (или любого) плагина, используя следующий код:

import org.spongepowered.api.asset.Asset;

Asset asset = plugin.getAsset("myfile.txt").get();

Кроме того, вы можете получить ресурсы через класс AssetManager:

import org.spongepowered.api.Sponge;

Asset asset = Sponge.getAssetManager().getAsset(plugin, "myfile.txt").get();

Совет

«AssetManager можно использовать для извлечения ресурсов, определённых в самой реализации Sponge, просто опуская параметр plugin.

Примечание

В приведенных выше примерах предполагается, что файл myfile.txt существует как Asset. Если этого не произойдет, то getAsset() вернёт Optional#empty().

Работа с ресурсами

Класс Asset по сути является просто оболочкой вокруг URL с некоторыми встроенными операциями ввода/вывода. Варианты использования Asset-ов по существу не ограничены, но один общий случай использования — это создание конфигурационного файла по умолчанию, если конфигурационный файл вашего плагина не найден. Этого можно добиться с помощью PluginContainer со следующим кодом:

import java.nio.file.Files;

if (Files.notExists(configPath)) {
    plugin.getAsset("default.conf").ifPresent(asset -> asset.copyToDirectory(configPath));
}

Примечание

Разработчики, пришедшие из Bukkit или других проектов, могут быть знакомы с методами getResource и getResourceAsStream в Class-ах и ClassLoader-ах. Этих методов следует избегать в среде SpongeAPI в пользу AssetManager, для обеспечения более эффективного способа извлечения ресурсов не только внутри вашего собственного плагина, но и для других плагинов.