Войти или зарегистрироваться

Помогите Перезагрузка плагина

  • Автор темы Автор темы Rbiter
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Rbiter

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Rbiter
Что за прикол? При перезагрузке через /stop или /restart все изменения в конфиге сохраняются. При попытке перезагрузить только плагин, командой иди плагином plugman значение конфига возвращается до того которое было после перезагрузки сервера...

код класса cfg.java

JavaScript:
public class cfg implements Listener{
 
    nexgame ng;
 
    public static void cfgLoad(){
        nexgame.Prefix = nexgame.config.getString("Prefix", "&7[&dNex&2Game&7]");
        nexgame.MOTDenb = nexgame.config.getBoolean("MOTD.Enable", true);
        nexgame.MOTDString = nexgame.config.getString("MOTD.String", "%Prf% server");
    }
 
    public static void cfgSave(){
        nexgame.config.set("Prefix", nexgame.Prefix);
        nexgame.config.set("MOTD.Enable", Boolean.valueOf(nexgame.MOTDenb));
        nexgame.config.set("MOTD.String", nexgame.MOTDString);
    }
}

код главного класса:


JavaScript:
public class nexgame extends JavaPlugin implements Listener {

    public static String Prefix;
    public static boolean MOTDenb;
    public static String MOTDString;
    public static FileConfiguration config;
    Logger log = Logger.getLogger("Minecraft");

    nexgame ng;

    public void onEnable() {
        this.config = this.getConfig();
        this.getServer().getPluginManager().registerEvents(this, this);
        this.getServer().getPluginManager().registerEvents(new cfg(), this);
        this.getServer().getPluginManager().registerEvents(new SrvEvent(), this);
        this.getServer().getPluginManager().registerEvents(new CmdEvent(), this);
        cfg.cfgLoad();
        cfg.cfgSave();
        this.saveConfig();
    }

    public void onDisable() {
        this.saveConfig();
    }

}
 
Зачем под конфиг выделять вообще отдельный класс? И классы с маленькой буквы не называют.
 
Зачем под конфиг выделять вообще отдельный класс?
Вопрос удобства. Я вот выделяю, пишу методы чтения/записи/обновления структуры/верификации и другие плюшки для себя.
Другое дело, что у ТС-а реализация какая-то кривоватая...
И классы с маленькой буквы не называют.
+
Что за прикол? При перезагрузке через /stop или /restart все изменения в конфиге сохраняются. При попытке перезагрузить только плагин, командой иди плагином plugman значение конфига возвращается до того которое было после перезагрузки сервера...
А какой командой? Не пользуюсь plugman (использую вот этот), всё ли он делает правильно? Я имею ввиду, вызывает ли он onDisable у плагина? Перезагрузка мягкая (disable + enable) или полная (ещё одна загрузка кода в память с созданием новых экземпляров объектов)?

Ты уверен, что есть реальная необходимость сохранять из плагина данные? Может быть просто перечитывать их в onEnable, и хватит?
 
Вопрос удобства. Я вот выделяю, пишу методы чтения/записи/обновления структуры/верификации и другие плюшки для себя.
Другое дело, что у ТС-а реализация какая-то кривоватая...
+
А какой командой? Не пользуюсь plugman (использую вот этот), всё ли он делает правильно? Я имею ввиду, вызывает ли он onDisable у плагина? Перезагрузка мягкая (disable + enable) или полная (ещё одна загрузка кода в память с созданием новых экземпляров объектов)?

Ты уверен, что есть реальная необходимость сохранять из плагина данные? Может быть просто перечитывать их в onEnable, и хватит?
Мне нужно что бы после перезагрузки плагина изменялась надпись в MOTD

JavaScript:
    @EventHandler
    public void onPing(ServerListPingEvent event) {
        // event.setMotd(ChatColor.translateAlternateColorCodes('&', MOTD));
        if (nexgame.MOTDenb = nexgame.config.getBoolean("MOTD.Enable", true)){
            ng.MOTDString = ng.MOTDString.replace("%Prf%", ng.Prefix);
            event.setMotd(ChatColor.translateAlternateColorCodes('&', ng.MOTDString));
        }
    }
те в конфиге ставлю
MOTD
String "Надпись"
Перезагружаю плагин и в MOTD было написано "Надпись"
Без перезагрузки сервера сделать не получается((


Зачем под конфиг выделять вообще отдельный класс? И классы с маленькой буквы не называют.
Пробовал в одном классе все делать, в этоге все становилось оч непонятным да же с комментариями... В то время как когда все в отдельных классах - удобно и всегда можно вернутся в нужный участок кода)
По поводу имени класса. А какая разница? О_о с большой или маленькой буквы? Прост частенько класс с маленькой называю)
Другое дело, что у ТС-а реализация какая-то кривоватая...
За последние неск дней я понял что такая реализация конфига наиболее работоспособная)
 
По поводу имени класса. А какая разница? О_о с большой или маленькой буквы? Прост частенько класс с маленькой называю)
Ну так просто принято, это базовые основы стиля кода на Java. Конечно, и так будет компилироваться. У меня компилируется даже с кириллическими названиями переменных :)
За последние неск дней я понял что такая реализация конфига наиболее работоспособная)
Посмотри, например, мою. Авось что-то пригодится.
те в конфиге ставлю
MOTD
String "Надпись"
Перезагружаю плагин и в MOTD было написано "Надпись"
Без перезагрузки сервера сделать не получается((
Смотри, что происходит:
  1. Сервер запускается, загружается плагин, считывает строку MOTD из конфига (например, "hello, mc world!"). Это значение хранится в переменной config, доступной в плагине plugin.getConfig().
  2. Ты правишь руками конфиг, меняя MOTD, например, на "It is good day today!".
  3. Запускаешь reload плагину, plugman или что-то другое вызывает у плагина onDisable. Посмотри, у тебя в нём saveConfig() -- ты сохраняешь то, что в памяти, обратно в файл. А в памяти у тебя старая строка.
  4. Плагин выключен, запускается вновь — и считывает старую-новую строку.
Вероятно, решением для тебя будет просто удалить saveConfig() из onDisable().
 
Ну так просто принято, это базовые основы стиля кода на Java. Конечно, и так будет компилироваться. У меня компилируется даже с кириллическими названиями переменных :)
И так можно? О_О Над попробовать :D
Посмотри, например, мою. Авось что-то пригодится.
Люблю полазить в чужом коде :D Многое ясно становится))) Спасиб)
Вероятно, решением для тебя будет просто удалить saveConfig() из onDisable().
Кстати надо попробовать)
Ну так просто принято, это базовые основы стиля кода на Java. Конечно, и так будет компилироваться. У меня компилируется даже с кириллическими названиями переменных :)
Посмотри, например, мою. Авось что-то пригодится.
Смотри, что происходит:
  1. Сервер запускается, загружается плагин, считывает строку MOTD из конфига (например, "hello, mc world!"). Это значение хранится в переменной config, доступной в плагине plugin.getConfig().
  2. Ты правишь руками конфиг, меняя MOTD, например, на "It is good day today!".
  3. Запускаешь reload плагину, plugman или что-то другое вызывает у плагина onDisable. Посмотри, у тебя в нём saveConfig() -- ты сохраняешь то, что в памяти, обратно в файл. А в памяти у тебя старая строка.
  4. Плагин выключен, запускается вновь — и считывает старую-новую строку.
Вероятно, решением для тебя будет просто удалить saveConfig() из onDisable().
О.О Работает) спасибо)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх