NilLoader: Difference between revisions
Created page with "'''NilLoader''' is a lightweight modloader using the Java agent system/APIs to offer offer other possibilities for mods. It works on Mojang launcher, PrismMC/PolyMC, etc. Infobox WIP {{Infobox mod | name = NilLoader | image = 250x250px|center | categories = MOdloader | author = unascribed | version = 1.3.5 | mcversion = Beta 1.7-1.7.10 | loader = NilLoader | modrinth = https://git.sleeping.town/Nil/NilLoader }}..." |
Added Modloader Category |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
| name = NilLoader | | name = NilLoader | ||
| image = [[File:NilLoader Logo Capture.png|250x250px|center]] | | image = [[File:NilLoader Logo Capture.png|250x250px|center]] | ||
| categories = | | categories = Modloader | ||
| author = unascribed | | author = unascribed | ||
| version = 1.3.5 | | version = 1.3.5 | ||
| Line 20: | Line 20: | ||
[[File:Nilloader.png|thumb|SVG to PNG conversion]] | [[File:Nilloader.png|thumb|SVG to PNG conversion]] | ||
== Recommended Mods To Test == | |||
-[https://modrinth.com/mod/nilmenu NilMenu] for 1.4.7 | |||
-[https://modrinth.com/mod/sha1redemption Sha1Redemption] for 1.4.2 to 1.6.4 | |||
-[https://modrinth.com/mod/nilcord NilCord] for 1.4.7 | |||
-[https://modrinth.com/mod/legacyfreecam Legacy Freecam] for 1.0 (tagged as such) | |||
== Origins == | == Origins == | ||
| Line 118: | Line 128: | ||
[[File:NilLoader Logo Capture.png|thumb|NilLoader Capture of logo]] | [[File:NilLoader Logo Capture.png|thumb|NilLoader Capture of logo]] | ||
</td> | </td> | ||
[[Category:Modloader]] | |||
Latest revision as of 00:38, 19 August 2025
NilLoader is a lightweight modloader using the Java agent system/APIs to offer offer other possibilities for mods. It works on Mojang launcher, PrismMC/PolyMC, etc.
Infobox WIP
| Author |
unascribed |
|---|---|
| Latest Release |
{{{latest_release}}} |
| Initial Release |
{{{initial_release}}} |
| Mod Loaders |
{{{modloader}}} |
| Minecraft Versions |
{{{minecraft_version}}} |
| Modrinth |
{
"title": "NilLoader",
"rows": [
{
"field": "unascribed",
"label": "Author"
},
{
"field": "{{{latest_release}}}",
"label": "Latest Release"
},
{
"field": "{{{initial_release}}}",
"label": "Initial Release"
},
{
"field": "{{{modloader}}}",
"label": "Mod Loaders"
},
{
"field": "{{{minecraft_version}}}",
"label": "Minecraft Versions"
},
{
"field": "https://git.sleeping.town/Nil/NilLoader",
"label": "Modrinth"
}
],
"invimages": [],
"images": [
"[[File:NilLoader Logo Capture.png|250x250px|center]]"
]
}
NilLoader (ØL or 0L) is a minimal, easy-to-install, application-independent system for applying runtime patches to programs written in Java, compatible with any launcher that allows you to modify JVM arguments.
It's based on the native Java agent system, but provides a comprehensive and convenient API for defining class patches and entrypoints on top of it. It additionally provides a system for working with obfuscated environments, without forcing you to write code using obfuscated names. (Note that NilLoader does not provide a "high-level" bytecode patching system like Mixin; you have to write raw bytecode patches using Mini or ASM directly.)

Recommended Mods To Test
-NilMenu for 1.4.7
-Sha1Redemption for 1.4.2 to 1.6.4
-NilCord for 1.4.7
-Legacy Freecam for 1.0 (tagged as such)
Origins
NilLoader was primarily designed for Minecraft, like a lot of Java bytecode patching frameworks. In a Minecraft environment, it is compatible with all current and past loaders, and can patch any version of the game from Cave Game Test to the latest snapshot. However, since NilLoader is so generic, it does not come with many conveniences that other loaders do, such as intermediate mappings, cross-version compatibility, or any API of any kind. NilLoader lets you do two things: patch classes, and get told when the JVM starts before anything else has run.
However, given these two possibilities, you can do just about anything else you want. Note that NilLoader is not a replacement for Fabric or Forge, it is an additional option for supporting weird versions or doing things the other loaders won't let you do. Someone could very well build an entire API on top of NilLoader, but that someone will not be me, and it's not something I intend to have happen.
NilLoader has its origins in the cross-version patching framework created for Ears, used for its ports to Beta 1.7, early versions of Forge, NFC, etc. That is, more or less, its intended purpose.
How to install
Quote from the NilLoader page:
More comprehensive docs coming soon, but for now, check out NilExample to write mods, and use this Prism Launcher component JSON to install it. (Click "Add Empty" under versions, enter "NilLoader" and "com.unascribed.nilloader", then click Edit on the right, and replace the contents of the file it opens with that JSON.)
For other launchers, download the latest NilLoader from releases, put it in your .minecraft, rename it to NilLoader.jar, and add -javaagent:NilLoader.jar to your JVM arguments.
Broken down steps here:
Step 1: Setup PrismMC or PolyMC launchers (or others for their approripate methods).
Step 2: Go to the NilLoader installer website/source.
Step 3: Read the following quote below.
For Mojang launchers/other users
3.1: For other launchers use the NilLoader from the releases section and go to the .minecraft folder via %Appdata% for Windows, equivalents for Mac/Linux, etc. and set the JVM arguments under Installations tab for the Mojang launcher for example. This can be tricky but can work if applied correctly.
For PrismMC/PolyMC users
3.2: For the PrismMC/PolyMC launchers create a new instance, recommend creating a 1.4.7 vanilla/unmodded instance as many mods commonly support it. From there go to 'add empty' under the edit instance button/settings.
With 'add empty' 2 textboxes will be visible. In the top one put in the bottom one put , then load the game. You will notice the title screen won't change, but the json file will generate, this is important. Go to the 'patches' folder in the .minecraft for your PolyMC/PrismMC launcher instance you have created and edit it (as in open the file in any text document program/app). From there you will see the default information for the json file, you want to remove it and replace it with the NilLoader related code recommended. This will be the following below to compare the default the json generates, and the one to put into the json to replace it with.
Default JSON output for a Vanilla instance
Spaced in edit to look good in formatting, so if comes off weird just remove pargraph spacing, if it looks right just copy and paste or go to the official source for it and copy the RAW DATA of it
{
"formatVersion": 1,
"name": "NilLoader",
"uid": "com.unascribed.nilloader",
"version": "1"
}
To replace it with the NilLoader related code:
Spaced in edit to look good in formatting, so if comes off weird just remove pargraph spacing, if it looks right just copy and paste or go to the official source for it and copy the RAW DATA of it
{
"formatVersion": 1,
"name": "NilLoader",
"uid": "com.unascribed.nilloader",
"version": "1.3.5",
"+agents": [
{
"name": "com.unascribed:nilloader:1.3.5",
"url": "https://repo.sleeping.town"
}
]
}




