package tv.mineinthebox.essentials.events.players;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.managers.TeleportManager;
public class TeleportBackEvent implements Listener {
private final xEssentials pl;
private final TeleportManager manager;
public TeleportBackEvent(xEssentials pl) {
this.pl = pl;
this.manager = pl.getManagers().getTeleportManager();
}
@EventHandler
public void onBackEvent(PlayerTeleportEvent e) {
if(e.getCause() == TeleportCause.COMMAND || e.getCause() == TeleportCause.PLUGIN) {
if(manager.hasLastLocation(e.getPlayer().getName())) {
manager.removeLastLocationData(e.getPlayer().getName());
manager.addLastLocation(e.getPlayer().getName(), e.getFrom());
RemoveBack(e.getPlayer().getName());
} else {
manager.addLastLocation(e.getPlayer().getName(), e.getFrom());
RemoveBack(e.getPlayer().getName());
}
}
}
private void RemoveBack(final String key) {
Bukkit.getScheduler().scheduleSyncDelayedTask(pl, new Runnable() {
@Override
public void run() {
if(manager.hasLastLocation(key)) {
manager.removeLastLocationData(key);
}
}
}, 5000);
}
@EventHandler
public void onQuit(PlayerQuitEvent e) {
if(manager.hasLastLocation(e.getPlayer().getName())) {
manager.removeLastLocationData(e.getPlayer().getName());
}
}
@EventHandler
public void onQuit(PlayerKickEvent e) {
if(manager.hasLastLocation(e.getPlayer().getName())) {
manager.removeLastLocationData(e.getPlayer().getName());
}
}
}