使用配置API

Cold的窝 / 2023-08-19 / 原文

使用配置 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();

结果

示例代码可以是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 这样的外部库来自动处理一切。