在我的世界插件中创建自定义 YML 文件

Creating custom YML file in minecraft plugin

这里有点迷茫和困惑。

我目前正在尝试了解如何在我的 Minecraft 插件中创建自定义 .yml 文件。我尝试在其中存储播放器的 UUID 和自定义字符串。但是,我现在不知道该怎么办。

这是我现在拥有的,在我的 Main class 中:

package me.spoonme;

import java.io.File;
import java.io.IOException;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

import me.spoonme.Commands.Welcome;


public class Main extends JavaPlugin {

    public FileConfiguration myFileConfig = null;
    public File myFile;

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents((Listener)new Welcome(this), (Plugin)(this));

        myFile = new File(getDataFolder(), "playerstring.yml");
        if(!myFile.exists()) {
            try {
                myFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        FileConfiguration myFileConfig = YamlConfiguration.loadConfiguration(myFile);
        try {
              myFileConfig.save(myFile);
            } catch(IOException e) {
              e.printStackTrace();
            }
    }


}

我正在尝试遵循 2016 年的旧 post(这不是我最聪明的想法,但很难找到其他指南)

当我尝试 运行 我的测试服务器上的插件以查看它是否创建文件时,它显示此错误:

[23:07:49 INFO]: [Welcome] Enabling Welcome v1.0.0
[23:07:49 WARN]: java.io.IOException: The system cannot find the path specified
[23:07:49 WARN]:        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[23:07:49 WARN]:        at java.io.File.createNewFile(Unknown Source)
[23:07:49 WARN]:        at me.spoonme.Main.onEnable(Main.java:27)
[23:07:49 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
[23:07:49 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335)
[23:07:49 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405)
[23:07:49 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:356)
[23:07:49 WARN]:        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:316)
[23:07:49 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:402)
[23:07:49 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:370)
[23:07:49 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:325)
[23:07:49 WARN]:        at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:211)
[23:07:49 WARN]:        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:505)
[23:07:49 WARN]:        at java.lang.Thread.run(Unknown Source)

它在我的 Main class 中的第 27 行显示错误:

                myFile.createNewFile();

有什么帮助吗?

要修复此异常,您必须先创建数据文件夹。

正在创建数据文件夹

if (!this.getDatafolder().exists()) {
    this.getDatafolder().mkdir();
}

之后你可以 set/read 值 in/from YML 文件

Set/Read YML 文件

myFileConfig.set("user.monchao", 1);
int value = myFileConfig.getInt("user.monchao");

此示例也适用于所有其他原始数据类型。