package dk.thoerup.bukkit.hoeruputils; import java.util.HashMap; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.Plugin; public class WayPoint implements CommandExecutor, Listener { Plugin plugin; HashMap waypoints = new HashMap(); public WayPoint(Plugin plugin) { this.plugin = plugin; } @Override public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { return false; } final Player p = (Player) sender; String name = p.getName(); if ( command.getName().equals("waypoint") ) { tpUser(p, name); } if (command.getName().equals("setwaypoint") ) { Location loc = p.getLocation().clone(); waypoints.put(name, loc); p.sendMessage("Waypoint is set"); } return true; } private void tpUser(final Player p, String name) { final Location loc = waypoints.get(name); if (loc != null) { Runnable r = new Runnable() { public void run() { p.teleport(loc); } }; int tickCount = 2; // 2 ticks = 100ms p.getServer().getScheduler().scheduleSyncDelayedTask(plugin, r, tickCount); } else { p.sendMessage(ChatColor.YELLOW + "You don't have an active waypoint"); } } @EventHandler public void onPlayerQuit(PlayerQuitEvent e) { Player p = e.getPlayer(); if (waypoints.containsKey( p.getName() )) { waypoints.remove( p.getName() ); } } }