@SuppressWarnings("unchecked")
private boolean upgradeSpellLevels(Object value) {
if (!(value instanceof Map) && !(value instanceof ConfigurationSection)) return false;
boolean modified = false;
Map<String, Integer> spellLevels = getSpellLevels();
Map<String, Integer> newLevels;
if (value instanceof Map) {
newLevels = (Map<String, Integer>)value;
} else {
newLevels = NMSUtils.getTypedMap((ConfigurationSection)value);
}
for (Map.Entry<String, Integer> entry : newLevels.entrySet()) {
Integer newLevel = entry.getValue();
String key = entry.getKey();
Object existingLevel = spellLevels.get(key);
if (existingLevel == null || newLevel > (Integer)existingLevel) {
modified = true;
sendDebug("Upgraded spell level for " + key + " from " + existingLevel + " to " + newLevel);
spellLevels.put(key, newLevel);
}
}
if (modified) {
setProperty("spell_levels", spellLevels);
}
return modified;
}