/
PartyAutoKickTask.java
43 lines (34 loc) · 1.51 KB
/
PartyAutoKickTask.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.gmail.nossr50.runnables.party;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.CancellableRunnable;
import org.bukkit.OfflinePlayer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
public class PartyAutoKickTask extends CancellableRunnable {
private final static long KICK_TIME = 24L * 60L * 60L * 1000L * mcMMO.p.getGeneralConfig().getAutoPartyKickTime();
@Override
public void run() {
HashMap<OfflinePlayer, Party> toRemove = new HashMap<>();
List<UUID> processedPlayers = new ArrayList<>();
long currentTime = System.currentTimeMillis();
for (Party party : mcMMO.p.getPartyManager().getParties()) {
for (UUID memberUniqueId : party.getMembers().keySet()) {
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
boolean isProcessed = processedPlayers.contains(memberUniqueId);
if ((!member.isOnline() && (currentTime - member.getLastPlayed() > KICK_TIME)) || isProcessed) {
toRemove.put(member, party);
}
if (!isProcessed) {
processedPlayers.add(memberUniqueId);
}
}
}
for (Entry<OfflinePlayer, Party> entry : toRemove.entrySet()) {
mcMMO.p.getPartyManager().removeFromParty(entry.getKey(), entry.getValue());
}
}
}