Initial commit
This commit is contained in:
commit
d5d9fbf47c
1 changed files with 942 additions and 0 deletions
56
README.md
Normal file
56
README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# BlockMelonLoader
|
||||
|
||||
A .NET Framework 4.8 library with no Unity or MelonLoader dependency.
|
||||
Call `BlockMelonLoader.LoaderGuard.EnsureAllowed("YourMod")` before initializing
|
||||
a mod. Building this library does not require a game installation.
|
||||
|
||||
If an assembly named `MelonLoader` is loaded in the current AppDomain, the guard
|
||||
shows a Windows error dialog and calls `Environment.FailFast` after dismissal.
|
||||
Termination also happens if showing the dialog fails. On other platforms the
|
||||
message is written to standard error before termination; there is no native dialog.
|
||||
The guard does not inspect installation folders, modify loader files, or monitor
|
||||
assemblies loaded after the check. UMM and MelonLoader running together are blocked.
|
||||
|
||||
Add a `PackageReference` dependency on `BlockMelonLoader` version `1.0.0`.
|
||||
Ship `BlockMelonLoader.dll` alongside your mod DLL; NuGet copies the runtime asset
|
||||
to the consuming project's build output.
|
||||
|
||||
This is an initialization guard, not a MelonLoader plugin. Simply placing the
|
||||
UMM-only mod DLL in MelonLoader's Mods folder will not invoke the guard.
|
||||
A bridge that invokes the UMM entry point is checked; direct assembly loading
|
||||
without invoking that entry point is not. Modified binaries can bypass this check.
|
||||
|
||||
## Build and test
|
||||
|
||||
On Windows, run `./build.ps1 -Test`. Visual Studio or Rider MSBuild is required;
|
||||
use `-MSBuildPath` to select it explicitly. The script downloads .NET Framework
|
||||
4.8 reference assemblies into the ignored `packages` folder when needed.
|
||||
The DLL is written to `bin/Release/BlockMelonLoader.dll` and the NuGet package to
|
||||
`artifacts/BlockMelonLoader.1.0.0.nupkg`. Packaging uses `NuGet.Build.Tasks.Pack`.
|
||||
|
||||
The standalone tests check detection, notification ordering, and dialog failure
|
||||
handling. They substitute the dialog and termination callbacks and do not crash
|
||||
the game. Run them directly with `Tests/bin/Release/BlockMelonLoader.Tests.exe`.
|
||||
|
||||
## Installation
|
||||
|
||||
The NuGet feed for this project is:
|
||||
|
||||
```text
|
||||
https://git.mizuki.guru/api/packages/imnyang/nuget/index.json
|
||||
```
|
||||
|
||||
Add that feed to the consuming project's `NuGet.Config`, then add the dependency:
|
||||
|
||||
```xml
|
||||
<PackageReference Include="BlockMelonLoader" Version="[1.0.0]" />
|
||||
```
|
||||
|
||||
For local development, build this repository and use the generated `.nupkg` in
|
||||
a local NuGet feed. The source repository is not required when building a consumer.
|
||||
New library versions must use a new package version and update the consumer's
|
||||
dependency version.
|
||||
|
||||
## License
|
||||
|
||||
GNU General Public License version 3 only (`GPL-3.0-only`); see `LICENSE.md`.
|
||||
Reference in a new issue