Skip to content

Commit 3ae45ed

Browse files
chore: forgot this boy
1 parent f0d67b6 commit 3ae45ed

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package net.swofty.type.generic.data.datapoints;
2+
3+
import lombok.Getter;
4+
import net.swofty.commons.protocol.JacksonSerializer;
5+
import net.swofty.type.generic.data.Datapoint;
6+
import net.swofty.type.generic.leaderboard.LeaderboardTracked;
7+
8+
/**
9+
* A Long datapoint that automatically syncs to a Redis leaderboard.
10+
* Use this for numeric values that should be ranked (XP, coins, kills, etc.)
11+
*
12+
* @see LeaderboardTracked
13+
*/
14+
public class DatapointLeaderboardLong extends Datapoint<Long> implements LeaderboardTracked {
15+
private static final JacksonSerializer<Long> serializer = new JacksonSerializer<>(Long.class);
16+
17+
@Getter
18+
private final String leaderboardKey;
19+
20+
/**
21+
* Create a leaderboard-tracked Long datapoint.
22+
* @param key The datapoint key (for MongoDB storage)
23+
* @param value The default value
24+
* @param leaderboardKey The leaderboard key (e.g., "bedwars:experience")
25+
*/
26+
public DatapointLeaderboardLong(String key, Long value, String leaderboardKey) {
27+
super(key, value, serializer);
28+
this.leaderboardKey = leaderboardKey;
29+
}
30+
31+
/**
32+
* Create a leaderboard-tracked Long datapoint with null default value.
33+
* @param key The datapoint key
34+
* @param leaderboardKey The leaderboard key
35+
*/
36+
public DatapointLeaderboardLong(String key, String leaderboardKey) {
37+
super(key, null, serializer);
38+
this.leaderboardKey = leaderboardKey;
39+
}
40+
41+
@Override
42+
public double getLeaderboardScore() {
43+
return value == null ? 0.0 : value.doubleValue();
44+
}
45+
46+
@Override
47+
public Datapoint<Long> deepClone() {
48+
DatapointLeaderboardLong clone = new DatapointLeaderboardLong(getKey(), value, leaderboardKey);
49+
clone.dataHandler = this.dataHandler;
50+
clone.data = this.data;
51+
return clone;
52+
}
53+
}

0 commit comments

Comments
 (0)