Skip to content

World Placement

How it works for the player

Hold the key (R by default) with a lantern in hand or stowed. The character crouches and sets it on the ground using the game's own pickup animation.

Walk away — it keeps burning. Come back, stand near it, hold the key again to pick it up. The lantern returns to their hand with its colour and brightness intact.

Server-owned, not player-owned

This is the part worth understanding.

A placed lantern belongs to the server registry, not to the player who lit it. Every client draws its own local copy from that registry.

The consequences:

  • it keeps burning when the owner rides out of range
  • it keeps burning when the owner dies or respawns
  • it keeps burning when the owner disconnects entirely
  • there is no entity ownership to migrate, which is what breaks most prop scripts the moment someone leaves

Placed lanterns are frozen and have no collision with players. That is deliberate — it is what removes the ownership problem.

Limits

lua
Config.LanternPlacement = true      -- turn placement off entirely
Config.UnlimitedPlacement = false   -- one at a time, or many
Config.MaxPlacedPerPlayer = 8       -- cap per player when unlimited. 0 = none
Config.MaxPlacedGlobal = 200        -- server wide cap. 0 = none

With UnlimitedPlacement = false (the default) each player has one placed lantern at a time — setting a new one down recalls the old one automatically. This is the original mod's behaviour.

With it true, players can place up to MaxPlacedPerPlayer, and the server stops accepting new ones at MaxPlacedGlobal regardless of who is asking.

Keep the global cap

Placed lanterns are cheap, but they are rendered by every client in range and there is no natural limit on a busy server otherwise.

Distances

lua
Config.PlaceDistance = 1.8    -- how far in front a lantern is set down
Config.PickupDistance = 2.0   -- how close to pick one back up
Config.RenderDistance = 120.0 -- how far away a client draws placed lanterns

RenderDistance is the one to adjust for performance. Lanterns beyond it are removed locally and re-created when the player comes back — the registry entry is untouched either way.

Where a lantern can go

Before placing, the resource checks:

  • there is ground within reasonable reach in front of the player
  • the drop is not more than 1.75m up or down, so lanterns cannot be dropped off ledges or onto roofs below
  • nothing solid sits between the player and the spot, so they cannot be placed through walls

If any check fails the player is told "There is nowhere to set it down."

The player also has to be in a sensible state — not swimming, climbing, vaulting, ragdolled, reloading, in a vehicle or in mid-air.

Other players' lanterns

lua
Config.AllowForeignPickup = true

true — anyone can pick up any placed lantern. false — only the character who placed it can.

Ownership is tracked by character identifier, so it survives a relog. See Persistence.

The weapon

lua
Config.RemoveWeaponOnPlace = true

When a lantern is on the ground the player is not carrying it, so by default the lantern weapon comes off the ped and is handed back on pickup.

Leave this on

With it off, the engine keeps its own copy of the lantern on the player's belt and they appear to have two — one on the ground and one on their hip.

Admin

/lanternclear     remove every placed lantern on the server
/lanterncount     how many are currently placed

Both need the rm_lantern.admin ace, or the server console:

cfg
add_ace group.admin rm_lantern.admin allow

Anti-abuse

Every placement and pickup is validated server side:

  • the coordinates must be near the player who claims to be placing there
  • the pickup must be near the lantern
  • events are rate limited per player
  • all payload values are sanitised and clamped before being stored

A modified client cannot place lanterns across the map, pick up a lantern from a distance, or flood the registry.

Persistence

Placed lanterns are held in memory by default and cleared on restart. To keep them, see Persistence.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.