Skip to content

Commit 548f95d

Browse files
feat: bedwars profile
1 parent ecec1a5 commit 548f95d

8 files changed

Lines changed: 494 additions & 22 deletions

File tree

commons/src/main/java/net/swofty/commons/bedwars/BedWarsModeStats.java

Lines changed: 110 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ public class BedWarsModeStats {
1515
private final Map<String, Long> wins;
1616
private final Map<String, Long> finalKills;
1717
private final Map<String, Long> bedsBroken;
18+
private final Map<String, Long> losses;
19+
private final Map<String, Long> bedsLost;
20+
private final Map<String, Long> kills;
21+
private final Map<String, Long> deaths;
22+
private final Map<String, Long> finalDeaths;
23+
private final Map<String, Long> winstreaks;
1824

1925
@Setter private long dailyResetTimestamp;
2026
@Setter private long weeklyResetTimestamp;
@@ -24,21 +30,28 @@ public BedWarsModeStats() {
2430
this.wins = new HashMap<>();
2531
this.finalKills = new HashMap<>();
2632
this.bedsBroken = new HashMap<>();
27-
initializeResetTimestamps();
28-
}
29-
30-
public BedWarsModeStats(Map<String, Long> wins, Map<String, Long> finalKills, Map<String, Long> bedsBroken) {
31-
this.wins = new HashMap<>(wins);
32-
this.finalKills = new HashMap<>(finalKills);
33-
this.bedsBroken = new HashMap<>(bedsBroken);
33+
this.losses = new HashMap<>();
34+
this.bedsLost = new HashMap<>();
35+
this.kills = new HashMap<>();
36+
this.deaths = new HashMap<>();
37+
this.finalDeaths = new HashMap<>();
38+
this.winstreaks = new HashMap<>();
3439
initializeResetTimestamps();
3540
}
3641

3742
public BedWarsModeStats(Map<String, Long> wins, Map<String, Long> finalKills, Map<String, Long> bedsBroken,
43+
Map<String, Long> losses, Map<String, Long> bedsLost, Map<String, Long> kills,
44+
Map<String, Long> deaths, Map<String, Long> finalDeaths, Map<String, Long> winstreaks,
3845
long dailyResetTimestamp, long weeklyResetTimestamp, long monthlyResetTimestamp) {
3946
this.wins = new HashMap<>(wins);
4047
this.finalKills = new HashMap<>(finalKills);
4148
this.bedsBroken = new HashMap<>(bedsBroken);
49+
this.losses = new HashMap<>(losses);
50+
this.bedsLost = new HashMap<>(bedsLost);
51+
this.kills = new HashMap<>(kills);
52+
this.deaths = new HashMap<>(deaths);
53+
this.finalDeaths = new HashMap<>(finalDeaths);
54+
this.winstreaks = new HashMap<>(winstreaks);
4255
this.dailyResetTimestamp = dailyResetTimestamp;
4356
this.weeklyResetTimestamp = weeklyResetTimestamp;
4457
this.monthlyResetTimestamp = monthlyResetTimestamp;
@@ -109,6 +122,30 @@ public long getBedsBroken(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod
109122
return bedsBroken.getOrDefault(key(mode, period), 0L);
110123
}
111124

125+
public long getLosses(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
126+
return losses.getOrDefault(key(mode, period), 0L);
127+
}
128+
129+
public long getBedsLost(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
130+
return bedsLost.getOrDefault(key(mode, period), 0L);
131+
}
132+
133+
public long getKills(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
134+
return kills.getOrDefault(key(mode, period), 0L);
135+
}
136+
137+
public long getDeaths(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
138+
return deaths.getOrDefault(key(mode, period), 0L);
139+
}
140+
141+
public long getFinalDeaths(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
142+
return finalDeaths.getOrDefault(key(mode, period), 0L);
143+
}
144+
145+
public long getWinstreak(BedwarsLeaderboardMode mode) {
146+
return winstreaks.getOrDefault(mode.getKey(), 0L);
147+
}
148+
112149
public void addWin(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
113150
wins.merge(key(mode, period), 1L, Long::sum);
114151
}
@@ -121,10 +158,39 @@ public void addBedBroken(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod p
121158
bedsBroken.merge(key(mode, period), 1L, Long::sum);
122159
}
123160

161+
public void addLoss(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
162+
losses.merge(key(mode, period), 1L, Long::sum);
163+
}
164+
165+
public void addBedLost(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
166+
bedsLost.merge(key(mode, period), 1L, Long::sum);
167+
}
168+
169+
public void addKill(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
170+
kills.merge(key(mode, period), 1L, Long::sum);
171+
}
172+
173+
public void addDeath(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
174+
deaths.merge(key(mode, period), 1L, Long::sum);
175+
}
176+
177+
public void addFinalDeath(BedwarsLeaderboardMode mode, BedwarsLeaderboardPeriod period) {
178+
finalDeaths.merge(key(mode, period), 1L, Long::sum);
179+
}
180+
181+
public void incrementWinstreak(BedwarsLeaderboardMode mode) {
182+
winstreaks.merge(mode.getKey(), 1L, Long::sum);
183+
}
184+
185+
public void resetWinstreak(BedwarsLeaderboardMode mode) {
186+
winstreaks.put(mode.getKey(), 0L);
187+
}
188+
124189
public void recordWin(BedwarsLeaderboardMode mode) {
125190
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
126191
addWin(mode, period);
127192
}
193+
incrementWinstreak(mode);
128194
}
129195

130196
public void recordFinalKill(BedwarsLeaderboardMode mode) {
@@ -139,17 +205,54 @@ public void recordBedBroken(BedwarsLeaderboardMode mode) {
139205
}
140206
}
141207

208+
public void recordLoss(BedwarsLeaderboardMode mode) {
209+
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
210+
addLoss(mode, period);
211+
}
212+
resetWinstreak(mode);
213+
}
214+
215+
public void recordBedLost(BedwarsLeaderboardMode mode) {
216+
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
217+
addBedLost(mode, period);
218+
}
219+
}
220+
221+
public void recordKill(BedwarsLeaderboardMode mode) {
222+
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
223+
addKill(mode, period);
224+
}
225+
}
226+
227+
public void recordDeath(BedwarsLeaderboardMode mode) {
228+
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
229+
addDeath(mode, period);
230+
}
231+
}
232+
233+
public void recordFinalDeath(BedwarsLeaderboardMode mode) {
234+
for (BedwarsLeaderboardPeriod period : BedwarsLeaderboardPeriod.values()) {
235+
addFinalDeath(mode, period);
236+
}
237+
}
238+
142239
public void resetPeriod(BedwarsLeaderboardPeriod period) {
143240
for (BedwarsLeaderboardMode mode : BedwarsLeaderboardMode.values()) {
144241
String k = key(mode, period);
145242
wins.remove(k);
146243
finalKills.remove(k);
147244
bedsBroken.remove(k);
245+
losses.remove(k);
246+
bedsLost.remove(k);
247+
kills.remove(k);
248+
deaths.remove(k);
249+
finalDeaths.remove(k);
148250
}
149251
}
150252

151253
public BedWarsModeStats copy() {
152254
return new BedWarsModeStats(wins, finalKills, bedsBroken,
255+
losses, bedsLost, kills, deaths, finalDeaths, winstreaks,
153256
dailyResetTimestamp, weeklyResetTimestamp, monthlyResetTimestamp);
154257
}
155258
}

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/stats/BedWarsStatsRecorder.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,66 @@ public static void recordBedBroken(BedWarsPlayer player, BedwarsGameType gameTyp
7979
updateLeaderboards(uuid, BedwarsStatType.BEDS_BROKEN, mode, modeStats, newTotal);
8080
}
8181

82+
public static void recordLoss(BedWarsPlayer player, BedwarsGameType gameType) {
83+
BedWarsDataHandler handler = player.getBedWarsDataHandler();
84+
85+
BedWarsModeStats modeStats = handler.get(BedWarsDataHandler.Data.MODE_STATS, DatapointBedWarsModeStats.class).getValue();
86+
BedwarsLeaderboardMode mode = BedwarsLeaderboardMode.fromGameType(gameType);
87+
modeStats.recordLoss(mode);
88+
modeStats.recordLoss(BedwarsLeaderboardMode.ALL);
89+
if (BedwarsLeaderboardMode.CORE.includes(gameType)) {
90+
modeStats.recordLoss(BedwarsLeaderboardMode.CORE);
91+
}
92+
}
93+
94+
public static void recordKill(BedWarsPlayer player, BedwarsGameType gameType) {
95+
BedWarsDataHandler handler = player.getBedWarsDataHandler();
96+
97+
BedWarsModeStats modeStats = handler.get(BedWarsDataHandler.Data.MODE_STATS, DatapointBedWarsModeStats.class).getValue();
98+
BedwarsLeaderboardMode mode = BedwarsLeaderboardMode.fromGameType(gameType);
99+
modeStats.recordKill(mode);
100+
modeStats.recordKill(BedwarsLeaderboardMode.ALL);
101+
if (BedwarsLeaderboardMode.CORE.includes(gameType)) {
102+
modeStats.recordKill(BedwarsLeaderboardMode.CORE);
103+
}
104+
}
105+
106+
public static void recordDeath(BedWarsPlayer player, BedwarsGameType gameType) {
107+
BedWarsDataHandler handler = player.getBedWarsDataHandler();
108+
109+
BedWarsModeStats modeStats = handler.get(BedWarsDataHandler.Data.MODE_STATS, DatapointBedWarsModeStats.class).getValue();
110+
BedwarsLeaderboardMode mode = BedwarsLeaderboardMode.fromGameType(gameType);
111+
modeStats.recordDeath(mode);
112+
modeStats.recordDeath(BedwarsLeaderboardMode.ALL);
113+
if (BedwarsLeaderboardMode.CORE.includes(gameType)) {
114+
modeStats.recordDeath(BedwarsLeaderboardMode.CORE);
115+
}
116+
}
117+
118+
public static void recordFinalDeath(BedWarsPlayer player, BedwarsGameType gameType) {
119+
BedWarsDataHandler handler = player.getBedWarsDataHandler();
120+
121+
BedWarsModeStats modeStats = handler.get(BedWarsDataHandler.Data.MODE_STATS, DatapointBedWarsModeStats.class).getValue();
122+
BedwarsLeaderboardMode mode = BedwarsLeaderboardMode.fromGameType(gameType);
123+
modeStats.recordFinalDeath(mode);
124+
modeStats.recordFinalDeath(BedwarsLeaderboardMode.ALL);
125+
if (BedwarsLeaderboardMode.CORE.includes(gameType)) {
126+
modeStats.recordFinalDeath(BedwarsLeaderboardMode.CORE);
127+
}
128+
}
129+
130+
public static void recordBedLost(BedWarsPlayer player, BedwarsGameType gameType) {
131+
BedWarsDataHandler handler = player.getBedWarsDataHandler();
132+
133+
BedWarsModeStats modeStats = handler.get(BedWarsDataHandler.Data.MODE_STATS, DatapointBedWarsModeStats.class).getValue();
134+
BedwarsLeaderboardMode mode = BedwarsLeaderboardMode.fromGameType(gameType);
135+
modeStats.recordBedLost(mode);
136+
modeStats.recordBedLost(BedwarsLeaderboardMode.ALL);
137+
if (BedwarsLeaderboardMode.CORE.includes(gameType)) {
138+
modeStats.recordBedLost(BedwarsLeaderboardMode.CORE);
139+
}
140+
}
141+
82142
private static void updateLeaderboards(UUID uuid, BedwarsStatType statType, BedwarsLeaderboardMode mode,
83143
BedWarsModeStats modeStats, long allModesTotal) {
84144
String statKey = statType.getKey();

type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/TypeBedWarsLobbyLoader.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import net.swofty.type.generic.leaderboard.BedWarsLeaderboardAggregator;
2323
import net.swofty.type.generic.entity.npc.HypixelNPC;
2424
import net.swofty.type.generic.event.HypixelEventClass;
25-
import net.swofty.type.generic.tab.EmptyTabModule;
2625
import net.swofty.type.generic.tab.TablistManager;
2726
import net.swofty.type.generic.tab.TablistModule;
27+
import net.swofty.type.bedwarslobby.tab.BedWarsPlayersOnlineModule;
2828
import net.swofty.type.lobby.LobbyTypeLoader;
2929
import net.swofty.type.lobby.events.LobbyItemEvents;
3030
import net.swofty.type.lobby.events.LobbyLaunchPadEvents;
@@ -112,10 +112,10 @@ public TablistManager getTablistManager() {
112112
@Override
113113
public List<TablistModule> getModules() {
114114
return List.of(
115-
new EmptyTabModule(),
116-
new EmptyTabModule(),
117-
new EmptyTabModule(),
118-
new EmptyTabModule()
115+
new BedWarsPlayersOnlineModule(1),
116+
new BedWarsPlayersOnlineModule(2),
117+
new BedWarsPlayersOnlineModule(3),
118+
new BedWarsPlayersOnlineModule(4)
119119
);
120120
}
121121
};

0 commit comments

Comments
 (0)