The Asset API

The AssetManager allows developers to retrieve resources from a plugin JAR.

A plugin’s assets resides in a directory named assets/myplugin/ where myplugin is the plugin ID.

Once properly configured you can retrieve a resource for your (or any) plugin using the following code:

import org.spongepowered.api.asset.Asset;

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

Alternatively, you can retrieve assets through the AssetManager class:

import org.spongepowered.api.Sponge;

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


The AssetManager can be used to retrieve assets defined in the Sponge implementation itself simply by omitting the plugin parameter.


The examples above assume that myfile.txt exists as an Asset. If it does not, then getAsset() will return Optional#empty().

Working with Assets

The Asset class is essentially just a wrapper around a URL with some common I/O operations built in. The use cases of Assetss is essentially unbounded but one common use case is to generate a default configuration file if your plugin’s configuration file is not found. You can achieve this using a PluginContainer with the following code:

import java.nio.file.Files;

if (Files.notExists(configPath)) {


Developers coming from Bukkit or some other Java background might be familiar with the getResource and getResourceAsStream methods in Classes and ClassLoaders. These methods should generally be avoided within the SpongeAPI environment in favor of the AssetManager in order to provide a more confluent way of retrieving resources not only within your own plugin, but for other plugins as well.