first commit

This commit is contained in:
Patrick
2026-05-01 19:20:14 +02:00
commit 1248c33beb
17 changed files with 1184 additions and 0 deletions
@@ -0,0 +1,78 @@
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);
}
}