diff --git a/src/main/java/emu/lunarcore/data/GameData.java b/src/main/java/emu/lunarcore/data/GameData.java index b526b35..256c199 100644 --- a/src/main/java/emu/lunarcore/data/GameData.java +++ b/src/main/java/emu/lunarcore/data/GameData.java @@ -84,24 +84,7 @@ public class GameData { // Configs (Bin) @Getter private static Object2ObjectMap floorInfos = new Object2ObjectOpenHashMap<>(); - - public static Int2ObjectMap getMapForExcel(Class resourceDefinition) { - Int2ObjectMap map = null; - - try { - Field field = GameData.class.getDeclaredField(Utils.lowerCaseFirstChar(resourceDefinition.getSimpleName()) + "Map"); - field.setAccessible(true); - - map = (Int2ObjectMap) field.get(null); - - field.setAccessible(false); - } catch (Exception e) { - - } - - return map; - } - + public static List getAllRelicIds() { return relicExcelMap.values().stream().map(RelicExcel::getId).toList(); } diff --git a/src/main/java/emu/lunarcore/data/ResourceLoader.java b/src/main/java/emu/lunarcore/data/ResourceLoader.java index c4f1554..3244bcd 100644 --- a/src/main/java/emu/lunarcore/data/ResourceLoader.java +++ b/src/main/java/emu/lunarcore/data/ResourceLoader.java @@ -1,6 +1,7 @@ package emu.lunarcore.data; import java.io.*; +import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -21,6 +22,7 @@ import emu.lunarcore.data.ResourceDeserializers.LunarCoreDoubleDeserializer; import emu.lunarcore.data.ResourceDeserializers.LunarCoreHashDeserializer; import emu.lunarcore.data.config.FloorInfo.FloorGroupSimpleInfo; import emu.lunarcore.data.custom.ActivityScheduleData; +import emu.lunarcore.util.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; public class ResourceLoader { @@ -63,6 +65,23 @@ public class ResourceLoader { dir.mkdir(); } } + + private static Int2ObjectMap getMapForExcel(Class dataClass, Class resourceDefinition) { + Int2ObjectMap map = null; + + try { + Field field = dataClass.getDeclaredField(Utils.lowerCaseFirstChar(resourceDefinition.getSimpleName()) + "Map"); + field.setAccessible(true); + + map = (Int2ObjectMap) field.get(null); + + field.setAccessible(false); + } catch (Exception e) { + + } + + return map; + } private static List> getResourceDefClasses() { Reflections reflections = new Reflections(ResourceLoader.class.getPackage().getName()); @@ -90,7 +109,7 @@ public class ResourceLoader { } @SuppressWarnings("rawtypes") - Int2ObjectMap map = GameData.getMapForExcel(resourceDefinition); + Int2ObjectMap map = ResourceLoader.getMapForExcel(type.gameDataClass(), resourceDefinition); try { loadFromResource(resourceDefinition, type, map); diff --git a/src/main/java/emu/lunarcore/data/ResourceType.java b/src/main/java/emu/lunarcore/data/ResourceType.java index 92c8426..26a65ca 100644 --- a/src/main/java/emu/lunarcore/data/ResourceType.java +++ b/src/main/java/emu/lunarcore/data/ResourceType.java @@ -8,6 +8,8 @@ public @interface ResourceType { /** Names of the file that this Resource loads from */ String[] name(); + + Class gameDataClass() default GameData.class; /** Load priority - dictates which order to load this resource, with "highest" being loaded first */ LoadPriority loadPriority() default LoadPriority.NORMAL;