1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Не работает таймер

Тема в разделе "Разработка плагинов для новичков", создана пользователем EvilBeaver, 30 дек 2018.

  1. Автор темы
    EvilBeaver

    EvilBeaver Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    reker2050
    PHP:
    package SCP_autosave;
    import java.util.logging.Logger;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitRunnable;
    import org.bukkit.configuration.file.FileConfiguration;

    public final class 
    SCP_autosave extends JavaPlugin implements Listener {
        protected 
    FileConfiguration config;
        
    Logger log getLogger();
        
        
    int time 1*60*20;
        
        
    BukkitRunnable runnable = new BukkitRunnable() {
            @
    Override
             
    public void run() {
                
    getServer().broadcastMessage(ChatColor.RED+"Автосохранение...");
                
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "save-all");
                
    getServer().broadcastMessage(ChatColor.GREEN+"Завершено!");
             }
        };
        
        @
    Override
        
    public void onEnable() {
            
    getServer().getPluginManager().registerEvents(thisthis);
            
    log.info("Started");
            
    getServer().broadcastMessage("[SCP_autosave] Start");
            
    config getConfig();
            
    runnable.runTaskTimer(this0time);
            
    runnable.cancel();
        }
        
        @
    Override
        
    public void onDisable() {
            
    getServer().getPluginManager().registerEvents(thisthis);
            
    saveConfig();
        }
        
        public 
    boolean onCommand(CommandSender sCommand cmdString labelString args[]) {
            if(
    cmd.getName().equalsIgnoreCase("autosave_start")) {
                
    s.sendMessage(ChatColor.GREEN+"[SCP_autosave] Автосохранение запущено");
                
    runnable.run();
                return 
    true;
            }else if(
    cmd.getName().equalsIgnoreCase("autosave_stop")) {
                
    runnable.cancel();
                
    s.sendMessage(ChatColor.GREEN+"[SCP_autosave] Автосохранение остановлено");
                return 
    true;
            }
    /*else if(cmd.getName().equalsIgnoreCase("autosave_time")) {
                if (args.length == 1) {
                    getServer().broadcastMessage(ChatColor.GREEN+"[SCP_autosave] Интервал автосохранения задан ("+args[0]+")!");
                    time = 20*Integer.parseInt(args[0]);
                    config.set("autosave_time", args[0]);
                    return true;
                }else {
                    s.sendMessage(ChatColor.RED+"[SCP_autosave] Невероное количество аргументов для команды!");
                    return true;
                }
            }*/
            
    return false;
        }
    }

    При команде /autosave_start один раз выполняется сохранение карты, и всё.
    При попытке запустить таймер еще раз - снова сохранение (хотя обычно ругается на повторный запуск одного и того же таймера).
    Что делать?
    Заранее спасибо!
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Велик на встроенный автосейв ведра?
    [​IMG]
     
  3. Автор темы
    EvilBeaver

    EvilBeaver Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    reker2050
    Встроенный нельзя включать и выключать одной командой, увы.
    Я знаю о существовании встроенной функции, но считаю, что моя (когда она еще работала) несколько надёжнее.
    Бро, а на счет кода ничего не можешь сказать?
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    А зачем выключать то? Чтоб просрать карту при краше?
     
  5. EnderBro3D

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Ты просто запускаешь runnable(runnable.run()), а надо как таймер: runnable.runTaskTimer();
     
  6. Автор темы
    EvilBeaver

    EvilBeaver Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    reker2050
    Так я его запускаю именно так, потом приостанавливаю. При необходимости (по команде) запускаю и приостанавливаю таймер.

    Ты в код плохо смотрел
     

Поделиться этой страницей