Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/CollapseLauncher/Collapse/llms.txt

Use this file to discover all available pages before exploring further.

Every plugin directory must contain a manifest.json file at its root. Collapse reads this file before loading the DLL to obtain the plugin’s display metadata and the list of files that make up the plugin. The same schema is used for both local installation manifests and remote update manifests served from CDN.

Schema

MainLibraryName

MainLibraryName
string
required
File name of the native plugin DLL, including the .dll extension.Used to locate the entry-point binary inside the plugin directory. If the file does not exist at <pluginDir>/<MainLibraryName>, the plugin is skipped with a warning.Example: "MyGame.Plugin.dll"
MainPluginName
string
required
Human-readable plugin name displayed in the Plugin Manager and in error messages.Collapse falls back to this value if IPlugin.GetPluginName returns null after loading.Example: "My Game"
MainPluginDescription
string
required
Short description of the plugin, shown in the Plugin Manager.Collapse falls back to this value if IPlugin.GetPluginDescription returns null.Example: "Community plugin adding support for My Game Global server"
MainPluginAuthor
string
required
Name of the plugin author or team.Collapse falls back to this value if IPlugin.GetPluginAuthor returns null.Example: "Jane Dev"
PluginVersion
string
required
The plugin’s own release version in four-part format: Major.Minor.Build.Revision.This value is parsed into a GameVersion struct and compared against the version returned by the GetPluginVersion export. During managed update checks, Collapse fetches the remote manifest and compares PluginVersion to decide whether an update is available.Format: "1.0.0.0"
PluginStandardVersion
string
required
The plugin SDK standard version this plugin was compiled against, in four-part format.This value is parsed and stored alongside the value returned by GetPluginStandardVersion. Used for future compatibility checks between the plugin SDK and the launcher.Format: "1.0.0.0"
PluginCreationDate
string (ISO 8601)
required
Creation or release date of this plugin version.Stored as a DateTimeOffset and surfaced in the Plugin Manager. Collapse also uses this value as the LastUpdated timestamp in the launcher’s metadata stamp dictionary.Format: "2026-01-15T00:00:00Z"
Assets
array
required
List of files that make up the plugin. During installation and managed updates, Collapse copies and verifies each file in this list.Minimum: Must contain at least the DLL entry point. Collapse automatically adds manifest.json to the asset list if it is absent, with an empty hash.Each element is a PluginManifestAssetInfo object:
Assets[].FilePath
string
required
Relative path of the asset file within the plugin directory (and within the ZIP archive during packaging). Use forward slashes for subdirectory separators.Example: "MyGame.Plugin.dll", "data/resources.bin"
Assets[].FileHash
byte array (JSON number array)
required
MD5 hash of the file contents, represented as a JSON array of bytes (integers 0–255).During managed updates, Collapse downloads each asset and verifies its MD5 hash against this value. The check accepts both little-endian and big-endian byte order (Collapse tries both). An empty array ([]) disables hash verification for that asset (used for manifest.json itself).
Assets[].Size
integer
File size in bytes. Used for download progress calculation during managed updates. Optional — omitting it results in indeterminate progress for that asset.
PluginAlternativeIcon
string
URL or base64-encoded image used as the plugin’s icon in the Plugin Manager.Optional. If absent, Collapse uses a default plugin icon.
ManifestDate
string (ISO 8601)
Date the manifest was generated. Used internally in update result processing (SelfUpdateReturnInfo.CompiledDate).Optional. If absent, defaults to DateTimeOffset.MinValue.

Asset hash format

FileHash is an MD5 digest expressed as a JSON array of bytes, not a hex string. To generate the correct value:
using System.Security.Cryptography;
using System.Text.Json;

byte[] fileBytes = File.ReadAllBytes("MyGame.Plugin.dll");
byte[] hash      = MD5.HashData(fileBytes);

// Produces: [161, 178, 195, ...]
string json = JsonSerializer.Serialize(hash);
Collapse accepts both byte orders during verification (it tries the hash as-is, then reverses and tries again). However, always store the hash in the canonical little-endian order produced by MD5.HashData.
Set FileHash to [] (empty array) for manifest.json itself. Collapse always skips hash verification for the manifest file.

Directory naming convention

When Collapse installs a plugin, it creates the plugin directory using this formula:
Hi3Helper.Plugin.<DllNameWithoutExtension>
For MainLibraryName = "MyGame.Plugin.dll", the directory will be:
<AppPluginFolder>\Hi3Helper.Plugin.MyGame.Plugin\
The plugin loader enumerates directories matching the glob Hi3Helper.Plugin.* at startup.

Complete example

manifest.json
{
  "MainLibraryName": "MyGame.Plugin.dll",
  "MainPluginName": "My Game",
  "MainPluginDescription": "Community plugin for My Game — Global and Asia servers",
  "MainPluginAuthor": "Jane Dev",
  "PluginVersion": "1.2.0.0",
  "PluginStandardVersion": "1.0.0.0",
  "PluginCreationDate": "2026-03-01T12:00:00Z",
  "ManifestDate": "2026-03-01T12:30:00Z",
  "Assets": [
    {
      "FilePath": "MyGame.Plugin.dll",
      "FileHash": [161, 178, 195, 212, 229, 246, 7, 24, 41, 58, 75, 92, 109, 126, 143, 160],
      "Size": 4194304
    },
    {
      "FilePath": "manifest.json",
      "FileHash": [],
      "Size": 512
    }
  ]
}

CDN update manifest

When serving an update manifest from a CDN (via GetPluginUpdateCdnList), the file must be named manifest.json and served from the CDN base URL. Collapse fetches <cdnBaseUrl>/manifest.json and compares PluginVersion to the installed version. The update manifest’s Assets list drives the file download — Collapse downloads each asset from <cdnBaseUrl>/<asset.FilePath>, verifies its hash, and stages the files in the _markPendingUpdate/ staging directory.
During a managed update, Collapse retries each asset download up to five times on failure before aborting the update.

Build docs developers (and LLMs) love