我一直在使用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");
我在尝试获取/设置/等时遇到错误,或者最终没有错误或任何结果。有人能帮我一把吗?将不胜感激。
答案 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);