79 lines
2.0 KiB
Java
79 lines
2.0 KiB
Java
package de.winniepat.fallSMPRewards.model;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.UUID;
|
|
|
|
public final class PlayerData {
|
|
|
|
private UUID uuid;
|
|
private int totalKills;
|
|
private Set<String> claimedQuestIds;
|
|
private Map<String, Long> lastCountedKillByVictim;
|
|
|
|
public PlayerData() {
|
|
// Required for Gson.
|
|
}
|
|
|
|
public PlayerData(UUID uuid) {
|
|
this.uuid = uuid;
|
|
this.totalKills = 0;
|
|
this.claimedQuestIds = new HashSet<>();
|
|
this.lastCountedKillByVictim = new HashMap<>();
|
|
}
|
|
|
|
public void sanitize(UUID expectedUuid) {
|
|
if (uuid == null) {
|
|
uuid = expectedUuid;
|
|
}
|
|
if (claimedQuestIds == null) {
|
|
claimedQuestIds = new HashSet<>();
|
|
}
|
|
if (lastCountedKillByVictim == null) {
|
|
lastCountedKillByVictim = new HashMap<>();
|
|
}
|
|
if (totalKills < 0) {
|
|
totalKills = 0;
|
|
}
|
|
}
|
|
|
|
public UUID getUuid() {
|
|
return uuid;
|
|
}
|
|
|
|
public int getTotalKills() {
|
|
return totalKills;
|
|
}
|
|
|
|
public int addKill() {
|
|
totalKills++;
|
|
return totalKills;
|
|
}
|
|
|
|
public long getRemainingCooldownMillis(UUID victimUuid, long cooldownMillis, long nowMillis) {
|
|
Long lastCountedMillis = lastCountedKillByVictim.get(victimUuid.toString());
|
|
if (lastCountedMillis == null) {
|
|
return 0L;
|
|
}
|
|
long elapsed = nowMillis - lastCountedMillis;
|
|
if (elapsed >= cooldownMillis) {
|
|
return 0L;
|
|
}
|
|
return cooldownMillis - elapsed;
|
|
}
|
|
|
|
public void setLastCountedKill(UUID victimUuid, long nowMillis) {
|
|
lastCountedKillByVictim.put(victimUuid.toString(), nowMillis);
|
|
}
|
|
|
|
public boolean hasClaimed(String questId) {
|
|
return claimedQuestIds.contains(questId);
|
|
}
|
|
|
|
public boolean claim(String questId) {
|
|
return claimedQuestIds.add(questId);
|
|
}
|
|
}
|