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

Помогите Как остановить определенный Task в BukkitScheduler?

Тема в разделе "Разработка плагинов для новичков", создана пользователем LalkaLalka, 24 июл 2019.

  1. Detfor

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

    Баллы:
    61
    Имя в Minecraft:
    Detfor
    Я допустил ошибку, сейчас смотрю как сработает
     
  2. Detfor

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

    Баллы:
    61
    Имя в Minecraft:
    Detfor
    Урааааааааааааааааааааааааааааааааааа оно работает!!! наконец-то!!!!! Огромнейшее тебе спасибо, я уже правда незнал что делать. Ты мне очень помог!
     
  3. alexandrage

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

    Баллы:
    173
    Писец он тупой. Все готовое же выдал. Осталось только собрать.
    Код:
    package Blank;
    
    import org.bukkit.plugin.java.JavaPlugin;
    import Blank.events.EventListener;
    import Blank.task.PlayerTask;
    
    public class Main extends JavaPlugin {
        private PlayerTask playerTask;
     
        @Override
        public void onEnable() {;
            this.playerTask = new PlayerTask(this);
            this.getServer().getPluginManager().registerEvents(new EventListener(this), this);
        }
     
        public PlayerTask getPlayerTask() {
            return this.playerTask;
        }
    }
    Код:
    package Blank.task;
    
    import java.util.HashMap;
    import java.util.Map;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class PlayerTask extends BukkitRunnable {
    
        private Map<Player, Integer> map = new HashMap<Player, Integer>();
        private int coinPeriod;
        private Plugin plugin;
    
        public PlayerTask(Plugin plugin) {
            this.plugin = plugin;
            this.coinPeriod = this.plugin.getConfig().getInt("income");
            this.runTaskTimer(this.plugin, 1, 1);
        }
    
        public void add(Player player) {
            this.map.put(player, 0);
        }
    
        public void remove(Player player) {
            this.map.remove(player);
        }
    
        @Override
        public void run() {
            this.map.forEach((player, period) -> {
                if (period < this.coinPeriod) {
                    this.map.put(player, period++);
                } else {
                    this.map.put(player, 0);
                    // TODO Commands.giveMoney(player.getName(), inc);
                }
            });
        }
    }
    Код:
    package Blank.events;
    
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    
    import Blank.Main;
    
    public class EventListener implements Listener {
    
        private Main plugin;
    
        public EventListener(Main plugin) {
            this.plugin = plugin;
        }
    
        @EventHandler
        public void on(PlayerJoinEvent e) {
            this.plugin.getPlayerTask().add(e.getPlayer());
        }
    
        @EventHandler
        public void on(PlayerQuitEvent e) {
            this.plugin.getPlayerTask().remove(e.getPlayer());
        }
    }
     
    Последнее редактирование: 24 июл 2019
  4. Energy warrior

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

    Баллы:
    76
    Ты опоздал, братан)
     
  5. Lemar98

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

    Баллы:
    76
    Опечатка при выходе
     
  6. alexandrage

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

    Баллы:
    173
    Ага.
     
  7. Luminate_

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

    Баллы:
    76
    Имя в Minecraft:
    Luminate_
    Код:
    new BukkitRunnable(() -> {
    //Твой таск
    int i = 0;
    i++;
    System.out.println(i);
    this.cancel(); // Остановка таска
    }).runTask(plugin);
     

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