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;

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 Assetss 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 Classen und ClassLoadern. Diese Methoden sollten in der SpongeAPI zugunsten des AssetManagers vermieden werden, damit ein einheitlicher Weg verwendet wird um auf Ressourcen zuzugreifen, nicht nur innerhalb deines Plugins, sondern auch für andere Plugins.