Solved Dueling Plugin help

Discussion in 'Plugin Development' started by jthort, Nov 11, 2013.

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

    jthort

    I'm having some trouble with a dueling plugin.
    - A player types /duel <name>
    - that player gets a message saying the player who requested him wants to duel
    - The player can do /duel accept to accept (I'm doing /duel deny later)
    - on /duel accept it sends both the players a message saying he accepted.



    Code:java
    1. if (args.length == 1) {
    2.  
    3. final Player target = Bukkit.getPlayerExact(args[0]);
    4. if (Bukkit.getServer().getPlayer(args[0]) != null){
    5. player.sendMessage("Duel request sent to " + args[0]);
    6.  
    7. target.sendMessage("Player " + player + " sent you a duel request, do /duel accept or /duel deny");
    8.  
    9.  
    10. }else{
    11. if(args[0].equalsIgnoreCase("accept")){
    12. //add somthing like if number = 1 then
    13.  
    14. }
    15.  
    16.  
    17. }
    18.  
    19. }


    This is what I have, can someone figure out a way to send both of them a message if the player does /duel accept. I hope this makes sense it was hard for me to explain the problem. I know I'm missing other stuff, so if you could just clean up this bit of code that would be great, if not it would be helpful if you can solve my initial problem.

    I'm new to programming and I realize this is simple coding, please don't criticize. Everyone starts somewhere.
     
  2. Offline

    Jake6177

    Can you add the full code, please? I need more than that.
     
  3. Offline

    jthort

    Code:java
    1. package me.Ian.Duel;
    2.  
    3.  
    4. import java.util.logging.Logger;
    5.  
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.plugin.PluginManager;
    13. import org.bukkit.plugin.java.JavaPlugin;
    14.  
    15. public class Duel extends JavaPlugin implements Listener {
    16. public final Logger logger = Logger.getLogger("Minecraft");
    17. public static Duel plugin;
    18.  
    19.  
    20.  
    21.  
    22. @Override
    23. public void onEnable(){
    24. logger.info("Automessage Enabled!eeeeeeeee");
    25. PluginManager pm = this.getServer().getPluginManager();
    26. pm.registerEvents(this, this);
    27.  
    28.  
    29.  
    30. }
    31. @Override
    32. public void onDisable(){
    33. logger.info("Ian's Automessager has been Disabled");
    34. }
    35.  
    36. int num = 0;
    37. int nums = 0;
    38. @Override
    39. public boolean onCommand(CommandSender sender, Command command, final String alias, final String[] args) {
    40. final Player player = (Player) sender;
    41.  
    42.  
    43. if (alias.equalsIgnoreCase("duel")) {
    44. if (args.length == 0) {
    45. player.sendMessage("Usage: /duel <player>");
    46. }
    47.  
    48.  
    49.  
    50. if (args.length == 1) {
    51.  
    52. final Player target = Bukkit.getPlayerExact(args[0]);
    53. if (Bukkit.getServer().getPlayer(args[0]) != null){
    54. player.sendMessage("Duel request sent to " + args[0]);
    55.  
    56. target.sendMessage("Player " + player + " sent you a duel request, do /duel accept or /duel deny");
    57.  
    58.  
    59. }else{
    60. if(args[0].equalsIgnoreCase("accept")){
    61.  
    62.  
    63. }
    64.  
    65.  
    66. }
    67.  
    68. }
    69. }
    70. return false;
    71.  
    72.  
    73. }
    74.  
    75.  
     
  4. Offline

    Xacero

    jthort
    Code:java
    1. HashMap<String, String> duel_requests = new HashMap<String, String>();
    2.  
    3. // in your command method
    4. if (args.length == 1) {
    5. if(args[0].equalsIgnoreCase("accept")) {
    6. if (!duel_requests.containsValue(player.getName())) {
    7. player.sendMessage(ChatColor.RED + "Nobody is requesting a duel from you");
    8. return true;
    9. }
    10. int index = 0;
    11. for (int i = 0 ; i < duel_requests.size(); i ++)
    12. if (duel_requests.get(i).equals(player.getName())) {
    13. index = i;
    14. break;
    15. }
    16. Player target = Bukkit.getServer().getPlayerExact(duel_requests.get(index));
    17. if (target == null) {
    18. player.sendMessage(ChatColor.RED + "That player is offline");
    19. duel_requests.remove(duel_requests.get(index));
    20. return true;
    21. }
    22. target.sendMessage(ChatColor.GREEN + player.getName() + " has accepted your duel!");
    23. player.sendMessage(ChatColor.GREEN + "You have accepted " + target.getName() + "'s duel request!");
    24. duel_requests.remove(index);
    25.  
    26. // initiate duel
    27.  
    28. }
    29. else {
    30. final Player target = Bukkit.getPlayerExact(args[0]);
    31. if (target == null)
    32. player.sendMessage(ChatColor.RED + "That player is offline!");
    33. else if (duel_requests.containsKey(player.getName())) {
    34. player.sendMessage(ChatColor.RED + "You already sent a request out");
    35. } else {
    36. player.sendMessage("Duel request sent to " + args[0]);
    37. target.sendMessage("Player " + player + " sent you a duel request, do /duel accept or /duel deny");
    38. duel_requests.put(player.getName(), target.getName());
    39. }
    40. }
    41. }


    Do you want something like this?

    Jake6177
    From what I see he supplied enough the first time
     
    jthort likes this.
  5. Offline

    jthort

    Yeah that's perfect. I didn't know how to use hashmaps.
     
  6. Offline

    Xacero

    jthort Glad I could help, remember to mark as [solved] unless you need assistance with anything else :)
     
Thread Status:
Not open for further replies.

Share This Page