Treat unknown enum values in deed and rune JSON as parse failures

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MagicBotandClaude Opus 5.5 committed 2026-10-17 07:48:11 -04:00
1 parent 7309159f83
commit 08d4bc2501
3 files changed
+11 -40

No files matched your search

+7 -23
View File
@@ -84,8 +84,7 @@ public class CacheParserUtil {
}
// Exact match on the cleaned name first, then upper case (ResourceType).
// Unknown values are logged and returned as null so one bad value
// doesn't drop the whole template.
// Unknown values throw so the template fails to load.
public static <E extends Enum<E>> E readEnum(Class<E> enumClass, String value, int templateId, String fieldName) {
@@ -100,22 +99,16 @@ public class CacheParserUtil {
try {
return Enum.valueOf(enumClass, name.toUpperCase());
} catch (IllegalArgumentException e) {
Logger.error(templateId + ": " + fieldName + " has no " + enumClass.getSimpleName() + " for '" + value + "'");
return null;
throw new IllegalArgumentException(templateId + ": " + fieldName + " has no " + enumClass.getSimpleName() + " for '" + value + "'");
}
}
public static <E extends Enum<E>> EnumSet<E> readEnumSet(Class<E> enumClass, JSONArray valuesJson, int templateId, String fieldName) {
EnumSet<E> enumSet = EnumSet.noneOf(enumClass);
E enumValue;
for (int i = 0; i < valuesJson.length(); i++) {
enumValue = readEnum(enumClass, valuesJson.getString(i), templateId, fieldName);
if (enumValue != null)
enumSet.add(enumValue);
}
for (int i = 0; i < valuesJson.length(); i++)
enumSet.add(readEnum(enumClass, valuesJson.getString(i), templateId, fieldName));
return enumSet;
}
@@ -128,14 +121,10 @@ public class CacheParserUtil {
EnumMap<E, Integer> enumMap = new EnumMap<>(enumClass);
JSONObject entry;
E enumValue;
for (int i = 0; i < entriesJson.length(); i++) {
entry = entriesJson.getJSONObject(i);
enumValue = readEnum(enumClass, entry.getString(keyName), templateId, fieldName);
if (enumValue != null)
enumMap.put(enumValue, entry.getInt(valueName));
enumMap.put(readEnum(enumClass, entry.getString(keyName), templateId, fieldName), entry.getInt(valueName));
}
return enumMap;
@@ -162,14 +151,9 @@ public class CacheParserUtil {
int templateId, String fieldName) {
EnumMap<E, Float> enumMap = new EnumMap<>(enumClass);
E enumValue;
for (String key : mapJson.keySet()) {
enumValue = readEnum(enumClass, key, templateId, fieldName);
if (enumValue != null)
enumMap.put(enumValue, mapJson.getFloat(key));
}
for (String key : mapJson.keySet())
enumMap.put(readEnum(enumClass, key, templateId, fieldName), mapJson.getFloat(key));
return enumMap;
}