Skip to content

Commit 6c66cec

Browse files
feat: formatted names on leaderboards
1 parent 07e3d62 commit 6c66cec

5 files changed

Lines changed: 47 additions & 86 deletions

File tree

type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/hologram/BedWarsLeaderboardHologram.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import net.minestom.server.coordinate.Pos;
55
import net.swofty.commons.bedwars.*;
66
import net.swofty.type.bedwarslobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState;
7+
import net.swofty.type.bedwarslobby.util.BedwarsNameFormatter;
78
import net.swofty.type.generic.HypixelGenericLoader;
89
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
910
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
1011
import net.swofty.type.generic.leaderboard.BedWarsLeaderboardAggregator;
1112
import net.swofty.type.generic.leaderboard.LeaderboardService;
12-
import net.swofty.type.generic.leaderboard.PlayerNameCache;
1313
import net.swofty.type.generic.user.HypixelPlayer;
1414

1515
import java.text.NumberFormat;
@@ -64,7 +64,7 @@ public String[] getHologramLines(HypixelPlayer player, PlayerLeaderboardState st
6464
int maxNameWidth = 0;
6565
if (alignment == BedwarsTextAlignment.BLOCK && !entries.isEmpty()) {
6666
for (LeaderboardService.LeaderboardEntry entry : entries) {
67-
String name = PlayerNameCache.getUsername(entry.playerUuid());
67+
String name = new BedwarsNameFormatter(entry.playerUuid()).getDisplayName();
6868
maxNameWidth = Math.max(maxNameWidth, getMinecraftStringWidth(name));
6969
}
7070
}
@@ -74,7 +74,7 @@ public String[] getHologramLines(HypixelPlayer player, PlayerLeaderboardState st
7474
} else {
7575
int displayRank = 1;
7676
for (LeaderboardService.LeaderboardEntry entry : entries) {
77-
String playerName = PlayerNameCache.getUsername(entry.playerUuid());
77+
String playerName = new BedwarsNameFormatter(entry.playerUuid()).getDisplayName();
7878
String formattedScore = formatScore(entry.scoreAsLong());
7979

8080
String paddedName = playerName;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package net.swofty.type.bedwarslobby.util;
2+
3+
import net.swofty.commons.StringUtility;
4+
import net.swofty.commons.bedwars.BedwarsLevelColor;
5+
import net.swofty.commons.bedwars.BedwarsLevelUtil;
6+
import net.swofty.type.generic.data.HypixelDataHandler;
7+
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
8+
import net.swofty.type.generic.data.datapoints.DatapointRank;
9+
import net.swofty.type.generic.data.datapoints.DatapointString;
10+
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
11+
import net.swofty.type.generic.user.categories.Rank;
12+
import org.jetbrains.annotations.Blocking;
13+
14+
import java.util.UUID;
15+
16+
public record BedwarsNameFormatter(UUID uuid) {
17+
@Blocking
18+
public String getDisplayName() {
19+
BedWarsDataHandler bwHandler = BedWarsDataHandler.getOfOfflinePlayer(uuid);
20+
String levelPrefix = BedwarsLevelColor.constructLevelBrackets(
21+
BedwarsLevelUtil.calculateLevel(bwHandler.get(BedWarsDataHandler.Data.EXPERIENCE, DatapointLeaderboardLong.class).getValue())
22+
) + " ";
23+
24+
HypixelDataHandler handler = HypixelDataHandler.getOfOfflinePlayer(uuid);
25+
Rank rank = handler.get(HypixelDataHandler.Data.RANK, DatapointRank.class).getValue();
26+
String rankPrefix = rank.getPrefix();
27+
28+
String ign = handler.get(HypixelDataHandler.Data.IGN, DatapointString.class).getValue();
29+
30+
return levelPrefix + rankPrefix + ign;
31+
}
32+
}

type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import lombok.Getter;
5+
import net.swofty.commons.bedwars.BedwarsGameType;
56
import net.swofty.type.generic.data.DataHandler;
67
import net.swofty.type.generic.data.Datapoint;
78
import net.swofty.type.generic.data.GameDataHandler;
89
import net.swofty.commons.bedwars.BedWarsModeStats;
910
import net.swofty.commons.bedwars.LeaderboardPreferences;
11+
import net.swofty.type.generic.data.HypixelDataHandler;
1012
import net.swofty.type.generic.data.datapoints.*;
1113
import net.swofty.type.generic.data.datapoints.DatapointBedWarsModeStats;
1214
import net.swofty.type.generic.data.datapoints.DatapointBedWarsQuickBuy;
1315
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardPreferences;
16+
import net.swofty.type.generic.data.mongodb.UserDatabase;
1417
import net.swofty.type.generic.leaderboard.LeaderboardService;
1518
import net.swofty.type.generic.user.HypixelPlayer;
1619
import org.bson.Document;
@@ -65,6 +68,12 @@ public void removeFromCache(UUID playerUuid) {
6568
bedwarsCache.remove(playerUuid);
6669
}
6770

71+
public static BedWarsDataHandler getOfOfflinePlayer(UUID uuid) throws RuntimeException {
72+
UserDatabase userDatabase = new UserDatabase(uuid.toString());
73+
Document doc = userDatabase.getHypixelData();
74+
return createFromDocument(doc);
75+
}
76+
6877
@Override
6978
public boolean hasDataInDocument(Document document) {
7079
if (document == null) return false;

type.generic/src/main/java/net/swofty/type/generic/leaderboard/PlayerNameCache.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/hologram/MurderMysteryLeaderboardHologram.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import lombok.Getter;
44
import net.minestom.server.coordinate.Pos;
55
import net.swofty.commons.murdermystery.*;
6+
import net.swofty.type.generic.data.HypixelDataHandler;
67
import net.swofty.type.murdermysterylobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState;
78
import net.swofty.type.generic.HypixelGenericLoader;
89
import net.swofty.type.generic.leaderboard.LeaderboardService;
9-
import net.swofty.type.generic.leaderboard.PlayerNameCache;
1010
import net.swofty.type.generic.user.HypixelPlayer;
1111

1212
import java.text.NumberFormat;
@@ -53,7 +53,7 @@ public String[] getHologramLines(HypixelPlayer player, PlayerLeaderboardState st
5353
int maxNameWidth = 0;
5454
if (alignment == MurderMysteryTextAlignment.BLOCK && !entries.isEmpty()) {
5555
for (LeaderboardService.LeaderboardEntry entry : entries) {
56-
String name = PlayerNameCache.getUsername(entry.playerUuid());
56+
String name = HypixelPlayer.getDisplayName(entry.playerUuid());
5757
maxNameWidth = Math.max(maxNameWidth, getMinecraftStringWidth(name));
5858
}
5959
}
@@ -63,7 +63,7 @@ public String[] getHologramLines(HypixelPlayer player, PlayerLeaderboardState st
6363
} else {
6464
int displayRank = 1;
6565
for (LeaderboardService.LeaderboardEntry entry : entries) {
66-
String playerName = PlayerNameCache.getUsername(entry.playerUuid());
66+
String playerName = HypixelPlayer.getDisplayName(entry.playerUuid());
6767
String formattedScore = formatScore(entry.scoreAsLong());
6868

6969
String paddedName = playerName;

0 commit comments

Comments
 (0)