use of org.spongepowered.api.registry.util.DelayedRegistration in project LanternServer by LanternPowered.
the class AdvancementTreeLayoutModule method registerDefaults.
@DelayedRegistration(RegistrationPhase.INIT)
@Override
public void registerDefaults() {
for (AdvancementTree tree : AdvancementTreeRegistryModule.get().getAll()) {
final LanternTreeLayout layout = new LanternTreeLayout(tree);
layout.generate();
}
}
use of org.spongepowered.api.registry.util.DelayedRegistration 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.DelayedRegistration in project LanternServer by LanternPowered.
the class LanternSmeltingRecipeRegistryModule method registerDefaults.
@DelayedRegistration(RegistrationPhase.POST_INIT)
@Override
public void registerDefaults() {
final PluginContainer plugin = Lantern.getMinecraftPlugin();
register(ISmeltingRecipe.builder().ingredient(ItemTypes.COBBLESTONE).result(ItemStack.of(ItemTypes.STONE, 1)).build("stone", plugin));
final ItemStack result = ItemStack.of(ItemTypes.IRON_INGOT, 1);
result.offer(Keys.DISPLAY_NAME, Text.of(TextColors.RESET, "Steel Ingot"));
register(ISmeltingRecipe.builder().ingredient(IIngredient.builder().with(ItemTypes.IRON_INGOT).withQuantity(2).build(), ItemStack.of(ItemTypes.IRON_INGOT, 1).createSnapshot()).result(result).build("steel_ingot", plugin));
}
use of org.spongepowered.api.registry.util.DelayedRegistration in project LanternServer by LanternPowered.
the class LanternFuelRegistryModule method registerDefaults.
@DelayedRegistration(RegistrationPhase.POST_INIT)
@Override
public void registerDefaults() {
final PluginContainer plugin = Lantern.getMinecraftPlugin();
register(IFuel.builder().ingredient(IIngredient.builder().with(ItemTypes.LAVA_BUCKET).withRemaining(ItemTypes.BUCKET).build()).burnTime(20000).build("lava_bucket", plugin));
register(IFuel.builder().ingredient(Ingredient.of(ItemTypes.COAL)).burnTime(1600).build("coal", plugin));
}
use of org.spongepowered.api.registry.util.DelayedRegistration 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