Java Bukkit/Spigot 每个播放器配置文件
Java Bukkit/Spigot per player configuration files
我一直在开发一个 Bukkit/Spigot 插件,它使用单独的配置文件,但经过研究和对其他人的答案进行多次测试后,我还没有找到适合我的解决方案。我已经尝试 并根据我的需要对其进行了调整,但它没有用。这是我拥有的:
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");
我在尝试 get/set/etc 时遇到错误,或者我最终没有错误也没有任何结果。任何人都可以帮我解决这个问题吗?将不胜感激。
让我们从头说起:
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);
我一直在开发一个 Bukkit/Spigot 插件,它使用单独的配置文件,但经过研究和对其他人的答案进行多次测试后,我还没有找到适合我的解决方案。我已经尝试
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");
我在尝试 get/set/etc 时遇到错误,或者我最终没有错误也没有任何结果。任何人都可以帮我解决这个问题吗?将不胜感激。
让我们从头说起:
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);