PartyAutoKickTask.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.gmail.nossr50.runnables.party;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map.Entry;
  7. import org.bukkit.OfflinePlayer;
  8. import org.bukkit.scheduler.BukkitRunnable;
  9. import com.gmail.nossr50.mcMMO;
  10. import com.gmail.nossr50.config.Config;
  11. import com.gmail.nossr50.datatypes.party.Party;
  12. import com.gmail.nossr50.party.PartyManager;
  13. public class PartyAutoKickTask extends BukkitRunnable {
  14. @Override
  15. public void run() {
  16. updatePartyMembers();
  17. }
  18. private void updatePartyMembers() {
  19. HashMap<OfflinePlayer, Party> toRemove = new HashMap<OfflinePlayer, Party>();
  20. List<String> processedPlayers = new ArrayList<String>();
  21. long currentTime = System.currentTimeMillis();
  22. long kickTime = 24L * 60L * 60L * 1000L * Config.getInstance().getAutoPartyKickTime();
  23. for (Iterator<Party> partyIterator = PartyManager.getParties().iterator(); partyIterator.hasNext();) {
  24. Party party = partyIterator.next();
  25. for (String memberName : party.getMembers()) {
  26. OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberName);
  27. if ((currentTime - member.getLastPlayed() > kickTime) || processedPlayers.contains(memberName)) {
  28. toRemove.put(member, party);
  29. }
  30. if (!processedPlayers.contains(memberName)) {
  31. processedPlayers.add(memberName);
  32. }
  33. }
  34. }
  35. for (Entry<OfflinePlayer, Party> entry : toRemove.entrySet()) {
  36. PartyManager.removeFromParty(entry.getKey(), entry.getValue());
  37. }
  38. }
  39. }