使用 Asset API

AssetManager 允许开发者从插件的 JAR 中检索资源。

一个插件的 Assets 往往储存于 assets/myplugin/ 目录下,其中的 myplugin 是其插件 ID。

您可以在配置完成后使用以下代码检索你的(或任何)插件的资源:

import org.spongepowered.api.asset.Asset;

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

或者,你可以通过 AssetManager 来检索 Assets:

import org.spongepowered.api.Sponge;

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

小技巧

AssetManager 可以用来检索在 Sponge 的实现中定义的 Assets,只需省略 plugin 参数即可。

注解

上面的例子假设 myfile.txt 以一个 Asset 的形式存在。当然,如果没有,那么 getAsset() 方法将返回 Optional#empty()

使用 Assets

Asset 类本质上只是一个对于一个 URL 及其一些常见的内置 I/O 操作的包装。对 Assets 的使用本质上是不受限的,然而一种常见的用法是在插件没有找到配置文件的时候,生成一个默认的配置文件。你可以通过使用 PluginContainer 类来完成这件事,就像这样:

import java.nio.file.Files;

if (Files.notExists(configPath)) {
    plugin.getAsset("default.conf").copyToFile(configPath);
}

注解

来自 Bukkit 等有着 Java 背景的开发者可能会很熟悉 Class 类和 ClassLoader 类的 getResourcegetResourceAsStream 方法。 一般情况下应该避免使用这些方法 ,因为在 SpongeAPI 下, AssetManager 是更合适的用于集中检索插件资源的方式,不仅是在你自己的插件,在他人的插件中也一样。