Skip to content

v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@malicean malicean released this 02 Dec 05:28

⚠️ This is a breaking update. If you are not a developer, please wait to update so that developers have enough time to update their mods. ⚠️

Consider joining our Discord server, The Deli Counter, for update news and support.

Changelog

Feature summary (not all-encompassing):

  • Globbing
  • Version checking
  • Patching
  • Minor QoL changes

Breaking Changes

Manifest

  • assets has been split into the optional dictionaries patcher and runtime.
  • Mods with 0 total assets (patcher + runtime) will now fail to load.
    • Old manifests will give this error

Framework

  • Deli is now 2 libraries
    • Deli performs bootstrapping and patching
    • Deli.Runtime handles DeliBehaviours (formerly DeliMods)
  • Mod
    • Now a class
    • Log property is now Logger
  • DeliMod is now DeliBehaviour
    • "Deli mods" are the archives files Deli loads
    • DeliMod was too similar to "Deli mod"
  • DeliBehaviour.BaseMod is now DeliBehaviour.Source
  • Several interface implementations have been marked as internal. It is unlikely you were using these.

Features

Manifest

  • Path globbing
    • ?: match any character
    • *: match any amount of characters
  • Optional sourceUrl manifest property
    • URL to your mod's webpage
    • Examples: GitHub/GitLab repository, BoneTome/NexusMods mod page
  • dependencies is now optional

Filesystem

  • Deli will now load .deli files on top of the current .zip files. Please rename your archives to .deli, users keep extracting zip files.

Framework

  • Deli (static class)
    • Centralized static API for the Deli framework
    • Replacement for and is safer than most non-generic kernel calls
  • DeliRuntime (static class)
    • Centralized static API for runtime code
  • DeliConstants (static class)
    • Previously internal, now public class
    • Has lots of information, including version, used Deli
  • DeliBehaviour now has convienience properties
    • They fulfill BepInEx's BaseUnityPlugin API, but this may change.
    • Allows for easy BepInEx plugin porting
  • IPatcher
    • BepInEx-like patcher interface
    • Allows for patchers through Deli
    • Add your own by calling Deli.AddPatcher
  • IVersionCheckable
    • Provides version checking for a domain
    • Uses sourceUrl to generate an IVersionChecker
      • Performs an async version fetch
    • Requires no dependencies; checking is done where possible.
    • GitHub URLs are implemented via Deli.Core.
  • RegEx mod asset search
    • See IFindableIO, implemented by IResourceIO for RegEx support

Deli.Core

  • Native (DllImport) assembly asset loader
    • Name: assembly.native
    • Path: a native assembly
  • GitHub version checkable
    • Domain: github.com

Deli.MonoMod

  • Newly created
  • MonoMod patch asset loader

Fixes

  • Symbolically linked mods no longer cause exceptions
  • Fields and properties in DeliBehaviour are no longer null in the constructor.