Solved Inviting and Joining

Discussion in 'Plugin Development' started by Machine Maker, Dec 25, 2016.

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

    Machine Maker

    I am trying to get a generic invite and join system working. But when I try and type /team join after my other account invites me, it doesn't register as ever inviting me. I'm not getting any errors in the server log. Hope someone can check out my code and find my mistake.

    Invite Command
    Code:
    public class Invite {
       
        @SuppressWarnings("deprecation")
        public static void run(Plugin pl, Player p, String[] args) {
           
            List<String> teams = pl.getConfig().getStringList("Teams");
           
            boolean hasTeam = false;
            String ownersTeam = null;
            for (String team : teams) {
                if (p.getDisplayName().equalsIgnoreCase(pl.getConfig().getString(team + ".Owner"))) {
                    ownersTeam = team;
                    hasTeam = true;
                    break;
                }
            }
           
            if(!hasTeam) {
                p.sendMessage(Utilities.format(ChatColor.RED + "You must be an owner of a team!"));
                return;
            }
           
            if (args.length != 2) {
                p.sendMessage(ChatColor.RED + "Use format: /team invite <player>");
                return;
            }
           
            if (!Bukkit.getPlayer(args[1]).isOnline()) {
                p.sendMessage(Utilities.format(ChatColor.RED + "That player is not online!"));
                return;
            }
           
            Player invitedPlayer = Bukkit.getPlayer(args[1]);
            invitedPlayer.sendMessage(Utilities.format(ChatColor.GREEN + "You have been invited to join " + ownersTeam + "!"));
            invitedPlayer.sendMessage(Utilities.format(ChatColor.GREEN + "You have 60 seconds too accept"));
            InviteManager.getInstance().addInvite(p.getDisplayName(), (long) 60, ownersTeam);
        }
    
    }
    
    Join Command
    Code:
    public class Join {
       
        public static void run(Plugin pl, Player p, String[] args) {
            if (!InviteManager.getInstance().hasInvite(p.getDisplayName())) {
                p.sendMessage(InviteManager.getInstance().hasInvite(p.getDisplayName()) + "");
                p.sendMessage(Utilities.format(ChatColor.RED + "You have not been invited to a team!"));
                return;
            }
            Long inviteEnds = InviteManager.getInstance().getEndTime(p.getDisplayName());
            if (inviteEnds < System.currentTimeMillis()) {
                p.sendMessage(Utilities.format(ChatColor.RED + "The invite has already expired"));
                InviteManager.getInstance().removeInvite(p.getDisplayName());
                return;
            }
            String playersNewTeam = InviteManager.getInstance().getNewTeam(p.getDisplayName());
            List<String> members = pl.getConfig().getStringList(playersNewTeam + ".Members");
            if (members.size() >= 10) {
                p.sendMessage(Utilities.format(ChatColor.RED + "This team already has 10 players!"));
                return;
            }
            members.add(p.getDisplayName());
            pl.getConfig().set(playersNewTeam + ".Members", members);
            pl.saveConfig();
           
           
        }
    
    }
    
    InviteManager
    Code:
    public class InviteManager {
       
        public InviteManager() { }
       
        private static InviteManager instance = new InviteManager();
       
        public Invite inviteClass;
       
        public HashMap<String, Long> invitedPlayers = new HashMap<String, Long>();
        public HashMap<String, String> invitedPlayersTeams = new HashMap<String, String>();
       
        public static InviteManager getInstance() {
            return instance;
        }
       
        public void setup() {
           
        }
       
        public void addInvite(String playername, Long time, String team) {
            invitedPlayers.put(playername, (time * 1000) + System.currentTimeMillis());
            invitedPlayersTeams.put(playername, team);
        }
       
        public void removeInvite(String playername) {
            invitedPlayers.remove(playername);
            invitedPlayersTeams.remove(playername);
        }
        public boolean hasInvite(String playername) {
            if (invitedPlayers.containsKey(playername)) {
                return true;
            }
            return false;
        }
       
        public long getEndTime(String playername) {
            return invitedPlayers.get(playername);
        }
       
        public String getNewTeam(String playername) {
            return invitedPlayersTeams.get(playername);
        }
    }
    
     
  2. Offline

    DeCraizq

    Is he inviting himself?
    Try to print the inviting player a message like:
    You invited {player}. He will join you soon.
     
  3. Offline

    Machine Maker

    WOW. Ok, yeah I guess that was an oversight. It was supposed to be args[1] not p.getDisplayName()

    Thanks
     
  4. Offline

    DeCraizq

  5. Offline

    Zombie_Striker

  6. Offline

    Machine Maker

    Yes. Thank you
     
Thread Status:
Not open for further replies.

Share This Page