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;
PluginContainer plugin = ...;
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
, для обеспечения более эффективного способа извлечения ресурсов не только внутри вашего собственного плагина, но и для других плагинов.