TerrainCustomiser Fix
Community rebuild of Snosz-TerrainCustomiser 0.3.2 for PEAK 1.65.a+/v2.4.x. Custom biome maps restored, with old-save and multiplayer fixes.
About this mod Machine translation
TerrainCustomiser
English | Chinese
Community-fixed rebuild of Snosz-TerrainCustomiser 0.3.2, compatible with PEAK 1.65.a and later (verified baseline v2.4.c).
Create custom variants for each biome with the in-game level editor, then play your creation with friends. The map syncs to everyone in the lobby, so only the host needs the save file — but every player must have this mod installed.
The original mod has been broken since PEAK 1.65.a. This is an unofficial maintenance rebuild that restores it on current game versions, including old map saves.
Requirements
- BepInExPack_PEAK
- Snosz-UBImGui
- Snosz-PhotonCustomPropsUtils
- The same version installed on every player in the lobby
Usage
Map saves live in AppData\LocalLow\LandCrab\PEAK\TerrainCustomiser\Map Saves.
Opening the airport kiosk menu shows the TerrainCustomiser UI with Play / Editor modes (Editor is offline-only).
Play Mode
- Select the map save to use, then set the seed and whether the lobby should bake lightmaps. The LightMap option is only available when every player has EnableLightMapBaking enabled in the plugin config.
- Press Play — the map data syncs to all players and the custom map loads.
Editor Mode
- Hold right-click for FreeCam (WASD to move, scroll wheel for FOV).
- Use Swap to pick a biome for the area, then C to pick a variant template to work from.
- Select the created segment to edit it through the Hierarchy / Inspector / Resource windows.
What this rebuild fixes
- PEAK 1.65.a+ compatibility: adapted to the async terrain pipeline (RunAll/Execute/SpawnNew, PropSpawner subclasses, LightVolume in LightVolume.Runtime.dll, Unity 6). Resource bundles ship as embedded.bundle files.
- Custom maps initialize fully: spawn tracking, respawn statue, segment disabling, wallNext and hasFinishedStartRoutine all run; generation failures block the run instead of leaving a broken map; empty saves regenerate a vanilla island.
- Old map saves load again: out-of-range indexes are skipped safely, missing RespawnChest falls back, name-based prop/material/Transform references resolve, saved random-scale values keep explicit entries while missing multipliers default to 1 (props no longer shrink to zero), dead prop references are skipped instead of failing the map, and nested segments such as the volcano pair are discovered.
- Multiplayer hardened: room properties use TC_-prefixed keys so they no longer fight TerrainRandomiser's keys; prop ViewIDs stay host-allocated; online IDs bind only after the local view collection completes and retry on early or mismatched batches; a crash from an empty lobby RunId is guarded.
- Lightmaps: baking goes through the official LightVolume pipeline with compression skipped, eliminating the HDR-compression log spam; one bake after generation while all segments are still active.
- TerrainRandomiser coexistence: the unused visibilitycompute bundle is no longer loaded at startup, removing the CAB identity conflict that broke TerrainRandomiser 1.2.0's startup.
- Diagnostics: [TC]-tagged logs for skipped save entries, rebuild warnings and segment/prop statistics.
Compatibility & known issues
- Coexists with TerrainRandomiser, but both hook map generation — disable random-terrain features during custom-map sessions.
- Do not install together with TerrainCustomiserCN: the GUIDs are declared mutually exclusive. For a Chinese UI, use the separate TerrainCustomiser_ZH patch instead.
- UBImGui 1.0.0 is an old build; if ImGui rendering itself breaks it needs a separate fix.
- Baking is asynchronous over a few frames; players spawning during those seconds could briefly see all segments active (same semantics as 0.3.2).
- The mid-generation bake was dropped; modifiers that sample the lightmap during generation now read the previous scene lightmap.
- Unity asset references in save fields (e.g. MeshCollider.sharedMesh) may fail to restore; [TC] Rebuild warnings in the log help locate them.
- The whole map is stored in Photon room properties …
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: