public void initialize() {
    SpongeBootstrap.initializeRegistry();
    postState(InitializationEvent.class);

    if (!this.game.getServiceManager().provide(PermissionService.class).isPresent()) {
      try {
        SpongePermissionService service = new SpongePermissionService();
        // Setup default permissions
        service
            .getGroupForOpLevel(2)
            .getSubjectData()
            .setPermission(SubjectData.GLOBAL_CONTEXT, "minecraft.commandblock", Tristate.TRUE);
        this.game.getServiceManager().setProvider(this, PermissionService.class, service);
      } catch (ProviderExistsException e) {
        // It's a fallback, ignore
      }
    }

    SpongeBootstrap.postInitializeRegistry();
    SerializationService service =
        this.game.getServiceManager().provide(SerializationService.class).get();
    ((SpongeSerializationService) service).completeRegistration();

    postState(PostInitializationEvent.class);

    Sponge.getLogger().info("Successfully loaded and initialized plugins.");

    postState(LoadCompleteEvent.class);
  }