Teleport request plugin help! [/tpa]

Discussion in 'Plugin Development' started by MineDoubleSpace, Sep 1, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    MineDoubleSpace

    I been trying to make teleport request plugin, just like in the Essentials. /tpa sends a teleport request to an target player and if target do /tpaccept the player gets teleported to them.

    I did some work and it was a complete failure.

    Code:java
    1. public HashMap<Player, Player> tpa = new HashMap<Player, Player>();
    2.  
    3. if (cmd.getName().equalsIgnoreCase("tpa")){
    4. Player target = Bukkit.getPlayer(args[0]);
    5. tpa.put(player, target);
    6. tpaccept.put(target, player);
    7. target.sendMessage(ChatColor.GOLD + "You have a teleport request from " + ChatColor.AQUA + player.getName());
    8.  
    9.  
    10. }if (cmd.getName().equalsIgnoreCase("tpaccept")){
    11. String target2 = tpa.get(player).getName();
    12. Player target3 = Bukkit.getPlayer(target2);
    13. target3.teleport(???);
    14.  
    15. }


    Please help me! Thanks!
     
  2. Offline

    CraftingRealm

    MineDoubleSpace
    Create a class called TpPlayer or something with the fields Player (the Bukkit player coordinating with that TpPlayer) and a TpPlayer field which you set to null by default and will be the player which is requesting tp. When a player joins, assign them a TpPlayer and save all the TpPlayers in an ArrayList. I'm not the best at explaining so just try something like this...
    Code:java
    1. // Main class
    2. public ArrayList<TpPlayer> tpPlayers = new ArrayList<TpPlayer>();
    3. public TpPlayer getTpPlayer(Player player) {
    4. for (TpPlayer p : tpPlayers) {
    5. if (p.getPlayer().equals(player))
    6. return p;
    7. }
    8. return null;
    9. }
    10.  
    11. // commands
    12. if (cmd.getName().equalsIgnoreCase("tpa")) {
    13. if (getTpPlayer(Bukkit.getPlayer(args[0])) != null) {
    14. TpPlayer player = getTpPlayer((Player) sender);
    15. TpPlayer target = getTpPlayer(Bukkit.getPlayer(args[0]));
    16. player.setSelfMove(true);
    17. target.setSelfMove(false);
    18. player.setSelfAccept(false);
    19. target.setSelfAccept(true);
    20. player.setOtherPlayer(target);
    21. target.setOtherPlayer(player);
    22. // tell player request was sent
    23. // tell target they have an incoming request from player
    24. } else {
    25. // tell sender the target is not in the game
    26. }
    27. } else if (cmd.getName().equalsIgnoreCase("tpaccept")) {
    28. if (getTpPlayer((Player) sender).isSelfAccept()) {
    29. TpPlayer target = getTpPlayer((Player) sender);
    30. TpPlayer player = getTpPlayer(Bukkit.getPlayer(args[0]));
    31. player.getPlayer().teleport(target.getPlayer());
    32. target.setSelfAccept(false);
    33. }
    34. }
    35.  
    36. // class where your events are registered to
    37. @EventHandler
    38. public void onPlayerJoin(PlayerJoinEvent e) {
    39. tpPlayers.add(new TpPlayer(e.getPlayer()));
    40. }
    41. @EventHandler
    42. public void onPlayerQuit(PlayerQuitEvent e) {
    43. tpPlayers.remove(getTpPlayer(e.getPlayer()));
    44. }
    45.  
    46. //new class TpPlayer
    47. private Player player;
    48. private boolean selfMove;
    49. private TpPlayer otherPlayer;
    50. private boolean selfAccept;
    51. public TpPlayer(Player p) {
    52. player = p;
    53. otherPlayer = null;
    54. selfMove = false;
    55. selfAccept = false;
    56. }
    57. public void setSelfMove(boolean b) {
    58. selfMove = b;
    59. }
    60. public void setSelfAccept(boolean b) {
    61. selfAccept = b;
    62. }
    63. public boolean isSelfMove() {
    64. return selfMove;
    65. }
    66. public boolean isSelfAccept() {
    67. return selfAccept;
    68. }
    69. public void setOtherPlayer(TpPlayer p) {
    70. otherPlayer = p;
    71. }
    72. public Player getPlayer() {
    73. return player;
    74. }
    75. public TpPlayer getOtherPlayer() {
    76. return otherPlayer;
    77. }

    I know it looks complicated but if you copy it all to the right place it should work though I never tested it.
     
Thread Status:
Not open for further replies.

Share This Page