From 5db73d28496edf5ce26b01f21966797eb8d953f5 Mon Sep 17 00:00:00 2001
From: omg-xtao <100690902+omg-xtao@users.noreply.github.com>
Date: Tue, 23 Aug 2022 21:59:52 +0800
Subject: [PATCH] Fix QuestEncryptionKeys Path (#1696)

* Fix QuestEncryptionKeys Path

* Load resources QuestEncryptionKeys
---
 .../java/emu/grasscutter/data/DataLoader.java     |  2 +-
 .../java/emu/grasscutter/data/ResourceLoader.java | 15 ++++++++++-----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/main/java/emu/grasscutter/data/DataLoader.java b/src/main/java/emu/grasscutter/data/DataLoader.java
index f2b18ee9..86908165 100644
--- a/src/main/java/emu/grasscutter/data/DataLoader.java
+++ b/src/main/java/emu/grasscutter/data/DataLoader.java
@@ -112,7 +112,7 @@ public class DataLoader {
 
         if (!Utils.fileExists(filePath)) {
             // Check if file is in subdirectory
-            if (name.indexOf("/") != -1) {
+            if (name.contains("/")) {
                 String[] path = name.split("/");
 
                 String folder = "";
diff --git a/src/main/java/emu/grasscutter/data/ResourceLoader.java b/src/main/java/emu/grasscutter/data/ResourceLoader.java
index 9b9ec2fc..d89f1e1b 100644
--- a/src/main/java/emu/grasscutter/data/ResourceLoader.java
+++ b/src/main/java/emu/grasscutter/data/ResourceLoader.java
@@ -413,13 +413,18 @@ public class ResourceLoader {
         }
 
         try {
-            List<QuestEncryptionKey> keys = DataLoader.loadList("QuestEncryptionKeys.json", QuestEncryptionKey.class);
-
+            List<QuestEncryptionKey> keys;
             Int2ObjectMap<QuestEncryptionKey> questEncryptionMap = GameData.getMainQuestEncryptionMap();
-            keys.forEach(key -> questEncryptionMap.put(key.getMainQuestId(), key));
+            String path = "QuestEncryptionKeys.json";
+            if (Utils.fileExists(RESOURCE(path))) {
+                keys = JsonUtils.loadToList(RESOURCE(path), QuestEncryptionKey.class);
+                keys.forEach(key -> questEncryptionMap.put(key.getMainQuestId(), key));
+            }
+            if (Utils.fileExists(DATA(path))) {
+                keys = DataLoader.loadList(path, QuestEncryptionKey.class);
+                keys.forEach(key -> questEncryptionMap.put(key.getMainQuestId(), key));
+            }
             Grasscutter.getLogger().debug("Loaded {} quest keys.", questEncryptionMap.size());
-        } catch (FileNotFoundException | NullPointerException ignored) {
-            Grasscutter.getLogger().warn("Unable to load quest keys - ./resources/QuestEncryptionKeys.json not found.");
         } catch (Exception e) {
             Grasscutter.getLogger().error("Unable to load quest keys.", e);
         }
-- 
GitLab