Помогите Не создаётся конфиг и не записываются данные

Статус
Закрыто для дальнейших ответов.

EnderBro3D

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
EnderBro3D
После того как я создаю плагин и ввожу туда:
Код:
    public void onEnable() {
        saveConfig();
        if(!configfile.exists()) {
            try {
                configfile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        }
конфиг не создаётся, но после того как я ввожу
Код:
        config.options().copyDefaults(true);
всё проходит гладко. В чём может быть дело? P.S Раньше работало

Вторая ошибка с записью данных.
Дело в том что данные не записываются! Я пишу
Код:
config.set("test."+player.getName()+".health", player.getHealth());
P.S Код который выше это пример, у меня же:
Код:
config.set("Enabled", true);
ничего не записывается!

В консоль ничего не пишет.

----------------------------------
Может пригодится:
Код:
    FileConfiguration config = this.getConfig();
    File configfile = new File(getDataFolder() + File.separator + "config.yml");
 
saveDefaultConfig() кто то забыл...
 
Java:
    public void saveConfig(File file, FileConfiguration config) {
        try {
            config.save(file);
            config.load(file);
        } catch (IOException | InvalidConfigurationException e) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла.", ex);
        }
    }
 
Последнее редактирование:
Один метод, который поможет всем без исключения разобраться как же создавать конфиги, отличный от config.yml
Java:
/**
* Получение любого конфига в рабочей папке плагина. Если файла не
* существует, он будет создан.
*
* @param plugin ссылка на главный класс плагина
* @param configName название файла (пример: "misc.yml")
* @return YamlConfiguration файла.
*/
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
    File file = new File(plugin.getDataFolder(), configName);
    if (file.isDirectory()) {
        file.delete();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException ex) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
        }
        return new YamlConfiguration();
    }
    return YamlConfiguration.loadConfiguration(file);
}

Сохранять же такой конфиг можно с помощью YamlConfiguration#save(String):
Java:
YamlConfiguration yc = getConfig(this, "cache.yml");
yc.save("cache.yml");

Java:
    public void saveConfig(File file, FileConfiguration config) {
        try {
            config.save(file);
            config.load(file);
        } catch (IOException | InvalidConfigurationException e) {
            System.err.println(e);
        }
    }
НЕ используй *.println. Для этого есть логгеры. И e.printStackTrace() тоже не используй.
 
Один метод, который поможет всем без исключения разобраться как же создавать конфиги, отличный от config.yml
Java:
/**
* Получение любого конфига в рабочей папке плагина. Если файла не
* существует, он будет создан.
*
* @param plugin ссылка на главный класс плагина
* @param configName название файла (пример: "misc.yml")
* @return YamlConfiguration файла.
*/
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
    File file = new File(plugin.getDataFolder(), configName);
    if (file.isDirectory()) {
        file.delete();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException ex) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
        }
        return new YamlConfiguration();
    }
    return YamlConfiguration.loadConfiguration(file);
}

Сохранять же такой конфиг можно с помощью YamlConfiguration#save(String):
Java:
YamlConfiguration yc = getConfig(this, "cache.yml");
yc.save("cache.yml");

НЕ используй *.println. Для этого есть логгеры. И e.printStackTrace() тоже не используй.
Да я в курсе, сейчас там тож поправлю, это прост заготовка валялась дет в файлах.
 
Да я в курсе, сейчас там тож поправлю, это прост заготовка валялась дет в файлах.
Java:
    public void saveConfig(File file, FileConfiguration config) {
        try {
            config.save(file);
            config.load(file);
        } catch (IOException | InvalidConfigurationException e) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла.", ex);
        }
    }
Скопипастить купил, а безпалевность не купил? :D
 
Один метод, который поможет всем без исключения разобраться как же создавать конфиги, отличный от config.yml
Java:
/**
* Получение любого конфига в рабочей папке плагина. Если файла не
* существует, он будет создан.
*
* @param plugin ссылка на главный класс плагина
* @param configName название файла (пример: "misc.yml")
* @return YamlConfiguration файла.
*/
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
    File file = new File(plugin.getDataFolder(), configName);
    if (file.isDirectory()) {
        file.delete();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException ex) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
        }
        return new YamlConfiguration();
    }
    return YamlConfiguration.loadConfiguration(file);
}

Сохранять же такой конфиг можно с помощью YamlConfiguration#save(String):
Java:
YamlConfiguration yc = getConfig(this, "cache.yml");
yc.save("cache.yml");

НЕ используй *.println. Для этого есть логгеры. И e.printStackTrace() тоже не используй.
Java:
    public void saveConfig(File file, FileConfiguration config) {
        try {
            config.save(file);
            config.load(file);
        } catch (IOException | InvalidConfigurationException e) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла.", ex);
        }
    }
Спасибо, но что делать с config.set?
 
окей, попробую, я просто подумал что вы помогли с первым вопросом (как сохранять конфиг)
Ну я лично нечего не писал, так как ты не ответил на сообщение Derik и подумал, что ты ещё не пробовал что либо делать.
 
Один метод, который поможет всем без исключения разобраться как же создавать конфиги, отличный от config.yml
Java:
/**
* Получение любого конфига в рабочей папке плагина. Если файла не
* существует, он будет создан.
*
* @param plugin ссылка на главный класс плагина
* @param configName название файла (пример: "misc.yml")
* @return YamlConfiguration файла.
*/
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
    File file = new File(plugin.getDataFolder(), configName);
    if (file.isDirectory()) {
        file.delete();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException ex) {
            plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
        }
        return new YamlConfiguration();
    }
    return YamlConfiguration.loadConfiguration(file);
}

Сохранять же такой конфиг можно с помощью YamlConfiguration#save(String):
Java:
YamlConfiguration yc = getConfig(this, "cache.yml");
yc.save("cache.yml");

НЕ используй *.println. Для этого есть логгеры. И e.printStackTrace() тоже не используй.
Прошу прощения за нелепый вопрос, в Level.Warning выдаёт ошибку в слове Level, что надо импортировать? Я просто новичёк в создании плагинов.
 
Прошу прощения за нелепый вопрос, в Level.Warning выдаёт ошибку в слове Level, что надо импортировать? Я просто новичёк в создании плагинов.
Используй просто log.warn, или не пиши ничего вообще. На крайний случай можно через Bukkit.getConsoleSender()
 
Много тут профессионалов собралось. Я ещё хочу 1 вопрос задать, я сделал ли ошибку в моём плагине?
Код:
package ru.EnderBro3D.AntiAcc;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;


public class MainClass extends JavaPlugin implements Listener {
   
    //Configuration
    public YamlConfiguration users;
    public YamlConfiguration config;
   
    public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
        File file = new File(plugin.getDataFolder(), configName);
        if (file.isDirectory()) {
            file.delete();
        }
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException ex) {
                plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
            }
            return new YamlConfiguration();
        }
        return YamlConfiguration.loadConfiguration(file);
    }
   
    private MainClass instance;
   
    public MainClass instance() {
        return instance;
    }
   
   
   

    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        YamlConfiguration config = getConfig(this, "cache.yml");
        YamlConfiguration users = getConfig(this, "users.yml");
        try {
            users.save("users.yml");
            config.save("config.yml");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
   
    private void executeCommand (Player p, boolean console, String cmd){
        CommandSender sender = p;
        if (console) sender = getServer().getConsoleSender();
        getServer().dispatchCommand(sender, ChatColor.translateAlternateColorCodes('&', cmd.replaceAll("%player%", p.getName())));
    }
   
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        Player p = event.getPlayer();
        String pname = p.getName();
        String GetPlayerIP = p.getAddress().getHostName();
        if(users.getConfigurationSection("users").isConfigurationSection(GetPlayerIP)) {
            if(users.getConfigurationSection("users."+GetPlayerIP).isConfigurationSection("ownerIP")) {
                String owner = users.getString("users."+GetPlayerIP+".ownerIP");
                if(owner == pname) {
                    p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы проверен на мульти акк. Результат = \u00a7aTRUE");
                } else {
                    String cmd = config.getString("Command");
                    String time = config.getString("Time");
                    String reason = config.getString("DefaultReason");
                    cmd = cmd.replace("<time>", time);
                    cmd = cmd.replace("<reason>", reason);
                    cmd = cmd.replace("<player>", p.getName());
                    executeCommand(p, true, cmd);
                }
            }
        }
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("antiacc")) {
            if(args.length == 0) {
                sender.sendMessage("<<<\u00a73AUTHOR: ENDERBRO3D\u00a7f>>>");
                sender.sendMessage(">\u00a7c/antiacc protect <\u00a7fenable/disable/status\u00a7c> \u00a7f- \u00a7eвключить/отключить/узнать статус защиты");
                return true;
            }
            if(args[0].equalsIgnoreCase("protect")) {
                if(args[1].equalsIgnoreCase("enable")) {
                    config.set("Enabled", true);
                    reloadConfig();
                    return true;
                }
                if(args[1].equalsIgnoreCase("disable")) {
                    config.set("Enabled", false);
                    reloadConfig();
                    return true;
                }
                if(args[1].equalsIgnoreCase("status")) {
                    boolean status = config.getBoolean("Enabled");
                    String StatusStr = "\u00a77Неизвестно";
                    if(status == true) {
                        StatusStr = "\u00a7aВключена";
                    }
                    if(status == false) {
                        StatusStr = "\u00a7cВыключена";
                    }
                    sender.sendMessage(">> \u00a7eЗащита " + StatusStr);
                }
            }
            return true;
        }
        return false;
    }
}
Смысл плагина: Защитить сервер от мультиакков. P.S Защита плохая но всё-же.
Если в данном коде ошибки?
 
Много тут профессионалов собралось. Я ещё хочу 1 вопрос задать, я сделал ли ошибку в моём плагине?
Код:
package ru.EnderBro3D.AntiAcc;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;


public class MainClass extends JavaPlugin implements Listener {
  
    //Configuration
    public YamlConfiguration users;
    public YamlConfiguration config;
  
    public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
        File file = new File(plugin.getDataFolder(), configName);
        if (file.isDirectory()) {
            file.delete();
        }
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException ex) {
                plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
            }
            return new YamlConfiguration();
        }
        return YamlConfiguration.loadConfiguration(file);
    }
  
    private MainClass instance;
  
    public MainClass instance() {
        return instance;
    }
  
  
  

    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        YamlConfiguration config = getConfig(this, "cache.yml");
        YamlConfiguration users = getConfig(this, "users.yml");
        try {
            users.save("users.yml");
            config.save("config.yml");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
  
    private void executeCommand (Player p, boolean console, String cmd){
        CommandSender sender = p;
        if (console) sender = getServer().getConsoleSender();
        getServer().dispatchCommand(sender, ChatColor.translateAlternateColorCodes('&', cmd.replaceAll("%player%", p.getName())));
    }
  
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        Player p = event.getPlayer();
        String pname = p.getName();
        String GetPlayerIP = p.getAddress().getHostName();
        if(users.getConfigurationSection("users").isConfigurationSection(GetPlayerIP)) {
            if(users.getConfigurationSection("users."+GetPlayerIP).isConfigurationSection("ownerIP")) {
                String owner = users.getString("users."+GetPlayerIP+".ownerIP");
                if(owner == pname) {
                    p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы проверен на мульти акк. Результат = \u00a7aTRUE");
                } else {
                    String cmd = config.getString("Command");
                    String time = config.getString("Time");
                    String reason = config.getString("DefaultReason");
                    cmd = cmd.replace("<time>", time);
                    cmd = cmd.replace("<reason>", reason);
                    cmd = cmd.replace("<player>", p.getName());
                    executeCommand(p, true, cmd);
                }
            }
        }
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("antiacc")) {
            if(args.length == 0) {
                sender.sendMessage("<<<\u00a73AUTHOR: ENDERBRO3D\u00a7f>>>");
                sender.sendMessage(">\u00a7c/antiacc protect <\u00a7fenable/disable/status\u00a7c> \u00a7f- \u00a7eвключить/отключить/узнать статус защиты");
                return true;
            }
            if(args[0].equalsIgnoreCase("protect")) {
                if(args[1].equalsIgnoreCase("enable")) {
                    config.set("Enabled", true);
                    reloadConfig();
                    return true;
                }
                if(args[1].equalsIgnoreCase("disable")) {
                    config.set("Enabled", false);
                    reloadConfig();
                    return true;
                }
                if(args[1].equalsIgnoreCase("status")) {
                    boolean status = config.getBoolean("Enabled");
                    String StatusStr = "\u00a77Неизвестно";
                    if(status == true) {
                        StatusStr = "\u00a7aВключена";
                    }
                    if(status == false) {
                        StatusStr = "\u00a7cВыключена";
                    }
                    sender.sendMessage(">> \u00a7eЗащита " + StatusStr);
                }
            }
            return true;
        }
        return false;
    }
}
Смысл плагина: Защитить сервер от мультиакков. P.S Защита плохая но всё-же.
Если в данном коде ошибки?
Вместо private Main instace пиши public static Main instance. Вряд ли это будет хорошей защитой, ибо у многих людей динамический IP, так же это реализовано в AuthMe
 
Вместо private Main instace пиши public static Main instance. Вряд ли это будет хорошей защитой, ибо у многих людей динамический IP, так же это реализовано в AuthMe
Я просто тренеруюсь. Вдруг я создам сервер для друзей без плагинов (кроме моего), а они начнут тролить "О СМАРИ КОКОЙТА ЧУВАК ВАШЁЛ!"
 
Еще интересно, как ты заносишь туда нового игрока?
 
Вместо private Main instace пиши public static Main instance. Вряд ли это будет хорошей защитой, ибо у многих людей динамический IP, так же это реализовано в AuthMe
Вот так?

Код:
    public static MainClass instance;
   
    public MainClass instance() {
        return instance;
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх