使用 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
类的 getResource
和 getResourceAsStream
方法。 一般情况下应该避免使用这些方法 ,因为在 SpongeAPI 下, AssetManager
是更合适的用于集中检索插件资源的方式,不仅是在你自己的插件,在他人的插件中也一样。