Code:java if (cmd.getName().equalsIgnoreCase("tpa")) { if (args.length == 0) { p.sendMessage(ChatColor.RED + "Vennligst skriv inn en spiller."); return true; } Player target = Bukkit.getServer().getPlayer(args[0]); if (target == null) { p.sendMessage(ChatColor.RED + "Kunne ikke finne spilleren " + args[0] + "!"); return true; } target.sendMessage(ChatColor.GREEN + " Ønsker å teleportere til deg, skriv /tpaccept for å godkjenne."); return true; }else if (cmd.getName().equalsIgnoreCase("tpaccept")) { Player target = Bukkit.getServer().getPlayer(args[0]); target.teleport(p.getLocation()); } Why won't this work?
How are you keeping track of who sent requests to who? For instance, what if I just joined your server and typed, /tpaccept with no requests, then what?
What should i do for keeping that information? 1Rogue Okey i tried hashmaps look at this: Code:java if (cmd.getName().equalsIgnoreCase("tpa")) {Player target = Bukkit.getServer().getPlayer(args[0]);Player requester = (Player)sender; if (args.length == 0) { requester.sendMessage(ChatColor.RED + "Vennligst skriv inn en spiller."); return true; } else if (args.length == 1) { final Player targetPlayer = requester.getServer().getPlayer(args[0]); requester.sendMessage(ChatColor.GREEN + "Forespørsel sendt..."); target.sendMessage(ChatColor.GREEN + sender.getName() + " Ønsker å teleportere til deg, skriv /tpaccept for å godkjenne."); this.tpa.put(targetPlayer, requester); return true; } }else if (cmd.getName().equalsIgnoreCase("tpaccept")) { Player player1 = (Player)sender; try { if (!this.tpa.containsKey(player1)) ((Player)this.tpa.get(player1)).teleport(player1); this.tpa.remove(player1); ((Player)this.tpa.get(player1)).sendMessage(ChatColor.GREEN + "Teleportert til " + ChatColor.GOLD + player1.getName().toString()); return true; } catch (Exception localException1) { } } EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Looks alright. The only things I would really key in on is that you want to be thread-safe, so either use synchronization on the map or use a ConcurrentHashMap. Also make sure you check the instanceof on the sender before casting it as a Player. Code:java Player p;if (sender instanceof Player) { p = (Player)sender;} else { return;}
It doesn't work when i type /tpaccept, i did some debuging, and it adds you to the hashmap successfully. But after that it just doesn't work, it doesn't teleport you.
Hm. try not casting Player to the object you get from the hashmap, and as a second thought, when you use .teleport try .teleport(player.getLocation()); and see if that has any effect.
This line: ((Player)this.tpa.get(player1)).sendMessage(ChatColor.GREEN + "Teleportert til " + ChatColor.GOLD + player1.getName().toString());