From 87d58d2a6f6d65544e140d54bc17dc2c1c7f3fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=8F=E3=83=A0=E3=82=B9=E3=82=B1=20=E3=83=8F=E3=83=A0?= Date: Sun, 20 Aug 2023 10:46:49 +0900 Subject: [PATCH] feat: ability to register new achievements --- .../grasscutter/game/achievement/Achievements.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/emu/grasscutter/game/achievement/Achievements.java b/src/main/java/emu/grasscutter/game/achievement/Achievements.java index 502f920dd..551681ebc 100644 --- a/src/main/java/emu/grasscutter/game/achievement/Achievements.java +++ b/src/main/java/emu/grasscutter/game/achievement/Achievements.java @@ -318,6 +318,18 @@ public class Achievements { this.player = player; } + this.registerNewAchievementsIfExist(); this.player.sendPacket(new PacketAchievementAllDataNotify(this.player)); } + + private void registerNewAchievementsIfExist() { + GameData.getAchievementDataMap().values().stream() + .filter(AchievementData::isUsed) + .filter(a -> !this.achievementList.containsKey(a.getId())) + .forEach(a -> { + Grasscutter.getLogger().info("Registering a new achievement (id: {})", a.getId()); + this.achievementList.put(a.getId(), new Achievement(AchievementStatus.UNFINISHED, a.getId(), a.getProgress(), 0, 0)); + }); + this.save(); + } }