Создание собственного файла YML в плагине Minecraft - PullRequest
0 голосов
/ 27 марта 2020

Немного растерян и запутан здесь.

В настоящее время я пытаюсь выяснить, как создавать собственные файлы .yml в моем плагине Minecraft. Я играю на хранении UUID игрока вместе с пользовательскими строками в нем. Тем не менее, я не знаю, что делать в этот момент.

Вот что у меня есть сейчас, в моем основном классе:

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 года (что не самая умная идея, но у меня возникли проблемы с поиском других руководств)

Когда я пытаюсь запустить плагин на своем тестовом сервере, чтобы увидеть, создает ли он файл, он показывает эту ошибку :

[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)

В моем главном классе в строке 27 отображается ошибка:

                myFile.createNewFile();

Любая помощь?

1 Ответ

1 голос
/ 27 марта 2020

Чтобы исправить это исключение, сначала необходимо создать папку данных.

Создание папки данных

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

После этого вы можете устанавливать / читать значения в / из файла YML

Установить / прочитать файл YML

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

Этот пример также работает со всеми другими примитивными типами данных.

...