Documentation
Everything you need to fly the ground with XPGuard — install the plugin, connect a controller client, and add airports to the map.
Overview
XPGuard puts ATC-controlled stop bars on the ground in X-Plane 12. A VATSIM controller sets and drops stop bars from EuroScope; XPGuard relays each change in real time; and the X-Plane plugin lights the bar on the hold-short markings. Red means hold short, green means you're cleared across.
There are two pieces depending on who you are: the X-Plane plugin if you fly, and the EuroScope plugin if you control. You only need the side you use.
Quick start
For pilots, in three steps:
- Download the X-Plane plugin and unzip it into your plugins folder.
- Launch X-Plane 12 and connect to VATSIM as usual.
- Taxi out — stop bars appear automatically wherever a controller is working the ground.
Install — X-Plane plugin
Unzip the download so the folder layout looks like this:
<X-Plane 12>/Resources/plugins/XPGuard/
64/
win.xpl (or mac.xpl / lin.xpl)
resources/
holds.json
stopbar_light.obj
Restart X-Plane. Open Plugins → XPGuard → Show control panel to confirm it
loaded; you can toggle any hold there to preview the lights at your current airport.
Log.txt for lines starting with
XPGuard: — they report how many holds loaded and any file errors.Install — EuroScope plugin
Controllers load XPGuard as a standard EuroScope plugin:
- Place the plugin
.dllwith your other EuroScope plugins. - In EuroScope:
Other Set → Plug-ins → Load, then select it. - Claim your airport and pick the active runways. Stop bars become clickable on the ground.
Click a bar to set it (red); click again to clear it (green). Every connected pilot at the field sees the change immediately.
Mapping a field
An airport needs a stop-bar map — the precise position and orientation of each hold.
XPGuard generates these from X-Plane's own apt.dat airport data:
- Find the airport's
apt.dat(a scenery package'sEarth nav data/apt.dat, one airport per file). - Run the extractor. It reads the painted runway-hold markings and the taxi-route network,
keeps the stopbars within range of a runway, and writes a
holds.json. - Review the result on the generated map, then open a pull request.
See the contribution guide for the full walkthrough.
The holds file
Each airport is a small JSON file the plugin reads at startup:
{ "airport": "LTAC", "holds": [
{ "id": "AHP2", "lat": 40.1409, "lon": 33.0102,
"bearing": 96.3, "runway": "03C/21C" }
] }
bearing is the true bearing of the stop-bar line (perpendicular to the taxiway).
To support a new airport, drop its holds.json in resources/.
Troubleshooting
The control panel opens but no lights show
The light object may not be loading. Confirm resources/stopbar_light.obj is next
to holds.json, and check Log.txt for an XPGuard warning.
Bars appear in the wrong place
The airport map may be off for your scenery. Note the airport and the hold, and report it on the Contribute page so the map can be corrected.
Nothing happens when a controller sets a bar
Confirm you're connected to VATSIM and a controller is actually working the ground at your field. Stop bars only light when someone is controlling them.