【问题标题】:Java with Spigot API, code won't save defaults on my .yml file带有 Spigot API 的 Java,代码不会在我的 .yml 文件中保存默认值
【发布时间】:2016-01-02 10:28:04
【问题描述】:

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

可能是SettingsManager类的setup()方法有问题,因为它是生成lang.yml文件的方法,而在Main类的onEnable()上调用了setup()方法。


我在 pastebin 上的完整课程:

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

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

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

【问题讨论】:

  • 嗯。我看不到您设置任何必须保存在内部的信息(例如通过 .set("X.Y", 123))。
  • 我正在通过我的 Eclipse 手动设置它,并且在我的项目文件夹中有“lang.yml” 这是我的意思的屏幕截图i.imgur.com/ypIy5AR.png

标签: java bukkit


【解决方案1】:

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

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

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

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

并保存您的配置。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在启用和禁用使用期间

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2021-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多