# Structures > Water, tree and access structures for Outpost Category: OUTPOST · Source: https://miciomods.it/docs/ml-base-building-structures · Last updated: 2026-11-06 ## Floating Platforms Wood and metal platforms, square or triangle, snap to foundations and to each other, with their top surfaces lined up. Place them over water. Walls, pillars and other supported pieces use the normal sockets. Wood upgrades to metal in the same shape. ## Bridge Anchors Each anchor has two low side posts and an open centre. Snap it to the top or edge of a foundation or platform, then rotate it in 90-degree steps so the opening faces the other end. The walkway is generated when two anchors link and has no inventory item. **shared/config.lua** ```lua Config.Bridge = { maxLength = 40.0, costPerMeter = { wood = 2 }, } ``` The centre of the span drops 8% of its length, up to 3 metres. The wood planks are the walking surface; the ropes are visual. ## Scaffolding The first module needs a foundation or ceiling under it. More modules stack on top, each with a built-in ladder. A scaffold cannot stand directly on the ground. ## Ladders Segments join every 1.2 metres. Add a landing at the top, or attach a landing to the outer edge of a foundation or tree platform and extend downward. Players approach from the front and use the normal climb control. ## Tree Platforms Aim at the trunk of a supported tree and set the height with the normal placement controls. The hexagonal deck has six 4-metre edges and stays level, and a directly attached platform needs no pillar. Decks come in wood, reinforced wood and metal. Each edge takes a 4-metre wall, pillar, bridge anchor or ladder landing. The centre takes a bridge anchor, scaffold or ladder. The supplied catalogue covers 973 trees across `prop_tree_cedar_02`, `_03`, `_04` and `prop_tree_pine_01`, `_02`. A matching model name alone is not enough: the tree itself must be registered. Two platforms cannot share a height range on one tree. **shared/config.lua** ```lua Config.TreePlatforms = { enabled = true, defaultCatalogue = true, } ``` - `defaultCatalogue`: set to `false` when a map removes or replaces the GTA trees > **WARNING:** Changing a Tree Map > > Platforms whose tree leaves the catalogue lose support, but nothing is destroyed. New attachments and upgrades stay blocked until the same catalogue is back. Back up the database before replacing a tree map. ## Custom Tree Maps A map resource registers its own trees from the server after both resources have started, and again after `ml_base_building` restarts. `provider` must be the name of the calling resource. Each provider can register up to 5,000 trees. ```lua local ok, result = exports.ml_base_building:RegisterTreeAnchors({ version = 1, provider = GetCurrentResourceName(), revision = 'my-map-1', models = { { model = 'my_tree', axisOrigin = { 0.0, 0.0, 0.0 }, axisDirection = { 0.0, 0.0, 1.0 }, minHeight = 6.0, maxHeight = 7.5, radius = 0.6, supportRadius = 0.5, }, }, trees = { { id = 'tree-1', modelIndex = 1, position = { 100.0, 200.0, 30.0 }, rotation = { 0.0, 0.0, 0.0, 1.0 }, scaleXY = 1.0, scaleZ = 1.0, }, }, }) ``` - `revision`: change it whenever positions or profiles change - `minHeight`, `maxHeight`: local distances along the trunk axis. Keep to a straight section of the real trunk - `radius`, `supportRadius`: trunk radius used for aiming, and the smallest trunk radius along the section the platform supports occupy - `rotation`: quaternion in x, y, z, w order - `buckets`: optional list of routing buckets. Leave it out only if the trees exist in all of them `false, 'provider_busy'` means a placement on that catalogue is being saved. Try again shortly.