diff --git a/src/engine/parsers/cache/CacheParserUtil.java b/src/engine/parsers/cache/CacheParserUtil.java index c4d0bfaa..a5875113 100644 --- a/src/engine/parsers/cache/CacheParserUtil.java +++ b/src/engine/parsers/cache/CacheParserUtil.java @@ -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 readEnum(Class 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 > EnumSet readEnumSet(Class enumClass, JSONArray valuesJson, int templateId, String fieldName) { EnumSet 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 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 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; } diff --git a/src/engine/parsers/cache/DeedParser.java b/src/engine/parsers/cache/DeedParser.java index 52de5769..c4e3083a 100644 --- a/src/engine/parsers/cache/DeedParser.java +++ b/src/engine/parsers/cache/DeedParser.java @@ -60,7 +60,6 @@ public class DeedParser { JSONObject discReq; JSONArray itemFlags; String flag; - mbEnums.ItemFlags itemFlag; deed.template_id = templateId; @@ -124,10 +123,7 @@ public class DeedParser { if (flag.equals("None")) continue; - itemFlag = CacheParserUtil.readEnum(mbEnums.ItemFlags.class, flag, templateId, "item_flags"); - - if (itemFlag != null) - deed.item_flags.add(itemFlag); + deed.item_flags.add(CacheParserUtil.readEnum(mbEnums.ItemFlags.class, flag, templateId, "item_flags")); } deed.item_use_flags.addAll(CacheParserUtil.readEnumSet(mbEnums.ItemUseFlags.class, deedJson.getJSONArray("item_use_flags"), templateId, "item_use_flags")); diff --git a/src/engine/parsers/cache/RuneParser.java b/src/engine/parsers/cache/RuneParser.java index b913a345..f3358c28 100644 --- a/src/engine/parsers/cache/RuneParser.java +++ b/src/engine/parsers/cache/RuneParser.java @@ -60,10 +60,8 @@ public class RuneParser { JSONObject discReq; JSONArray itemFlags; String flag; - mbEnums.ItemFlags itemFlag; Object subType; JSONObject speedJson; - mbEnums.MovementType movementType; JSONObject groupJson; JSONArray skillGrantsJson; JSONObject skillGrantJson; @@ -140,10 +138,7 @@ public class RuneParser { if (flag.equals("None")) continue; - itemFlag = CacheParserUtil.readEnum(mbEnums.ItemFlags.class, flag, templateId, "item_flags"); - - if (itemFlag != null) - rune.item_flags.add(itemFlag); + rune.item_flags.add(CacheParserUtil.readEnum(mbEnums.ItemFlags.class, flag, templateId, "item_flags")); } rune.item_use_flags.addAll(CacheParserUtil.readEnumSet(mbEnums.ItemUseFlags.class, runeJson.getJSONArray("item_use_flags"), templateId, "item_use_flags")); @@ -212,12 +207,8 @@ public class RuneParser { speedJson = runeJson.getJSONObject("rune_speed"); - for (String speedKey : speedJson.keySet()) { - movementType = CacheParserUtil.readEnum(mbEnums.MovementType.class, speedKey, templateId, "rune_speed"); - - if (movementType != null) - rune.rune_speed.put(movementType, speedJson.getFloat(speedKey)); - } + for (String speedKey : speedJson.keySet()) + rune.rune_speed.put(CacheParserUtil.readEnum(mbEnums.MovementType.class, speedKey, templateId, "rune_speed"), speedJson.getFloat(speedKey)); groupJson = runeJson.getJSONObject("rune_group"); rune.rune_group_type = groupJson.getInt("group_type");