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

LalkaLalka

Новичок
Пользователь
Баллы
11
Имя в Minecraft
LALKATOP
У меня есть плагин, который при входе игрока запускает runTaskTimer(...), мне нужно сделать, чтобы при выходе игрока, он останавливался именно для этого игрока, как это сделать и можно ли вообще?
 
Что пишет что не пишет?
Урааааааааааааааааааааааааааааааааааа оно работает!!! наконец-то!!!!! Огромнейшее тебе спасибо, я уже правда незнал что делать. Ты мне очень помог!
 
Писец он тупой. Все готовое же выдал. Осталось только собрать.
Код:
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());
    }
}
 
Последнее редактирование:
Писец он тупой. Все готовое же выдал. Осталось только собрать.
Код:
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().add(e.getPlayer());
    }
}
Ты опоздал, братан)
 
Писец он тупой. Все готовое же выдал. Осталось только собрать.
Код:
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().add(e.getPlayer());
    }
}
Опечатка при выходе
 
Код:
new BukkitRunnable(() -> {
//Твой таск
int i = 0;
i++;
System.out.println(i);
this.cancel(); // Остановка таска
}).runTask(plugin);
 
Назад
Верх