From 577772831c74375c8267f8ee9667cd7cb43e7a32 Mon Sep 17 00:00:00 2001 From: AnimeGitB Date: Tue, 18 Oct 2022 19:19:08 +1030 Subject: [PATCH] Avoid NPE on CookingCompoundManager init --- .../managers/cooking/CookingCompoundManager.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java b/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java index 9f528f357..ad1f5b419 100644 --- a/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java +++ b/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java @@ -34,18 +34,16 @@ public class CookingCompoundManager extends BasePlayerManager { public static void initialize() { defaultUnlockedCompounds = new HashSet<>(); compoundGroups = new HashMap<>(); - for (var compound : GameData.getCompoundDataMap().values()) { + GameData.getCompoundDataMap().forEach((id, compound) -> { if (compound.isDefaultUnlocked()) { - defaultUnlockedCompounds.add(compound.getId()); + defaultUnlockedCompounds.add(id); } - if (!compoundGroups.containsKey(compound.getGroupId())) { - compoundGroups.put(compound.getGroupId(), new HashSet<>()); - } - compoundGroups.get(compound.getGroupId()).add(compound.getId()); - } + compoundGroups.computeIfAbsent(compound.getGroupId(), gid -> new HashSet<>()).add(id); + }); //TODO:Because we haven't implemented fishing feature,unlock all compounds related to fish.Besides,it should be bound to player rather than manager. unlocked = new HashSet<>(defaultUnlockedCompounds); - unlocked.addAll(compoundGroups.get(3)); + if (compoundGroups.containsKey(3)) // Avoid NPE from Resources error + unlocked.addAll(compoundGroups.get(3)); } private synchronized List getCompoundQueueData() {