use of org.spongepowered.api.registry.util.CustomCatalogRegistration in project SpongeCommon by SpongePowered.
the class EntityTypeRegistryModule method registerCatalogs.
@CustomCatalogRegistration
public void registerCatalogs() {
registerDefaults();
RegistryHelper.mapFields(EntityTypes.class, fieldName -> {
if (fieldName.equals("UNKNOWN")) {
return SpongeEntityType.UNKNOWN;
}
EntityType entityType = this.entityTypeMappings.get(fieldName.toLowerCase(Locale.ENGLISH));
this.entityClassToTypeMappings.put(((SpongeEntityType) entityType).entityClass, entityType);
// remove old mapping
this.entityTypeMappings.remove(fieldName.toLowerCase(Locale.ENGLISH));
// add new mapping with minecraft id
this.entityTypeMappings.put(entityType.getId(), entityType);
return entityType;
});
this.entityTypeMappings.put("minecraft:ozelot", this.entityTypeMappings.get("minecraft:ocelot"));
}
use of org.spongepowered.api.registry.util.CustomCatalogRegistration in project LanternServer by LanternPowered.
the class GeneratorTypeRegistryModule method postInit.
/**
* Post initialize the {@link GeneratorType}s. All the default world generators
* here be selected by scanning for 'default-world-gen.json' files.
*/
@CustomCatalogRegistration
@DelayedRegistration(RegistrationPhase.POST_INIT)
public void postInit() {
final Multimap<String, DefaultEntry> entries = HashMultimap.create();
final Gson gson = new Gson();
// Scan every plugin
for (PluginContainer pluginContainer : Sponge.getPluginManager().getPlugins()) {
final Optional<Asset> optAsset = pluginContainer.getAsset("default-world-gen.json");
if (optAsset.isPresent()) {
try {
final InputStream is = optAsset.get().getUrl().openStream();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
final JsonObject json = gson.fromJson(reader, JsonObject.class);
for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
entries.put(entry.getKey(), new DefaultEntry(pluginContainer, entry.getValue().getAsString()));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
for (Map.Entry<String, Collection<DefaultEntry>> entry : entries.asMap().entrySet()) {
final String id = entry.getKey();
if (!getById(id).map(type -> type instanceof DelegateGeneratorType).orElse(false)) {
Lantern.getLogger().warn("The plugin(s) ({}) attempted to map an unknown id: {}", Arrays.toString(entry.getValue().stream().map(e -> e.pluginContainer.getId()).toArray()), id);
continue;
}
final List<DefaultEntry> possibleEntries = new ArrayList<>();
for (DefaultEntry entry1 : entry.getValue()) {
final Optional<GeneratorType> generatorType = getById(entry1.type);
if (generatorType.isPresent()) {
possibleEntries.add(entry1);
} else {
Lantern.getLogger().warn("The plugin {} attempted to map a missing generator type {} for {}", entry1.pluginContainer.getId(), entry1.type, id);
}
}
if (!possibleEntries.isEmpty()) {
final DefaultEntry defaultEntry = possibleEntries.get(0);
if (possibleEntries.size() > 1) {
Lantern.getLogger().warn("Multiple plugins are mapping {}: {}", id, Arrays.toString(entry.getValue().stream().map(e -> "\n" + e.pluginContainer.getId() + ": " + e.type).toArray()));
Lantern.getLogger().warn("The first one will be used.");
}
((DelegateGeneratorType) getById(id).get()).setGeneratorType(getById(defaultEntry.type).get());
Lantern.getLogger().warn("Successfully registered a generator type mapping: {} from {} for {}", defaultEntry.type, defaultEntry.pluginContainer.getId(), id);
}
}
}
use of org.spongepowered.api.registry.util.CustomCatalogRegistration in project SpongeCommon by SpongePowered.
the class RegistryModuleLoader method isCustomProperPhase.
private static boolean isCustomProperPhase(RegistryModule module) {
for (Method method : module.getClass().getMethods()) {
CustomCatalogRegistration registration = method.getDeclaredAnnotation(CustomCatalogRegistration.class);
DelayedRegistration delay = method.getDeclaredAnnotation(DelayedRegistration.class);
if (registration != null) {
if (delay == null) {
return SpongeImpl.getRegistry().getPhase() == RegistrationPhase.PRE_REGISTRY;
}
return SpongeImpl.getRegistry().getPhase() == delay.value();
}
}
return false;
}
Aggregations