commit
615da55a31
|
@ -1,8 +1,6 @@
|
||||||
package net.jitse.npclib.listeners;
|
package net.jitse.npclib.listeners;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import net.jitse.npclib.NPCLib;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -11,38 +9,42 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import net.jitse.npclib.NPCLib;
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PeriodicMoveListener extends HandleMoveBase implements Listener {
|
public class PeriodicMoveListener extends HandleMoveBase implements Listener {
|
||||||
|
|
||||||
private final NPCLib instance;
|
private final NPCLib instance;
|
||||||
private final long updateInterval;
|
private final long updateInterval;
|
||||||
|
|
||||||
private final HashMap<UUID, BukkitTask> tasks = new HashMap<>();
|
private final HashMap<UUID, BukkitTask> tasks = new HashMap<>();
|
||||||
|
|
||||||
public PeriodicMoveListener(NPCLib instance, long updateInterval) {
|
public PeriodicMoveListener(NPCLib instance, long updateInterval) {
|
||||||
this.instance = instance;
|
this.instance = instance;
|
||||||
this.updateInterval = updateInterval;
|
this.updateInterval = updateInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startTask(UUID uuid) {
|
private void startTask(UUID uuid) {
|
||||||
// purposefully using UUIDs and not holding player references
|
// purposefully using UUIDs and not holding player references
|
||||||
tasks.put(uuid, Bukkit.getScheduler().runTaskTimer(instance.getPlugin(), () -> {
|
tasks.put(uuid, Bukkit.getScheduler().runTaskTimer(instance.getPlugin(), () -> {
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
if (player != null) { // safety check
|
if (player != null) { // safety check
|
||||||
handleMove(player);
|
handleMove(player);
|
||||||
}
|
}
|
||||||
}, 1L, updateInterval));
|
}, 1L, updateInterval));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent evt) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
startTask(evt.getPlayer().getUniqueId());
|
startTask(event.getPlayer().getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerQuit(PlayerQuitEvent evt) {
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
tasks.remove(evt.getPlayer().getUniqueId()).cancel();
|
BukkitTask task = tasks.remove(event.getPlayer().getUniqueId());
|
||||||
}
|
if (task != null) {
|
||||||
|
task.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue