在我的世界插件中创建自定义 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");
此示例也适用于所有其他原始数据类型。
这里有点迷茫和困惑。
我目前正在尝试了解如何在我的 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");
此示例也适用于所有其他原始数据类型。