What a Jet Island mod is
A Jet Island mod is, at its core, one C# plugin DLL — optionally accompanied by Unity AssetBundles if the mod ships custom 3D content.
Code plugin (the DLL): A C# Class Library that implements IPA's
IPlugininterface. IPA injects this DLL into the running game, giving you access to the full Unity engine and direct access to much of Jet Island's own code (the game's logic lives inAssembly-CSharp.dll, which is not obfuscated). The compiled.dllgoes into the game'sPlugins\folder.AssetBundles (optional): For asset-heavy mods — most obviously maps like New York City or Hook Island — you build Unity prefabs into
.unity3dAssetBundle files in a separate Unity 2017.1.1 project, then load them at runtime from your plugin. AssetBundles cannot contain code, so any custom behavior on those assets is added by your plugin viaAddComponent<>().
What it is NOT
| Misconception | Reality |
|---|---|
| "It uses BepInEx / MelonLoader." | No. It uses IPA (Illusion Plugin Architecture) — the Eusth/IPA lineage. The site distributes a patched build, IPA-3.4.1-ca30be3.zip. |
| "I patch code with Harmony." | No Harmony here. For method hooking the community uses PlayHooky; for reading private/protected fields, a small ReflectionUtil.cs helper. (See §3.) |
| "It's IL2CPP, so it's hard." | No. It's a Mono game — JetIsland_Data\Managed\Assembly-CSharp.dll exists, so the managed C# is directly referenceable and decompilable. This is the easy case. |
| "Mods edit the game's DLLs on disk." | No. Mods are runtime-injected plugins. You never ship a modified copy of the game's own DLLs — you reference them and hook into them. |
Why IPA and not the modern loaders? Jet Island has shipped on this stack since 2018 and the whole community ecosystem (example repos, install instructions, every published mod) is built for IPA. Mods are not cross-compatible between loaders, so we stay on IPA for compatibility. Be aware that upstream IPA is effectively unmaintained (last upstream tag v3.3, April 2017) — the patched
3.4.1-ca30be3build the community uses is a custom fork that fixes a specific issue. Always use that build, not a random IPA from elsewhere.
Patch vs content/map mods (the taxonomy)
The Jet Island community informally sorts mods into two families. Knowing which one you're making clarifies what "apply" and "revert" mean.
Patch mods (behavior changes)
A patch alters how the game behaves. It's pure code — usually a plugin that hooks a game method or tweaks values each frame. Examples:
- Tilt Turn (Air / Ground) — head-tilt turning for players without full-body tracking.
- Fall Damage Bad Mkay? — auto-respawn instead of a shattered-screen death.
- Voice Mute / Lag Reduce — toggle the in-game voice and fix a high-CPU bug.
- Cheat / Respawn Mod, Modifier Unlock — gameplay/QoL hooks.
Content / map mods (new assets)
A content mod adds new things — geometry, textures, environments — shipped as AssetBundles that a small plugin loads. Examples:
- New York City — swing around an (untextured) Manhattan.
- Hook Island: Expert Mode — a harder traversal variant.
- Map Retexture — recolor the map.
What "apply" and "revert" mean
Because everything is a runtime-injected DLL, the lifecycle is uniform and reversible:
- Apply = drop the mod's
.dll(and any AssetBundles) into place. IPA loads it at launch — nothing on disk in the game is permanently altered. - Revert = delete the
.dll(and its AssetBundles). Next launch, the game is back to how it was.
Good mods of either type avoid writing to your save, so reverting is clean. There is currently no formal load-order, dependency, or version-pinning system in the Jet Island ecosystem — keep your mod self-contained and independent of other mods where you can, and if it genuinely depends on another mod, say so loudly in your README.