使用Spigot API的Java,代码不会在我的.yml文件中保存默认值

时间:2016-01-02 10:28:05

标签: java bukkit

我目前在保存YAML文件的默认值时遇到了问题(我在Eclipse上定义了该文件)。 YAML文件确实生成,但它是一个空文件。 (应该是我之前在Eclipse上输入过的东西)。有人能弄清楚我错过了什么吗?

也许在SettingsManager类的setup()方法中有问题,因为它是生成lang.yml文件的方法,而main()方法是在Main类上的onEnable()上调用的。 / p>

关于pastebin的完整课程:

http://pastebin.com/wEeiXyRi (Main.class)

http://pastebin.com/82Hf8nB7 (SettingsManager.class)

我还在Eclipse的项目文件夹中添加了文件config.ymllang.yml

3 个答案:

答案 0 :(得分:0)

您需要从src目录中的配置文件加载默认值,然后使用配置流将它们设置为您的配置。例如,使用您的语言配置:

defConfigStream = new InputStreamReader(plugin.getResource("lang.yml"), "UTF8");

然后,假设langConfig是你的配置变量:

YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
langConfig.setDefaults(defConfig);

并保存您的配置。

答案 1 :(得分:0)

Bukkit提供了一种有用的方法,可以将JavaPlugin.saveDefaultConfig()javadocs here)形式的默认config.yml文件保存到插件的目录中。请注意,它不会覆盖现有的配置文件。

如果要将.jar插件文件中包含的其他文件保存到插件的目录中,可以使用JavaPlugin.saveResource()方法(javadocs here)。例如,在onEnable中,如果包含行this.saveResource("lang.yml", true),则插件目录中的lang.yml将始终被jar文件中包含的版本覆盖。

答案 2 :(得分:0)

启用和禁用期间

getConfig().options().copyDefaults(true); reloadConfig(); saveConfig();

同样的事情发生在我身上,代码会在保存之前更新您的配置,因此它不会覆盖您的更改