Skip to content

Version 1.12.0

Compare
Choose a tag to compare
@nicoco007 nicoco007 released this 22 Sep 20:39
· 13 commits to master since this release

Game Compatibility

✔️ Compatible with Beat Saber 1.37.4 – 1.37.5

⚠️ Breaking Changes ⚠️

  • BSMLParser/BSMLSettings/MenuButtons/GameplaySetup instances now only exist once the main menu is loaded. You must now call them in Zenject's IInitializable.Initialize, BS Utils' earlyMenuSceneLoadedFresh/lateMenuSceneLoadedFresh events, or BSML's own MainMenuAwaiter.MainMenuInitializing event.
  • BSMLParser.Parse(...) can only be called once the main menu has initialized.
  • Switched from XmlDocument (System.Xml) to XDocument (System.Xml.Linq). Impacts custom macros.
  • Switched all public fields to properties and normalized casing of public properties to PascalCase.
  • Switched various Action fields to events.
  • Removed the following obsolete types:
    • BoolSetting
    • FloatingScreenMoverPointer
    • HotReloadableViewController
    • INotifiableHost
    • PropertyChangedEventArgs
  • Removed the following obsolete members:
    • AnimationControllerData.animMaterial
    • AnimationInfo.frameCount
    • AnimationInfo.initialized
    • AnimationLoader.Process()
    • AnimationLoader.ProcessAnimationInfo(AnimationInfo, Action<Texture2D, Rect[], float[], int, int> callback)
    • APNGUnityDecoder.Process(byte[], Action<AnimationInfo>)
    • BSMLTag.Setup()
    • BSMLTag.isInitialized
    • BSMLViewController.didActivate
    • GIFUnityDecoder.Process(byte[], Action<AnimationInfo>)
    • ModalKeyboard.DrawCursor()
    • Utilities.GetData()
    • Utilities.GetListOfType<T>(params object[])
  • Removed Exceptions namespace. All exceptions are now in the root namespace.
  • Internalized APNG, OpenType, and test classes.
  • Removed GameplaySetup.SetTabVisibility since it conflicted with user-defined visibility of tabs.

Other changes

  • Added support for properties when using UIComponent and UIObject
  • Updated main menu mod buttons view to use the game's regular heading.
  • Fixed IndexOutOfRangeException in dropdown list when there are no values.
  • Tags, macros, and type handlers can now be registered through Zenject. For example:
    Container.Bind<BSMLTag>().To<MyTag>().AsSingle();
    Container.Bind<BSMLMacro>().To<MyMacro>().AsSingle();
    Container.Bind<TypeHandler>().To<MyTypeHandler>().AsSingle();