This page explains how to add fuel stations and electric charging stations to a level.
A fuel station setup has two main parts:
facilities.facilities.json file.BeamNGGameplayAreaBeamNGPointOfInterestThe facility entry defines the station data, such as name, preview image, supported fuel types, and pump object references. The level objects define where the player can interact with the station.
Fuel stations are defined in the level facilities file:
levels/<levelName>/facilities/facilities.facilities.json
Example:
levels/italy/facilities/facilities.facilities.json
Preview images can also be placed in the same folder:
levels/<levelName>/facilities/<previewImage>.jpg
Fuel stations are listed under the gasStations array.
Example:
{
"gasStations": [
{
"id": "fuel_example_station",
"name": "Example Fuel Station",
"description": "A fuel station near the main road.",
"preview": "fuel_example_station.jpg",
"energyTypes": ["gasoline", "diesel", "unknown"],
"pumps": [
["fuel_example_station_pump_area_1", "fuel_example_station_pump_icon_1"],
["fuel_example_station_pump_area_2", "fuel_example_station_pump_icon_2"]
]
}
]
}
A facilities.facilities.json file may contain other facility types as well. In that case, gasStations is only one section of the file.
| Field | Type | Description |
|---|---|---|
id |
String | Unique station ID. |
name |
String | Display name or localization key. |
description |
String | Display description or localization key. |
preview |
String | Preview image filename. Usually stored in the level’s facilities folder. |
energyTypes |
Array | Fuel/energy types supported by this station. |
pumps |
Array | List of pump object pairs. Each pair contains an area object name and an icon object name. |
prices |
Object | Optional fuel price data. Used by fuel price displays and career systems. |
Each pump entry is an array containing two object names:
["<areaObjectName>", "<iconObjectName>"]
Example:
[
"fuel_example_station_pump_area_1",
"fuel_example_station_pump_icon_1"
]
The first object must be a BeamNGGameplayArea.
The second object must be a BeamNGPointOfInterest.
The order matters:
[BeamNGGameplayArea name, BeamNGPointOfInterest name]
The energyTypes array defines which vehicle energy storage types the station can refill or recharge.
Common values:
| Energy type | Description |
|---|---|
gasoline |
Gasoline/petrol fuel. |
diesel |
Diesel fuel. |
electricEnergy |
Electric vehicle battery energy. |
kerosine |
Jet/aircraft fuel type. |
n2o |
Nitrous oxide. |
any |
Allows the station to fill any energy type. |
unknown |
Fallback for fuel types not explicitly listed. |
Use this for most normal gas stations:
"energyTypes": ["gasoline", "diesel", "unknown"]
This supports gasoline, diesel, and unknown/fallback fuel types.
Use this for EV charging stations:
"energyTypes": ["electricEnergy"]
Use this only when the station should support every energy type:
"energyTypes": ["any"]
For each pump, create:
BeamNGGameplayArea
BeamNGPointOfInterest
The BeamNGGameplayArea defines the interaction volume.
The BeamNGPointOfInterest defines where the in-world pump icon appears.
Place the BeamNGGameplayArea where the vehicle should stop to refuel.
Recommended placement:
The player can interact with the fuel station when their vehicle overlaps this area.
Place the BeamNGPointOfInterest on or above the pump.
Recommended placement:
facilities.facilities.json.The point of interest position is used for the in-world icon and minimap marker.
Use clear and stable object names.
Example naming pattern:
fuel_<stationName>_pump_area_1
fuel_<stationName>_pump_icon_1
fuel_<stationName>_pump_area_2
fuel_<stationName>_pump_icon_2
Example:
fuel_apex_mountainside_pump_area_1
fuel_apex_mountainside_pump_icon_1
Then reference them in the facility file:
"pumps": [
["fuel_apex_mountainside_pump_area_1", "fuel_apex_mountainside_pump_icon_1"],
["fuel_apex_mountainside_pump_area_2", "fuel_apex_mountainside_pump_icon_2"]
]
{
"gasStations": [
{
"id": "fuel_apex_mountainside",
"name": "Apex Mountainside Fuel",
"description": "Fuel station near the mountainside road.",
"preview": "fuel_apex_mountainside.jpg",
"energyTypes": ["gasoline", "diesel", "unknown"],
"pumps": [
["fuel_apex_mountainside_pump_area_1", "fuel_apex_mountainside_pump_icon_1"],
["fuel_apex_mountainside_pump_area_2", "fuel_apex_mountainside_pump_icon_2"]
]
}
]
}
Required level objects:
BeamNGGameplayArea: fuel_apex_mountainside_pump_area_1
BeamNGPointOfInterest: fuel_apex_mountainside_pump_icon_1
BeamNGGameplayArea: fuel_apex_mountainside_pump_area_2
BeamNGPointOfInterest: fuel_apex_mountainside_pump_icon_2
Optional preview image:
levels/<levelName>/facilities/fuel_apex_mountainside.jpg
{
"gasStations": [
{
"id": "charge_downtown_01",
"name": "Downtown Charging Station",
"description": "Electric vehicle charging station.",
"preview": "charge_downtown_01.jpg",
"energyTypes": ["electricEnergy"],
"pumps": [
["charge_downtown_01_area_1", "charge_downtown_01_icon_1"],
["charge_downtown_01_area_2", "charge_downtown_01_icon_2"]
]
}
]
}
Stations with electricEnergy use charging-style map and interaction icons.
The preview field points to an image used by map and facility UI.
Example:
"preview": "fuel_apex_mountainside.jpg"
Recommended location:
levels/<levelName>/facilities/fuel_apex_mountainside.jpg
Best practices:
The name and description fields can be plain text or localization keys.
Plain text example:
"name": "Apex Mountainside Fuel",
"description": "Fuel station near the mountainside road."
Localization key example:
"name": "levels.italy.gasStationPoints.fuel_apex_mountainside",
"description": "levels.italy.gasStationPoints.fuel_apex_mountainside.description"
For public mods, plain text is acceptable. For content that supports multiple languages, use localization keys and provide translations.
Fuel stations can optionally define price data with a prices object.
Example:
{
"id": "fuel_example_station",
"name": "Example Fuel Station",
"description": "A station with fuel price data.",
"preview": "fuel_example_station.jpg",
"energyTypes": ["gasoline", "diesel", "unknown"],
"pumps": [
["fuel_example_station_pump_area_1", "fuel_example_station_pump_icon_1"]
],
"prices": {
"gasoline": {
"priceBaseline": 1.65
},
"diesel": {
"priceBaseline": 1.72
}
}
}
The prices object is keyed by fuel type.
| Field | Type | Description |
|---|---|---|
priceBaseline |
Number | Base price for the fuel type. |
priceRandomnessGain |
Number | Optional random variation amount. |
priceRandomnessBias |
Number | Optional random variation bias. |
displayObjects |
Array | Optional object names used for physical price display digits. |
disabled |
Boolean | If true, the price display shows disabled placeholders. |
us_9_10_tax |
Boolean | Optional display helper for US-style 9/10 fuel price signs. |
prices section.A station can drive physical price display objects using displayObjects.
The display is configured as a list of digit positions. Each digit position contains one or more object names.
Example:
"prices": {
"gasoline": {
"priceBaseline": 1.659,
"displayObjects": [
["fuel_price_gasoline_digit_1"],
["fuel_price_gasoline_digit_2"],
["fuel_price_gasoline_digit_3"],
["fuel_price_gasoline_digit_4"]
],
"us_9_10_tax": true
}
}
The price is formatted to three decimal places and then displayed as individual digits.
For example:
1.659 -> 1659
Each display object is replaced at runtime with the matching digit mesh.
If disabled is set, the display shows - placeholders:
"prices": {
"diesel": {
"disabled": true,
"displayObjects": [
["fuel_price_diesel_digit_1"],
["fuel_price_diesel_digit_2"],
["fuel_price_diesel_digit_3"],
["fuel_price_diesel_digit_4"]
]
}
}
displayObjects.Fuel stations are loaded from the level facilities file.
When available, they appear as points of interest on the map and as in-world pump markers.
A player can interact with the station when:
BeamNGGameplayArea pump areas.In freeroam, supported tanks are filled directly.
In career mode, refueling may be handled by the career fuel transaction system.
When the player interacts with a station, the game checks the vehicle’s energy storage types.
Behavior:
any, all fuel types can be filled.air storage is ignored.unknown can be used as a fallback category for unrecognized fuel types.If a vehicle has multiple energy storage types, the station may partially fill only the supported ones.
Fuel station markers are generated from the facility entry.
The marker position is based on the pump areas. The radius is calculated from the pump layout.
The in-world icon appears near the BeamNGPointOfInterest object for each pump.
Marker icon type depends on energy types:
| Station type | Icon behavior |
|---|---|
| Fuel station | Fuel pump icon. |
| Electric charging station | Charging icon. |
A station is treated as electric if its energyTypes include:
"electricEnergy"
gasStations entry per station.id.BeamNGGameplayArea and one BeamNGPointOfInterest per pump.["gasoline", "diesel", "unknown"] for normal fuel stations.["electricEnergy"] for charging stations.pumps list.Possible causes:
gasStations.facilities.facilities.json file is in the wrong folder.Possible causes:
BeamNGGameplayArea.Possible causes:
BeamNGPointOfInterest is misplaced.Correct order:
["area_object_name", "icon_object_name"]
Possible causes:
energyTypes.unknown or any.Possible causes:
preview filename is wrong.To add a fuel station:
Create an entry under gasStations in:
levels/<levelName>/facilities/facilities.facilities.json
Give the station a unique id.
Set name, description, and preview.
Set supported energyTypes.
For each pump, create:
BeamNGGameplayAreaBeamNGPointOfInterestAdd each pump pair to the pumps array:
["pump_area_name", "pump_icon_name"]
Optionally add a preview image and price data.
Test the station in game with compatible vehicles.
Was this article helpful?