Aset API

AssetManager mengizinkan pengembang untuk mendapatkan resources dari plugin JAR.

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

Saat sesudah dikonfigurasi dengan benar anda dapat mengambil sumber daya untuk plugin (atau apapun) anda menggunakan kode berikut:

import org.spongepowered.api.asset.Asset;

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

Jika tidak, anda dapat mengambil aset melalui AssetManager class:

import org.spongepowered.api.Sponge;

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

Tip

AssetManager dapat digunakan untuk mengambil aset yang telah didefinisikan dalam implementasi Sponge itu sendiri hanya dengan menghilangkan parameter plugin.

Catatan

Contoh di atas mengasumsikan bahwa myfile.txt ada sebagai Asset. Jika tidak, maka getAsset() akan mengembalikan nilai Optional#empty().

Bekerja dengan aset

Kelas Asset pada dasarnya hanya pelupuk di sekitar URL dengan beberapa operasi I/O yang dibangun. use case dari Assetss pada dasarnya tak terbatas tetapi satu use case yang umum adalah untuk menghasilkan berkas konfigurasi bawaan jika konfigurasi plugin anda tidak ditemukan. Anda dapat menggapai ini dengan menggunakan PluginContainer dengan kode berikut:

import java.nio.file.Files;

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

Catatan

Pengembang yang datang dari Bukkit atau beberapa dengan latar belakang Java mungkin lazim dengan metode getResource dan getResourceAsStream dalam Classes dan ClassLoaders. Metode ini harus dihindari dalam lingkungan SpongeAPI untuk membantu AssetManager memberikan cara yang lebih bertumpu untuk mengambil sumber daya yang tidak hanya dalam plugin yang anda miliki, tetapi plugin yang lain juga.