diff --git a/src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java b/src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java index 5609d6b8c..d47692bd1 100644 --- a/src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/party/PartyAutoKickTask.java @@ -2,7 +2,6 @@ package com.gmail.nossr50.runnables.party; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map.Entry; @@ -15,29 +14,25 @@ import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.party.PartyManager; public class PartyAutoKickTask extends BukkitRunnable { + private final static long KICK_TIME = 24L * 60L * 60L * 1000L * Config.getInstance().getAutoPartyKickTime(); + @Override public void run() { - updatePartyMembers(); - } - - private void updatePartyMembers() { HashMap toRemove = new HashMap(); List processedPlayers = new ArrayList(); long currentTime = System.currentTimeMillis(); - long kickTime = 24L * 60L * 60L * 1000L * Config.getInstance().getAutoPartyKickTime(); - - for (Iterator partyIterator = PartyManager.getParties().iterator(); partyIterator.hasNext();) { - Party party = partyIterator.next(); + for (Party party : PartyManager.getParties()) { for (String memberName : party.getMembers()) { OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberName); + boolean isProcessed = processedPlayers.contains(memberName); - if ((currentTime - member.getLastPlayed() > kickTime) || processedPlayers.contains(memberName)) { + if ((!member.isOnline() && (currentTime - member.getLastPlayed() > KICK_TIME)) || isProcessed) { toRemove.put(member, party); } - if (!processedPlayers.contains(memberName)) { + if (!isProcessed) { processedPlayers.add(memberName); } }