Help With Hashmaps.

Discussion in 'Plugin Development' started by GeorgeeeHD, Dec 27, 2013.

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

    GeorgeeeHD

    I need to store a players name in a hashmap, or something similar when a command is performed. Then in another command, it gets this players name and returns it to a different player. e.g GeorgeeeHD types /1v1 Jeb_
    It stores GeorgeeeHD's name in a variable, then Jeb_ types /1v1 accept [Person who sent request] and if the player has sent a request, it sends the original sender(GeorgeeeHD) a message saying Jeb_ accepted.
     
  2. Offline

    Not2EXceL

    store the hashmap as:
    requested, requestee
    and upon accept check and remove if it exists
     
  3. Offline

    Dread9Nought

    very very very old code. please ignore the bad naming and spacing - but it does it's job.

    Code:java
    1. package dread9nought.Main;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5. import java.util.List;
    6. import java.util.Map.Entry;
    7.  
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.entity.Player;
    10.  
    11. public class GameEngine
    12. {
    13. //Player1(asked to dual) Player2(target)
    14. public static HashMap<Player, Player> PendingRequests = new HashMap<Player, Player>();
    15. public static List<Arena> Battles = new ArrayList<Arena>();
    16.  
    17. public static void RequestDual(Player player, Player player2)
    18. {
    19. boolean remove = false;
    20. for(Entry<Player, Player> entry : PendingRequests.entrySet())
    21. {
    22. if (entry.getKey().getName().equalsIgnoreCase(player.getName())) {
    23. remove = true;
    24. break;
    25. }
    26. }
    27. if (remove)
    28. RemovePending(player);
    29. PendingRequests.put(player, player2);
    30. player.sendMessage(Messages.Prefix + "You have requested to duel "+ChatColor.BLUE+player2.getName());
    31. player2.sendMessage(Messages.Prefix + ChatColor.BLUE+player.getName()+ChatColor.DARK_AQUA + " has requested to duel!");
    32. }
    33. public static void AcceptDual(Player player)
    34. {
    35. boolean remove = false;
    36. Player key = null;
    37. for(Entry<Player, Player> entry : PendingRequests.entrySet())
    38. {
    39. if (entry.getValue().getName().equalsIgnoreCase(player.getName())) {
    40. remove = true;
    41. key = entry.getKey();
    42. break;
    43. }
    44. }
    45. if (key == null)
    46. {
    47. player.sendMessage(Messages.Prefix + "You have no duel request");
    48. return;
    49. }
    50. if (!key.isOnline()) {
    51. RemovePending(key);
    52. RemovePending(player);
    53. player.sendMessage(Messages.Prefix + "Your duel requester has since logged off!");
    54. return;
    55. }
    56. if (remove) {
    57. RemovePending(key);
    58. RemovePending(player);
    59. }
    60. Map target = MapEngine.getMap();
    61. if (target != null) {
    62. Arena arena = new Arena(target);
    63. arena.player1 = key;
    64. arena.player2 = player;
    65.  
    66. key.sendMessage(Messages.Prefix + ChatColor.BLUE+player.getName() + ChatColor.DARK_AQUA + " has accepted your duel!");
    67. player.sendMessage(Messages.Prefix + "You have accepted to duel "+ChatColor.BLUE+key.getName());
    68.  
    69. arena.player1.teleport(arena.map.FirstSpawn);
    70. arena.player2.teleport(arena.map.SecondSpawn);
    71.  
    72. Battles.add(arena);
    73. }
    74. else
    75. {
    76. key.sendMessage(Messages.Prefix + ChatColor.DARK_AQUA + "Unable to duel! No maps are free! :(");
    77. player.sendMessage(Messages.Prefix + ChatColor.DARK_AQUA + "Unable to duel! No maps are free! :(");
    78. RemovePending(key);
    79. RemovePending(player);
    80. }
    81. }
    82. public static void DeclineDual(Player player)
    83. {
    84. boolean remove = false;
    85. Player key = null;
    86. for(Entry<Player, Player> entry : PendingRequests.entrySet())
    87. {
    88. if (entry.getValue().getName().equalsIgnoreCase(player.getName())) {
    89. remove = true;
    90. key = entry.getKey();
    91. break;
    92. }
    93. }
    94. if (key == null)
    95. {
    96. player.sendMessage(Messages.Prefix + "You have no duel request");
    97. return;
    98. }
    99. if (!key.isOnline()) {
    100. RemovePending(key);
    101. RemovePending(player);
    102. player.sendMessage(Messages.Prefix + "Your duel requester has since logged off!");
    103. return;
    104. }
    105. if (remove) {
    106. RemovePending(key);
    107. RemovePending(player);
    108. }
    109. key.sendMessage(Messages.Prefix + "Your duel request was declined");
    110. player.sendMessage(Messages.Prefix + "Duel request declined");
    111. }
    112. public static boolean inGame(Player player){
    113. for(Arena arena : Battles) {
    114. if (arena.inGame(player))
    115. return true;
    116. }
    117. return false;
    118. }
    119. public static Arena getGame(Player player) {
    120. for(Arena arena : Battles) {
    121. if (arena.inGame(player))
    122. return arena;
    123. }
    124. return null;
    125. }
    126. public static void RemovePending(Player player) {
    127. if (PendingRequests.containsKey(player))
    128. PendingRequests.remove(player);
    129. }
    130. }
    131.  
     
Thread Status:
Not open for further replies.

Share This Page