From 0b7f1ae3a2f1f222e955ec2c65228d38a7b5e377 Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:32:06 -0800 Subject: [PATCH] Fix battle pass red dot when logging in --- .../nebula/game/battlepass/BattlePass.java | 26 +++++++++++++++++++ .../game/battlepass/BattlePassManager.java | 4 +++ .../java/emu/nebula/game/player/Player.java | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/emu/nebula/game/battlepass/BattlePass.java b/src/main/java/emu/nebula/game/battlepass/BattlePass.java index b53da59..7974366 100644 --- a/src/main/java/emu/nebula/game/battlepass/BattlePass.java +++ b/src/main/java/emu/nebula/game/battlepass/BattlePass.java @@ -100,6 +100,32 @@ public class BattlePass implements GameDatabaseObject { } } + /** + * Returns true if any rewards or quests are claimable + */ + public synchronized boolean hasNew() { + // Check if any quests are complete but unclaimed + for (var quest : getQuests().values()) { + if (quest.isComplete() && !quest.isClaimed()) { + return true; + } + } + + // Check if we have any pending rewards + for (int i = 1; i <= this.getLevel(); i++) { + if (!this.getBasicReward().isSet(i)) { + return true; + } + + if (this.isPremium() && !this.getPremiumReward().isSet(i)) { + return true; + } + } + + // No claimable things + return false; + } + public synchronized void resetDailyQuests(boolean resetWeekly) { // Reset daily quests for (var data : GameData.getBattlePassQuestDataTable()) { diff --git a/src/main/java/emu/nebula/game/battlepass/BattlePassManager.java b/src/main/java/emu/nebula/game/battlepass/BattlePassManager.java index 0e92ed8..dd18f91 100644 --- a/src/main/java/emu/nebula/game/battlepass/BattlePassManager.java +++ b/src/main/java/emu/nebula/game/battlepass/BattlePassManager.java @@ -12,6 +12,10 @@ public class BattlePassManager extends PlayerManager { public BattlePassManager(Player player) { super(player); } + + public boolean hasNew() { + return this.getBattlePass().hasNew(); + } // Database diff --git a/src/main/java/emu/nebula/game/player/Player.java b/src/main/java/emu/nebula/game/player/Player.java index 01dabed..a4a12a3 100644 --- a/src/main/java/emu/nebula/game/player/Player.java +++ b/src/main/java/emu/nebula/game/player/Player.java @@ -828,7 +828,7 @@ public class Player implements GameDatabaseObject { .setNew(this.getMailbox().hasNewMail()); state.getMutableBattlePass() - .setState(1); + .setState(this.getBattlePassManager().hasNew() ? 1 : 0); state.getMutableAchievement() .setNew(this.getAchievementManager().hasNewAchievements());