星辰吖丶
怎么实现一个玩家一个yaml文件

2000000
本帖最后由 2000000 于 2022-11-18 10:58 编辑

我会推荐您使用 https://github.com/Simplix-Softworks/SimplixStorage此依赖库支持配置文件自动重载,并且支持 yaml/toml/json 格式的存储,用法简单易上手 使用优秀的依赖库会让您的生活变得愉快,让复杂的部分变的非常简单
我将会以这个库作为样式,教您实现一个玩家一个文件,并寻找对应玩家的配置文件。

首先让我们写一个创建文件的方法,这里我会用我的开源项目作为演示,具体请见 -> 点击这里
我们使用此方法,在玩家进入的时候来使用此方法创建配置文件,createYamlConfig(player.getName(), "Players", false);
我们创建了一个新的 Yaml 文件,位于插件文件夹下的 Players 文件夹内,并且是创建一个新的,不从已有资源中寻找

接下来我们只需要写一个方法,来获取指定玩家的 Yaml 文件即可

    public static Yaml getPlayerConfig(Player player) {
        String dataFolder = plugin.getDataFolder() + "/Players";
        File file = new File(dataFolder, player.getName() + ".yml");

        if (!file.exists()) createYamlConfig(player.getName(), null, true);

        return new Yaml(player.getName(), dataFolder);
    }

我们通过检查插件配置文件夹下的 Players 文件夹内是否含有 玩家名.yml 文件,如果没有则重新创建,返回玩家的 Yaml 文件

或者您可以去掉中间检查的步骤,而是直接 new 出来,如果没有是会自动创建的,如下:

    public static Yaml getPlayerConfig(Player player) {
        String dataFolder = plugin.getDataFolder() + "/Players";

        return new Yaml(player.getName(), dataFolder);
    }

当我们获取到了该玩家的 Yaml 文件后,只需要做您想做的事就可以了

其次,如果您想要以平面文件的方式存储玩家数据,且不需要用户手动进行编辑,那么 Yaml 只会使得您的插件效率低下,Json 是不错的选择,它比 Yaml 快得多