Die Dateianhang API
Der AssetManager erlaubt Entwicklern Ressourcen aus einer Plugin JAR zu beziehen.
A plugin’s assets reside in a directory named assets/myplugin/
where myplugin
is the plugin ID.
Sobald dies richtig konfiguriert ist, kannst du von deinem (und anderen) Plugins mit dem folgenden Code Ressourcen abfragen:
import org.spongepowered.api.asset.Asset;
Asset asset = plugin.getAsset("myfile.txt").get();
Alternativ kannst du Dateianhänge auch mit der AssetManager
Klasse abrufen:
import org.spongepowered.api.Sponge;
PluginContainer plugin = ...;
Asset asset = Sponge.getAssetManager().getAsset(plugin, "myfile.txt").get();
Tipp
Der AssetManager
kann auch verwendet werden um Dateianhänge abzurufen, die von der Sponge Implementierung selbst bereitgestellt werden, indem du den Plugin-Parameter weglässt.
Bemerkung
Das Beispiel oben nimmt an, dass myfile.txt
als Asset existiert. Falls es nicht existiert, dann wird getAsset()
Optional#empty()
zurückgeben.
Arbeiten mit Anhängen
Die Asset
Klasse ist im Grunde nur ein Wrapper um eine URL
, in den einige häufig verwendete E/A Operationen eingebaut sind. Die Anwendungsmöglichkeiten von Assets
s sind unbegrenzt, häufig werden sie aber verwendet um Standard-Konfigurationen bereitzustellen, falls die Konfigurations-Dateien des Plugins nicht gefunden werden können. Dies kann erreicht werden, indem ein PluginContainer zusammen mit dem folgenden Code verwendet wird:
import java.nio.file.Files;
if (Files.notExists(configPath)) {
plugin.getAsset("default.conf").ifPresent(asset -> asset.copyToDirectory(configPath));
}
Bemerkung
Entwickler von Bukkit oder aus einem anderen Java-Umfeld sind möglicherweise schon vertraut mit der getResource
und der getResourceAsStream
Methode in Class
en und ClassLoader
n. Diese Methoden sollten in der SpongeAPI zugunsten des AssetManager
s vermieden werden, damit ein einheitlicher Weg verwendet wird um auf Ressourcen zuzugreifen, nicht nur innerhalb deines Plugins, sondern auch für andere Plugins.