L’API des Ressources

Le AssetManager permet aux développeurs d’extraire des ressources du JAR d’un plugin.

Les ressources d’un plugin se trouvent dans un dossier nommé assets/myplugin/ ou myplugin est l’ID du plugin.

Une fois proprement configuré, vous pouvez retrouver une ressource pour vous ou n’importe quel plugin en utilisant le code suivant:

import org.spongepowered.api.asset.Asset;

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

Autrement, vous pouvez retrouver les ressources via la classe AssetManager:

import org.spongepowered.api.Sponge;

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

Astuce

Le AssetManager peux être utilisé pour extraire des ressources disponible dans l’implémentation de Sponge elle-même, simplement en omettant le paramètre correspondant.

Note

Les exemples ci-dessus supposent que myfile.txt existe comme un Asset. Si ce n’est pas le cas, alors getAsset() retourne Optional#empty().

Travailler avec les Ressources

La classe Asset est essentiellement un emballage autour de URL avec quelques communes opérations I/O dedans. Les utilisations de Assetss sont quasi-illimités mais une utilisation commune est de généré un fichier de configuration par défaut si votre celui de votre plugin n’est pas trouvé. Vous pouvez effectuer ceci en utilisant un PluginContainer avec le code suivant :

import java.nio.file.Files;

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

Note

Les développeur venant de Bukkit ou d’autres projets Java du même type peuvent être familiers avec les méthodes getResource et getResourceAsStream dans Classes et ClassLoaders. Ces méthodes doivent généralement évité à l’intérieur de l’environnement SpongeAPI en faveur du AssetManager afin de fournir un moyen plus stable pour récupérer des ressources, non seulement pour votre propre plugin, mais pour sa compatibilité avec d’autres aussi.