Skip to content

Advanced Land Management

This page covers tool-level workflows for parcel, terrain, and estate administration.

Parcel tools

  • ParcelGetCurrent
  • ParcelGetByLocalId
  • ParcelSetInfo
  • ParcelSetLanding
  • ParcelAccessListGet
  • ParcelAccessListSet
  • ParcelFlagsGet
  • ParcelSetFlags
  • ParcelEjectUser
  • ParcelJoin
  • ParcelSubdivide
  • ParcelPermissionDiagnostics
  • ParcelDeedToGroup
  • ParcelReclaim

Terrain tools

  • TerrainHeightmapSample
  • TerrainHeightmapExportRaw
  • TerrainHeightmapImportRaw
  • TerrainPatchCacheVerify
  • TerrainPatchDiffRaw
  • TerrainPatchApplyOffset
  • TerrainPatchApplyOffsetRaw
  • TerrainTerraform

Estate/admin tools

  • EstateGetInfo
  • EstateGetCovenant
  • EstateRestartRegion
  • EstateCancelRestart
  • EstateBroadcastMessage
  • EstateRestartScheduleGet
  • EstateRestartScheduleSet
  1. Inspect current state (ParcelGetCurrent, EstateGetInfo).
  2. Apply minimal change (ParcelSetInfo, ParcelSetLanding, TerrainTerraform).
  3. Re-read state and confirm behavior.
  4. Announce impact before disruptive actions (restart/schedule changes).

Prompt examples for precise control

Get parcel by local ID 42 with access lists included.
Update parcel 42 name to Main Landing, set media URL to https://example.com/screen.
Set parcel 42 landing type to direct.
Replace the allow list on parcel 42 with avatars <uuid-a>,<uuid-b>.
ParcelAccessListSet(localId=42, listType="access", action="replace", agentIdsCsv="<uuid-a>,<uuid-b>")
Remove avatar <uuid-a> from the ban list on parcel 42.
ParcelAccessListSet(localId=42, listType="ban", action="remove", agentIdsCsv="<uuid-a>")
Get parcel flags for parcel 42 and show enabled states.
ParcelFlagsGet(localId=42, forceRefresh=false)
Enable UseAccessList,AllowFly and disable UseBanList,AllowDamage on parcel 42.
ParcelSetFlags(localId=42, enableFlagsCsv="UseAccessList,AllowFly", disableFlagsCsv="UseBanList,AllowDamage")
Run parcel permission diagnostics for parcel 42.
Deed the current parcel to group <group-uuid>.
ParcelDeedToGroup(groupId="<group-uuid>", forceRefresh=false)
Reclaim the parcel under the bot's current position.
ParcelReclaim()
Join parcels in bounds west=96 south=96 east=160 north=160.
Subdivide parcels in bounds west=96 south=96 east=128 north=128.
Sample terrain heights with step 8 and report missing cache points.
Terraform parcel 42 with action smooth and brush large.
Export terrain heightmap to /workspace/state/region-terrain.r32
Import terrain heightmap from /workspace/state/region-terrain.r32
Verify terrain patch cache at step 8 with minimum coverage ratio 0.9 and timeout 20 seconds.
Diff terrain source current vs /workspace/state/region-terrain.r32 with min delta 0.05 and max samples 20.
Apply terrain patch offset in bounds west=96 south=96 east=128 north=128 with delta 0.5 meters.
Apply terrain patch offset from /workspace/state/base-terrain.r32 in bounds west=96 south=96 east=128 north=128 with delta 0.5 meters.
Set weekly restart schedule for tue,thu at 02:15 UTC.

Safe parcel ops playbook

Use this sequence to reduce mistakes and permission surprises:

  1. Inspect target parcel and permission hints.
  2. Confirm exact bounds and impact with the user.
  3. Execute one structural change (join or subdivide).
  4. Re-read parcel state and report what changed.

Example prompt sequence:

Get parcel by local ID 42 with access lists included.
Run parcel permission diagnostics for parcel 42 and summarize blockers.
Subdivide parcels in bounds west=96 south=96 east=128 north=128.
Get parcel by local ID 42 again and confirm landing, media, and access-list state.

Notes and current limitations

  • Terrain sampling reads simulator-cached patches; missing samples usually mean the patch cache is incomplete.
  • If cache coverage is 0%, TerrainHeightmapExportRaw now fails instead of writing a misleading all-zero file.
  • Terraform now uses a cache-safe reference-height fallback when terrain patch cache is incomplete.
  • Patch-level workflows are available: verify cache coverage, diff RAW sources, and apply bounded offsets.
  • For cache-cold sessions, prefer TerrainPatchApplyOffsetRaw with a known .r32 source file/URL.
  • Access list updates are scope-specific (access or ban) and support add, remove, replace, and clear operations.
  • ParcelDeedToGroup only works when the bot currently owns the parcel under its position and has rights to deed to the target group.
  • ParcelReclaim uses the current simulator and parcel under the bot position; reclaim success depends on simulator/estate privileges.
  • Estate operations depend on simulator capabilities and your estate permission level.

Prefer capability-aware retries

If a call fails, first re-check capability availability and privileges, then retry with narrower scope.