Yard Building Guide

Step-by-step guide to creating landscaping locations and yards in-game using the coordinate builder and visual yard editor.

How It Works

The resource ships with two files that define where players work:

  • config.lua — Contains default Config.Locations and Config.Yards tables
  • exported_locations.lua — Initially empty, populated by the /mowerexport command

When you run /mowerexport, the command automatically merges your new session data with all existing locations and yards from the runtime config. You never lose previously exported data — new yards are added alongside existing ones.

Key Points

  • /mowerexport always preserves existing data (auto-merge)
  • You can build 1 yard today, export, then build another yard next week and export again — nothing is lost
  • Deduplication is by name: if a session yard has the same name as an existing one, the session version takes priority
  • To remove a yard, use /mowerimport then /mowerremoveyard

Creating a Location

A location is a landscaping office where players clock in. Each location has an NPC, a map blip, and a vehicle spawn point.

Step 1: Position the NPC

  1. Walk to where you want the office manager NPC to stand
  2. Face the direction the NPC should look
  3. Run the command:
/mowerlocation My Office Name

This captures your position and heading. The name can include spaces.

Step 2: Set Vehicle Spawn

  1. Walk to where the company van should spawn (nearby road or parking area)
  2. Face the direction the van should point
  3. Run:
/mowervehicle

This saves the location with both the NPC position and vehicle spawn. The location is now ready.

What a Location Produces

After export, each location creates:

  • A green lawn mower blip on the map (Config.Blip)
  • An NPC with a clipboard scenario at the coords position
  • A target zone for "Talk to Manager" interaction
  • A vehicle spawn point for the company van

Creating a Yard

A yard is a work area filled with grass patches and optional obstacles.

Step 1: Start the Yard

  1. Stand at the center of the area you want to be a yard
  2. Run:
/moweryard My Yard Name

This records the yard's center coordinate and opens the visual yard editor in freecam mode.

Step 2: Place Grass Patches

Use the visual editor (detailed in the next section) to fly around and place grass props. Each patch becomes a piece of grass that players will mow.

Step 3: Add Obstacles (Optional)

Press Tab in the editor to switch to obstacle mode. Place objects like BBQs, rocks, trash bags, and patio furniture that players must pick up on foot before they can safely mow.

Step 4: Finish the Yard

Press Enter in the editor or run /mowerfinishyard to save the yard. The editor closes and reports the patch count, obstacle count, and calculated tier.

Using the Visual Yard Editor

The yard editor is a freecam tool that launches when you run /moweryard. It has two modes that you alternate between.

Editor Modes

ModePurposeVisual
PATCHPlace grass propsGreen [PATCH] indicator
OBSTACLEPlace obstacle propsOrange [OBSTACLE] indicator

Press Tab to toggle between modes. Each mode has its own model list that you cycle through independently.

Placement Mode

This is the default mode. You fly freely and a ghost (transparent) prop follows your crosshair.

ControlAction
W/A/S/DMove camera forward/left/back/right
MouseLook around
ShiftMove camera up
CtrlMove camera down
Scroll WheelAdjust camera speed (shown in HUD)
ECycle to next prop model
QCycle to previous prop model
TabSwitch between patch and obstacle mode
Left ClickLock the ghost prop's position, enter precision mode
Ctrl+Z or BackspaceUndo last placed prop
EnterSave the yard and exit editor
ESCExit editor without saving (yard stays in progress)

Precision Mode

After left-clicking to lock a position, the camera freezes and you can fine-tune the prop before confirming.

ControlAction
Mouse XRotate the prop's heading
Scroll UpRaise the prop (+0.01 per tick)
Scroll DownLower the prop (-0.01 per tick)
Left ClickConfirm placement
Right ClickCancel, return to placement mode

The HUD shows the current Z offset and heading while in precision mode.

HUD Display

While the editor is active, the screen shows:

  • Top left: Current mode ([PATCH] or [OBSTACLE]), model name with index, patch/obstacle counts, camera speed
  • Center top (precision only): "PRECISION MODE" with Z offset and heading values
  • Bottom center: Controls reminder for the current mode
  • Crosshair: White crosshair in placement mode

Prop Models

Grass models (8 total): Cycle with E/Q in patch mode. These are the grass clumps that players drive the mower over.

Obstacle models (19 total): Cycle with E/Q in obstacle mode. These include BBQs, basketballs, coolers, rocks, trash bags, soda cups, and more.

The model list comes from Config.GrassProps and Config.ObstacleProps. You can add custom models to these arrays.

Exporting Your Work

Running the Export

After creating your yards, run:

/mowerexport

This does four things:

  1. Auto-saves any in-progress location or yard (so you don't lose unfinished work)
  2. Auto-merges all existing locations and yards from the runtime config
  3. Writes exported_locations.lua in the resource folder with the merged data
  4. Prints the full output to the server console for review

Applying the Export

After exporting, restart the resource for the changes to take effect:

restart oxide-landscapingjob

Verifying

  1. Join the server after restart
  2. Check the map for your new office blips
  3. Visit an office and clock in
  4. Verify your yards appear as assigned work

Managing Data

Viewing Session Contents

Use /mowerlist to see what's currently in the builder session:

/mowerlist

This shows all locations and yards with patch/obstacle counts and tier.

Loading Existing Data Into Session

Use /mowerimport to load all existing config data into the session. This is required before using /mowerremoveyard:

/mowerimport

Removing a Yard

To remove a yard that was previously exported:

  1. Run /mowerimport to load existing data into the session
  2. Run /mowerremoveyard <exact name> to remove it
  3. Run /mowerexport to write the updated data
  4. Restart the resource
/mowerimport
/mowerremoveyard Steele Way
/mowerexport

Clearing All Exported Data

To revert to the defaults in config.lua, empty the exported file:

  1. Open exported_locations.lua in the resource folder
  2. Delete all contents (leave it blank)
  3. Restart the resource

Multiple Admins

The coordinate builder stores data per-admin in memory. If multiple admins are building simultaneously:

  • Each admin has their own in-progress location and yard
  • /mowerexport from any admin exports all saved data (from all admins in that session)
  • Coordinate between admins to avoid export conflicts

Workflow Examples

Quick Setup: One Office, Three Yards

-- Step 1: Create the office
/mowerlocation Davis Landscaping
-- Walk to nearby road
/mowervehicle

-- Step 2: Create yards
/moweryard Davis House 1
-- Place patches and obstacles in editor, press Enter

/moweryard Davis House 2
-- Place patches and obstacles, press Enter

/moweryard Davis House 3
-- Place patches and obstacles, press Enter

-- Step 3: Export and restart
/mowerexport
-- In server console: restart oxide-landscapingjob

Adding Yards Over Time

-- Day 1: Initial setup
/mowerlocation My Office
/mowervehicle
/moweryard Yard 1
-- Build, press Enter
/moweryard Yard 2
-- Build, press Enter
/mowerexport                    -- Writes 1 location + 2 yards

-- Day 30: Add another yard
/moweryard Yard 3
-- Build, press Enter
/mowerexport                    -- Auto-merges: now 1 location + 3 yards

-- Day 60: Remove a bad yard
/mowerimport                    -- Loads all 3 yards into session
/mowerremoveyard Yard 2         -- Removes Yard 2
/mowerexport                    -- Writes 1 location + 2 yards (1 + 3)

Reviewing What Exists

/mowerimport                    -- Load config into session
/mowerlist                      -- See all locations and yards with details

Tips & Best Practices

Yard Design

  • 15-30 patches is a good small yard that takes 2-3 minutes to mow
  • 3-8 obstacles per yard adds variety without being tedious
  • Vary patch models and rotations to avoid a uniform grid appearance
  • Use precision mode to sink patches slightly into the ground (scroll down a few ticks) for a natural look
  • Place the yard center coordinate (/moweryard position) where you want the yard marker and blip to appear

Obstacle Placement

  • Place obstacles between grass patches so players must clear them first
  • Mix small obstacles (cups, balls) with large ones (BBQs, loungers)
  • Avoid placing obstacles where the mower can't physically reach (narrow gaps, fences)
  • Test that all obstacles are reachable on foot with the pickup animation

Location Design

  • Position the NPC on flat ground where players can easily see and approach
  • Set the vehicle spawn on a road or parking lot with enough space for the van
  • Ensure the vehicle spawn faces a direction where the van can drive away immediately
  • Test that the van doesn't spawn inside walls or other vehicles

Performance

  • Keep yards under 50 patches for best client performance (objects are rendered locally)
  • Space yards apart geographically to avoid multiple yards rendering simultaneously
  • If you have many yards, increase Config.MaxSlotsPerLocation carefully — more workers means more active yards

Before Going Live

  1. Test every yard by clocking in and mowing the full thing
  2. Verify obstacles can all be picked up
  3. Check that the van spawns cleanly at every office
  4. Confirm the mower can reach all patches without getting stuck on terrain