use of org.lanternpowered.server.game.registry.CatalogMappingDataHolder in project LanternServer by LanternPowered.
the class LanternGameRegistry method getCatalogMappingData.
@SuppressWarnings("unchecked")
private List<CatalogMappingData> getCatalogMappingData(RegistryModule module) {
Map<String, ?> mappings = null;
if (module instanceof AlternateCatalogRegistryModule) {
mappings = checkNotNull(((AlternateCatalogRegistryModule) module).provideCatalogMap());
}
final List<CatalogMappingData> data = new ArrayList<>();
for (Field field : module.getClass().getDeclaredFields()) {
RegisterCatalog annotation = field.getAnnotation(RegisterCatalog.class);
if (annotation != null) {
if (mappings == null) {
try {
field.setAccessible(true);
mappings = (Map<String, ?>) field.get(module);
checkState(!mappings.isEmpty(), "The registered module: " + module.getClass().getSimpleName() + " cannot have an empty mapping during registration!");
} catch (Exception e) {
this.game.getLogger().error("Failed to retrieve a registry field from module: " + module.getClass().getCanonicalName(), e);
}
}
data.add(new CatalogMappingData(annotation, mappings));
}
}
if (module instanceof CatalogMappingDataHolder) {
data.addAll(((CatalogMappingDataHolder) module).getCatalogMappings());
}
return data;
}
Aggregations