Skip to content

Commit ee34f73

Browse files
committed
feat: show more data on NPCStats
1 parent 9ab5f5d commit ee34f73

4 files changed

Lines changed: 42 additions & 22 deletions

File tree

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
package net.swofty.commons.bedwars;
22

3+
import java.text.DecimalFormat;
4+
35
public class BedwarsLevelUtil {
46

7+
private static final DecimalFormat FORMAT = new DecimalFormat("#,###.#");
8+
9+
public static String suffix(double value) {
10+
if (value < 1000) {
11+
return FORMAT.format(value);
12+
} else {
13+
return FORMAT.format(value / 1000) + "k";
14+
}
15+
}
16+
517
public static int calculateMaxExperienceFromLevel(int level) {
618
int multiplier = level % 100;
719
if (multiplier > 5) {

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

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,24 @@
66
import net.minestom.server.scoreboard.Sidebar;
77
import net.minestom.server.timer.Scheduler;
88
import net.minestom.server.timer.TaskSchedule;
9-
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
10-
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
119
import net.swofty.commons.bedwars.BedwarsLevelColor;
1210
import net.swofty.commons.bedwars.BedwarsLevelUtil;
1311
import net.swofty.type.generic.HypixelConst;
1412
import net.swofty.type.generic.HypixelGenericLoader;
1513
import net.swofty.type.generic.data.HypixelDataHandler;
16-
import net.swofty.type.generic.data.datapoints.DatapointLong;
14+
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
15+
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
1716
import net.swofty.type.generic.user.HypixelPlayer;
1817

19-
import java.text.DecimalFormat;
2018
import java.text.SimpleDateFormat;
2119
import java.util.Date;
2220
import java.util.HashMap;
2321
import java.util.Map;
2422
import java.util.UUID;
2523

24+
import static net.swofty.commons.bedwars.BedwarsLevelUtil.suffix;
25+
2626
public class BedWarsLobbyScoreboard {
27-
private static final DecimalFormat FORMAT = new DecimalFormat("#,###.#");
2827
private static final Map<UUID, Sidebar> sidebarCache = new HashMap<>();
2928
private static Integer prototypeName = 0;
3029

@@ -72,7 +71,7 @@ public static void start() {
7271
addLine("§7 ", sidebar);
7372
addLine("§fLevel: §7" + BedwarsLevelColor.constructLevelString(BedwarsLevelUtil.calculateLevel(experience)), sidebar);
7473
addLine("§7 ", sidebar);
75-
addLine("§fProgress: §b" + suffix(progress) + "§7/" + suffix(maxExperience), sidebar);
74+
addLine("§fProgress: §b" + suffix(progress) + "§7/§a" + suffix(maxExperience), sidebar);
7675
addLine(progressBar.toString(), sidebar);
7776
addLine("§7 ", sidebar);
7877
addLine("§fTokens: §2" + bwDataHandler.get(BedWarsDataHandler.Data.TOKENS, DatapointLeaderboardLong.class).getValue(), sidebar);
@@ -122,12 +121,4 @@ private static String getSidebarName(int counter) {
122121
}
123122
}
124123

125-
private static String suffix(double value) {
126-
if (value < 1000) {
127-
return FORMAT.format(value);
128-
} else {
129-
return FORMAT.format(value / 1000) + "k";
130-
}
131-
}
132-
133124
}

type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/events/ActionPlayerChat.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import net.minestom.server.event.player.PlayerChatEvent;
44
import net.swofty.commons.StringUtility;
5-
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
65
import net.swofty.commons.bedwars.BedwarsLevelColor;
76
import net.swofty.commons.bedwars.BedwarsLevelUtil;
87
import net.swofty.type.generic.HypixelGenericLoader;
98
import net.swofty.type.generic.data.HypixelDataHandler;
109
import net.swofty.type.generic.data.datapoints.DatapointChatType;
11-
import net.swofty.type.generic.data.datapoints.DatapointLong;
10+
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
11+
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
1212
import net.swofty.type.generic.event.EventNodes;
1313
import net.swofty.type.generic.event.HypixelEvent;
1414
import net.swofty.type.generic.event.HypixelEventClass;
@@ -58,7 +58,7 @@ public void run(PlayerChatEvent event) {
5858
List<HypixelPlayer> receivers = HypixelGenericLoader.getLoadedPlayers();
5959

6060
String levelPrefix = BedwarsLevelColor.constructLevelBrackets(
61-
BedwarsLevelUtil.calculateLevel(bedWarsDataHandler.get(BedWarsDataHandler.Data.EXPERIENCE, DatapointLong.class).getValue())
61+
BedwarsLevelUtil.calculateLevel(bedWarsDataHandler.get(BedWarsDataHandler.Data.EXPERIENCE, DatapointLeaderboardLong.class).getValue())
6262
) + " ";
6363

6464
receivers.forEach(onlinePlayer -> {

type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/npcs/NPCStats.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,40 @@
33
import net.kyori.adventure.text.Component;
44
import net.kyori.adventure.text.event.ClickEvent;
55
import net.minestom.server.coordinate.Pos;
6+
import net.swofty.commons.bedwars.BedwarsLevelColor;
7+
import net.swofty.commons.bedwars.BedwarsLevelUtil;
8+
import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong;
9+
import net.swofty.type.generic.data.handlers.BedWarsDataHandler;
610
import net.swofty.type.generic.entity.npc.HypixelNPC;
711
import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
812
import net.swofty.type.generic.user.HypixelPlayer;
913

14+
import static net.swofty.commons.bedwars.BedwarsLevelUtil.suffix;
15+
1016
public class NPCStats extends HypixelNPC {
1117

1218
public NPCStats() {
1319
super(new HumanConfiguration() {
1420
@Override
1521
public String[] holograms(HypixelPlayer player) {
22+
BedWarsDataHandler handler = BedWarsDataHandler.getUser(player);
23+
int level = 0;
24+
int progress = 0;
25+
int maxExperience = 0;
26+
long experience = 0;
27+
if (handler != null) {
28+
experience = handler.get(BedWarsDataHandler.Data.EXPERIENCE, DatapointLeaderboardLong.class).getValue();
29+
level = BedwarsLevelUtil.calculateLevel(experience);
30+
progress = BedwarsLevelUtil.calculateExperienceSinceLastLevel(experience);
31+
maxExperience = BedwarsLevelUtil.calculateMaxExperienceFromExperience(experience);
32+
}
1633
return new String[]{
1734
"§6§lBed Wars Profile",
18-
"§fYour Level: ",
19-
"§fProgress: ",
20-
"§fAchievements: ",
21-
"§fTotal Wins: ",
22-
"§fCurrent Winstreak: §a0",
35+
"§fYour Level: " + BedwarsLevelColor.constructLevelBrackets(level),
36+
"§fProgress: §b" + suffix(progress) + "§7/§a" + suffix(maxExperience),
37+
"§fAchievements: §e" + 0 + "§a/" + 0,
38+
"§fTotal Wins: §a" + 0,
39+
"§fCurrent Winstreak: §a" + 0,
2340
"§e§lCLICK FOR STATS",
2441
};
2542
}

0 commit comments

Comments
 (0)