使用配置 API
为了让玩家能够改变你的插件的设置,可以使用一个配置文件。本教程将介绍如何使用 Bukkit 配置 API 创建一个配置文件。
从 JAR 中保存默认的 config.yml
要保存你在插件的 JAR 中包含的默认 config.yml
,你可以直接调用:
this.saveDefaultConfig()
读取配置文件
为了检索配置对象,你将需要在你的主类中使用 getConfig()
方法,像这样:
this.getConfig()
在配置中添加选项
首先,让我们创建一个配置变量,这样我们就不必反复调用那个函数了。
FileConfiguration config = this.getConfig();
现在,我们要在配置中添加一些选项。在本教程中,我们要做的是,如果 'youAreAwesome'
为真,它将向控制台记录一条信息,'youAreAwesome'
。
我们要添加的是以下内容。请确保把它放在你的 onEnable()
方法中。
config.addDefault("youAreAwesome", true);
我们已经实现了(嗯,差不多),你的插件将生成一个带有 "youAreAwesome" 选项的 config.yml
。默认情况下,它将被设置为真。(如果你使用 ("youAreAwesome", false)
,它当然会被设置为 false
。)
在这个例子中,我们使用了一个布尔值。youAreAwesome
可以是真,也可以是假。可以使用以下类型:
- boolean
- int
- double
- String
- String List
- 还有更多
检查值
现在我们已经添加了这个选项,我们需要检查这个选项的值是什么。假设用户将 youAreAwesome
设置为 true
,我们需要检查它是否为真(或假)。
如果是假的,我们可以执行一个代码块,如果是真的,也同样适用。
我们可以用下面的代码检查 youAreAwesome
的值:
if (config.getBoolean("youAreAwesome")) {
// do something
}
我们使用getBoolean()
是因为 youAreAwesome
是一个布尔值。例如,如果它是一个字符串,我们会使用getString()
。
保存配置文件
我们的配置文件现在看起来像这样:
youAreAwesome: true
我们仍然要保存配置文件。在所有config.addDefault()
的后面加上以下内容(在你的onEnable()
方法中)。
config.options().copyDefaults(true);
saveConfig();
结果
示例代码可以是:
public final class TestPlugin extends JavaPlugin implements Listener {
FileConfiguration config = getConfig();
@Override
public void onEnable() {
config.addDefault("youAreAwesome", true);
config.options().copyDefaults(true);
saveConfig();
// Enable our class to check for new players using onPlayerJoin()
getServer().getPluginManager().registerEvents(this, this);
}
// This method checks for incoming players and sends them a message
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (config.getBoolean("youAreAwesome")) {
player.sendMessage("You are awesome!");
} else {
player.sendMessage("You are not awesome...");
}
}
}
附录
关于更详细的信息(例如,如何设置更复杂和嵌套的 YAML 结构或使用列表和地图,以及如何创建和使用新的 YAML 文件),请参阅 Bukkit wiki。
如果你想创建和使用自定义文件,你可以使用现有的 Spigot API,或者使用像 BoostedYAML 这样的外部库来自动处理一切。