Skip to content

Commit f2da30a

Browse files
Fix NPE when no divisions exist (#148)
1 parent 4296cca commit f2da30a

File tree

6 files changed

+10
-5
lines changed

6 files changed

+10
-5
lines changed

Plugin/src/main/java/dev/lrxh/neptune/feature/divisions/DivisionService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public void save() {
6565
}
6666

6767
public Division getDivisionByElo(int elo) {
68+
if (divisions.isEmpty()) return null;
6869
for (Division division : divisions) {
6970
if (elo >= division.getEloRequired()) {
7071
return division;

Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/button/StatButton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public ItemStack getItemStack(Player player) {
3535
new Replacement("<deaths>", String.valueOf(data.getDeaths())),
3636
new Replacement("<win_streak_current>", String.valueOf(data.getCurrentStreak())),
3737
new Replacement("<win_streak_best>", String.valueOf(data.getBestStreak())),
38-
new Replacement("<division>", String.valueOf(data.getDivision().getDisplayName())),
38+
new Replacement("<division>", data.getDivision() == null ? "None" : String.valueOf(data.getDivision().getDisplayName())),
3939
new Replacement("<played>", String.valueOf(data.getWins() + data.getLosses())),
4040
new Replacement("<kill_death_ratio>", String.valueOf(data.getKdr()))), player)
4141

Plugin/src/main/java/dev/lrxh/neptune/profile/data/KitData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public boolean updateElo(boolean won) {
100100
}
101101

102102
public boolean updateDivision() {
103+
if (DivisionService.get().divisions.isEmpty()) return false;
103104
Division previous = this.division;
104105
Division updated = DivisionService.get().getDivisionByElo(elo);
105106
if (updated == null) {

Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/PlaceholderUtil.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,14 @@ public String format(String line, Player player) {
5858
return line;
5959
ProfileState state = profile.getState();
6060

61+
Division division = profile.getGameData().getGlobalStats().getDivision();
62+
6163
line = line.replaceAll("<online>", String.valueOf(Bukkit.getServer().getOnlinePlayers().size()));
6264
line = line.replaceAll("<queued>", String.valueOf(QueueService.get().getQueueSize()));
6365
line = line.replaceAll("<in-match>", String.valueOf(MatchService.get().matches.size()));
6466
line = line.replaceAll("<player>", player.getName());
6567
line = line.replaceAll("<ping>", String.valueOf((PlayerUtil.getPing(player))));
66-
line = line.replaceAll("<division>", profile.getGameData().getGlobalStats().getDivision().getDisplayName());
68+
line = line.replaceAll("<division>", division == null ? "None" : division.getDisplayName());
6769

6870
GlobalStats globalStats = profile.getGameData().getGlobalStats();
6971
line = line.replaceAll("<wins>", String.valueOf(globalStats.getWins()));
@@ -100,8 +102,9 @@ public String format(String line, Player player) {
100102
Participant participant = match.getParticipant(player.getUniqueId());
101103

102104
line = line.replaceAll("<maxPoints>", String.valueOf(match.getRounds()));
105+
Division kitDivision = profile.getGameData().get(match.getKit()).getDivision();
103106
line = line.replaceAll("<kit_division>",
104-
profile.getGameData().get(profile.getMatch().getKit()).getDivision().getDisplayName());
107+
kitDivision == null ? "None" : kitDivision.getDisplayName());
105108
if (match instanceof SoloFightMatch soloFightMatch) {
106109
Participant red = soloFightMatch.getParticipantA();
107110
Participant blue = soloFightMatch.getParticipantB();

Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/DivisionPlaceholder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ public String parse(OfflinePlayer player, String string) {
1717
Profile profile = API.getProfile(player.getUniqueId());
1818
if (profile == null) return string;
1919
GlobalStats globalStats = profile.getGameData().getGlobalStats();
20-
return String.valueOf(globalStats.getDivision().getDisplayName());
20+
return globalStats.getDivision() == null ? "null" : String.valueOf(globalStats.getDivision().getDisplayName());
2121
}
2222
}

Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitDivisionPlaceholder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public String parse(OfflinePlayer player, String string) {
2828
KitData data = profile.getGameData().get(KitService.get().getKitByName(matcher.group(1)));
2929
if (data == null) return string;
3030

31-
return data.getDivision().getDisplayName();
31+
return data.getDivision() == null ? "null" : String.valueOf(data.getDivision().getDisplayName());
3232
}
3333
}

0 commit comments

Comments
 (0)