Помогите Не могу создать players.yml

kleksyworld

Активный участник
Баллы
61
Имя в Minecraft
_TheKrealisYT_
Здравствуйте, я пишу плагин на проверку игрока. При вводе команды /checkban(если игрок не прошел проверку и он читер), его банит сервер, также этот игрок должен заноситься в файл players.yml.
При запуске плагина выдает такую ошибку:

[11:14:21 WARN]: java.io.IOException: Системе не удается найти указанный путь
[11:14:21 WARN]: at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[11:14:21 WARN]: at java.io.File.createNewFile(Unknown Source)
[11:14:21 WARN]: at ru.main.addon.Main.onEnable(Main.java:42)
[11:14:21 WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[11:14:21 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[11:14:21 WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:808)
[11:14:21 WARN]: at org.bukkit.Bukkit.reload(Bukkit.java:559)
[11:14:21 WARN]: at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:55)
[11:14:21 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:648)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:463)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666)
[11:14:21 WARN]: at java.lang.Thread.run(Unknown Source)

(Конкретно про players.yml, конфиг он создает)
Так не подскажете мне, в чем моя ошибка?

Main.class:
@Override
public void onEnable() {
File playersfile = new File("plugins/kAddon/players.yml");
if(!playersfile.exists()) {
try {

playersfile.createNewFile();
} catch (IOException e) {

e.printStackTrace();
}
}

CheckBan.class:
Bukkit.getBanList(Type.NAME).addBan(target.getName(),
Main.getInstance().getConfig().getString("messages.checkban.target_banned").replace("&","§"), null, "kAddon");

target.kickPlayer(
Main.getInstance().getConfig().getString("messages.events.cheat_banned").replace("&","§")
);

File playersfile = new File("plugins/kAddon/players.yml");
FileConfiguration players = YamlConfiguration.loadConfiguration(playersfile);
List<String> list = players.getStringList("players");
if(list.isEmpty()) list = new ArrayList<String>();
list.add(target.getName());

players.set("players", list);
try {
players.save(playersfile);
} catch (IOException e1) {
e1.printStackTrace();
}
return true;
}
}
 
Ну все - выбрасывай. Рано тебе в плагины.
 
Здравствуйте, я пишу плагин на проверку игрока. При вводе команды /checkban(если игрок не прошел проверку и он читер), его банит сервер, также этот игрок должен заноситься в файл players.yml.
При запуске плагина выдает такую ошибку:

[11:14:21 WARN]: java.io.IOException: Системе не удается найти указанный путь
[11:14:21 WARN]: at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[11:14:21 WARN]: at java.io.File.createNewFile(Unknown Source)
[11:14:21 WARN]: at ru.main.addon.Main.onEnable(Main.java:42)
[11:14:21 WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[11:14:21 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[11:14:21 WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:808)
[11:14:21 WARN]: at org.bukkit.Bukkit.reload(Bukkit.java:559)
[11:14:21 WARN]: at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:55)
[11:14:21 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685)
[11:14:21 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:648)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:463)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:424)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774)
[11:14:21 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666)
[11:14:21 WARN]: at java.lang.Thread.run(Unknown Source)

(Конкретно про players.yml, конфиг он создает)
Так не подскажете мне, в чем моя ошибка?

Main.class:
@Override
public void onEnable() {
File playersfile = new File("plugins/kAddon/players.yml");
if(!playersfile.exists()) {
try {

playersfile.createNewFile();
} catch (IOException e) {

e.printStackTrace();
}
}

CheckBan.class:
Bukkit.getBanList(Type.NAME).addBan(target.getName(),
Main.getInstance().getConfig().getString("messages.checkban.target_banned").replace("&","§"), null, "kAddon");

target.kickPlayer(
Main.getInstance().getConfig().getString("messages.events.cheat_banned").replace("&","§")
);

File playersfile = new File("plugins/kAddon/players.yml");
FileConfiguration players = YamlConfiguration.loadConfiguration(playersfile);
List<String> list = players.getStringList("players");
if(list.isEmpty()) list = new ArrayList<String>();
list.add(target.getName());

players.set("players", list);
try {
players.save(playersfile);
} catch (IOException e1) {
e1.printStackTrace();
}
return true;
}
}
Можно получить папку плагина через this.getDataFolder();
а ещё можно использовать BKCommonLib в таких целях.
Вот примерчик из доки.


Код:
FileConfiguration players = new FileConfiguration(this, "players.yml");
if(players.exists()) {
  players.load();
} else {
  players.set("peremennaya","default_value_1");
}

UPD: Объясню, почему this.getDataFolder(); лучше, хотя бы, потому, что если ты решишь поменять название плагина в plugin.yml - папка будет называться по другому и твой путь сойдёт ко дну без этого метода. Да и удобней просто.
 
Последнее редактирование:
Можно получить папку плагина через this.getDataFolder();
а ещё можно использовать BKCommonLib в таких целях.
Вот примерчик из доки.


Код:
FileConfiguration players = new FileConfiguration(this, "players.yml");
if(players.exists()) {
  players.load();
} else {
  players.set("peremennaya","default_value_1");
}

UPD: Объясню, почему this.getDataFolder(); лучше, хотя бы, потому, что если ты решишь поменять название плагина в plugin.yml - папка будет называться по другому и твой путь сойдёт ко дну без этого метода. Да и удобней просто.
Быстрее так YamlConfiguration.loadConfiguration(this.file); Не требует поверку на существование файла. Все само.
 
Быстрее так YamlConfiguration.loadConfiguration(this.file); Не требует поверку на существование файла. Все само.
Возможно, но в таком случае, если файла нету оно скорее всего либо бросит исключение, либо отдаст null? В моём же случае, оно установит дефолтные значения для конфига.
 
Возможно, но в таком случае, если файла нету оно скорее всего либо бросит исключение, либо отдаст null? В моём же случае, оно установит дефолтные значения для конфига.
Неа, есть метод addDefault ну или get(key, default). И наличие файла не дает гарантии присутствие записи.
 
Наверное ты не то импортировал как я, попробуй
FileConfiguration players = org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(player);
Как то так.
 
Это для тех кому эта информация понадобится
 
Назад
Верх