每个播放器配置文件的Java Bukkit / Spigot

时间:2015-09-25 17:06:17

标签: java bukkit

我一直在使用Bukkit / Spigot插件,该插件使用单独的配置文件,但已完成研究并对其他人进行了许多测试。答案,我还没有找到一个想要为我工作的解决方案。我已经尝试Minecraft One Player Per Config并根据我的需要调整它但它没有用。这就是我所拥有的:

private final String name;
private FileConfiguration config = null;
private final Plugin plugin;

public Files(Plugin plugin, String name) {
    this.name = name;
    this.plugin = plugin;
    config = YamlConfiguration.loadConfiguration(new File(name));
}

public void create() {
    cfile = new File(plugin.getDataFolder() + File.separator + path, name + ".yml");
    if (!plugin.getDataFolder().exists()) plugin.getDataFolder().mkdir();
    if (!cfile.exists()) {
        try {
            cfile.createNewFile();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    config = YamlConfiguration.loadConfiguration(cfile);
}

... set, get, etc methods

如果我尝试使用

进行实例化
 Files f = new Files(plugin, "config");

我在尝试获取/设置/等时遇到错误,或者最终没有错误或任何结果。有人能帮我一把吗?将不胜感激。

1 个答案:

答案 0 :(得分:0)

让我们从头开始:

config = YamlConfiguration.loadConfiguration(new File(name));

这会尝试从Bukkit主文件夹加载没有扩展名的配置 - 而不是从插件文件夹加载。如果您想稍后创建配置,则应将config保留为空值。

cfile = new File(plugin.getDataFolder() + File.separator + path, name + ".yml");
if (!plugin.getDataFolder().exists()) plugin.getDataFolder().mkdir();

您已使用path变量中的其他文件夹为DataFolder创建了一个文件。但是你没有在DataFolder中创建文件夹。 我建议:

File cfgFolder = new File(plugin.getDataFolder(), path);
cfgFolder.mkdirs();
cfile = new File(cfgFolder, name + ".yml");

您的缺失结果也可能是由于未将配置保存到磁盘造成的:

config.save(cfile);