Jump to content
Message added by bsdinis,

If you are using trains set their fetch cooldown to a very high value or revoke/rename their fetch permission to prevent players from fetching trains.
Working on a fix.

1 Screenshot

Works with

About Vehicles

Spawn any type of vehicle prefab with custom commands, permissions, cooldown, starting fuel, fuel consumption, extra seats and extra mounts.

The default config contains every vehicle that currently exists in Rust.

Using the default config as an example;

   - The chat command to spawn a Minicopter would be the SpawnCommandPrefix followed by the key in the config corresponding to the Minicopter:  /mymini

   - The chat command to fetch the Minicopter would be the FetchCommandPrefix followed by the corresponding key: /gmini

   - The chat command to despawn the Minicopter would be the DespawnCommandPrefix followed by the corresponding key: /nomini

 

Config

   "SpawnCommandPrefix"                                            Prefix for the spawn chat command.

   "FetchCommandPrefix"                                              Prefix for the fetch chat command.

   "DespawnCommandPrefix"                                        Prefix for the despawn chat command.

   "AllowMultipleIdentical"                                               Allows players to have multiple vehicles of the same type.

   "FetchOldVehicleInsteadOfSpawningIdentical"         Fetches the old vehicle if the player attempts to spawn an identical vehicle.

   "AllowFetchingWhenOccupied"                                  Allows players to fetch their vehicles when there are players mounted on it.

   "DismountOccupantsWhenFetching"                         Dismounts every occupant when the player fetches their vehicle.

   "AllowDespawningWhenOccupied"                            Allows players to despawn their vehicles when there are players mounted on it.

   "RefundFuelOnDespawn"                                            Refunds any fuel left inside the fuel tank when the player despawns their vehicles using the chat command.

   "NotifyWhenVehicleDestroyed"                                  Sends a chat message to the player when their vehicles are destroyed.

   "DestroyVehiclesOnDisconnect"                                Destroys every vehicle when their owner disconnects.

   "PreventVehiclesDecay"                                             Prevents player spawned vehicles from taking decay damage.

   "ClearCooldownsOnMapWipe"                                   Automatically clear the cooldowns from the data file when map wipes.

   "BlockWhenMountedOrParented"                              Prevents players from spawning or fetching vehicles when they are mounted or parented.

   "BlockWhenBuildingBlocked"                                      Prevents players from spawning or fetching vehicles when they are building blocked.

   "BlockInSafeZone"                                                       Prevents players from spawning or fetching vehicles when they are in a safe zone.

   "BlockWhenCombatBlocked"                                      Prevents players from spawning or fetching vehicles when they are combat blocked.  (Requires NoEscape)

   "BlockWhenRaidBlocked"                                            Prevents players from spawning or fetching vehicles when they are raid blocked.        (Requires NoEscape)

   "RemoveChinookMapMarker"                                     Removes the map marker from Chinooks.

 

Vehicle settings:

   "Name"                                                                          Name of the vehicle that will be shown in chat messages.

   "Prefab"                                                                         Path of the prefab to spawn.

   "SpawnCooldown"                                                        A dictionary of permissions and their associated spawn cooldown. Permissions from the bottom have priority when player has multiple permission. The player must have at least one of these permissions to be able to spawn the vehicle. A permission without name means no permission needed, or the whole dictionary can be set to null.

   "FetchCooldown"                                                          A dictionary of permissions and their associated fetch cooldown. Permissions from the bottom have priority when player has multiple permission. The player must have at least one of these permissions to be able to fetch the vehicle. A permission without name means no permission needed, or the whole dictionary can be set to null.

   "MaxSpawnDistance"                                                   A dictionary of permissions and their associated max spawn distance. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the the whole dictionary is 'null' a maximum of 100.0 is used.

   "FetchDistanceLimit"                                                     A dictionary of permissions and their associated fetch distance limit. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the whole dictionary is 'null' there will be no fetch distance limits.

   "DespawnDistanceLimit"                                               A dictionary of permissions and their associated despawn distance limit. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, if the whole dictionary is 'null' there will be no despawn distance limits.

   "StartingFuel"                                                                A dictionary of permissions and their associated starting fuel. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.

   "LockFuelContainer"                                                     A dictionary of permissions and their associated lock fuel container option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'.

   "FuelPerSecond"                                                           A dictionary of permissions and their associated fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Minicopters, Scrap Helicopters, Row Boats, RHIBs, Tug Boats and Hot Air Balloons.

   "IdleFuelPerSecond"                                                     A dictionary of permissions and their associated idle fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Submarines, Snowmobiles, Modular Cars, Magnet Cranes and Trains.

   "MaxFuelPerSecond"                                                    A dictionary of permissions and their associated max fuel per second option. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. This options applies to Submarines, Snowmobiles, Modular Cars, Magnet Cranes and Trains.

   "ExtraMounts"                                                               A dictionary of permissions and their associated list of extra mounts. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. Position and rotation are relative to the vehicle (position X, position Y, position Z, rotation X, rotation Y, rotation Z).

   "ExtraSeats"                                                                   A dictionary of permissions and their associated list of extra seats. Permissions from the bottom have priority when player has multiple permission. A permission without name means no permission needed, the whole dictionary can be 'null'. Position and rotation are relative to the vehicle (position X, position Y, position Z, rotation X, rotation Y, rotation Z).

   "YRotationSpawnOffset"                                               Vehicle spawn rotation, relative to the looking direction of the player. (-90 is 90º left, 90 is 90º right)

   "CanOnlySpawnOnWater"                                            Blocks vehicle from being spawned or fetched on land.

   "CanNotSpawnOnWater"                                              Blocks vehicle from being spawned or fetched on water.

 

{
  "SpawnCommandPrefix": "my",
  "FetchCommandPrefix": "g",
  "DespawnCommandPrefix": "no",
  "AllowMultipleIdentical": false,
  "FetchOldVehicleInsteadOfSpawningIdentical": true,
  "AllowFetchingWhenOccupied": false,
  "DismountOccupantsWhenFetching": true,
  "AllowDespawningWhenOccupied": false,
  "RefundFuelOnDespawn": false,
  "NotifyWhenVehicleDestroyed": false,
  "DestroyVehiclesOnDisconnect": false,
  "PreventVehiclesDecay": false,
  "ClearCooldownsOnMapWipe": true,
  "BlockWhenMountedOrParented": true,
  "BlockWhenBuildingBlocked": true,
  "BlockInSafeZone": true,
  "BlockWhenCombatBlocked": true,
  "BlockWhenRaidBlocked": true,
  "RemoveChinookMapMarker": true,
  "Vehicles": {
    "ball": {
      "Name": "Soccer Ball",
      "Prefab": "assets/content/vehicles/ball/ball.entity.prefab",
      "SpawnCooldown": {
        "": 86400.0,
        "vehicles.ball": 3600.0,
        "vehicles.ball.VIP": 300.0
      },
      "FetchCooldown": {
        "": 1800.0,
        "vehicles.ball": 60.0,
        "vehicles.ball.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.ball": 20.0,
        "vehicles.ball.VIP": 50.0
      },
      "FetchDistanceLimit": {
        "": 0.0
      },
      "DespawnDistanceLimit": {
        "": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": 0.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "attack": {
      "Name": "Attack Helicopter",
      "Prefab": "assets/content/vehicles/attackhelicopter/attackhelicopter.entity.prefab",
      "SpawnCooldown": {
        "vehicles.attack": 3600.0,
        "vehicles.attack.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.attack": 60.0,
        "vehicles.attack.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.attack": 5.0,
        "vehicles.attack.VIP": 15.0
      },
      "FetchDistanceLimit": {
        "vehicles.attack": 50.0,
        "vehicles.attack.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.attack": 50.0,
        "vehicles.attack.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.attack": 0,
        "vehicles.attack.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.attack": false,
        "vehicles.attack.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.attack": 0.5,
        "vehicles.attack.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "mini": {
      "Name": "Minicopter",
      "Prefab": "assets/content/vehicles/minicopter/minicopter.entity.prefab",
      "SpawnCooldown": {
        "vehicles.minicopter": 3600.0,
        "vehicles.minicopter.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.minicopter": 60.0,
        "vehicles.minicopter.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.minicopter": 5.0,
        "vehicles.minicopter.VIP": 15.0
      },
      "FetchDistanceLimit": {
        "vehicles.minicopter": 50.0,
        "vehicles.minicopter.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.minicopter": 50.0,
        "vehicles.minicopter.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.minicopter": 0,
        "vehicles.minicopter.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.minicopter": false,
        "vehicles.minicopter.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.minicopter": 0.5,
        "vehicles.minicopter.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": {
        "vehicles.minicopter1": [
          {
            "pX": 0.0,
            "pY": 0.35,
            "pZ": -1.45,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          }
        ],
        "vehicles.minicopter2": [
          {
            "pX": 0.6,
            "pY": 0.2,
            "pZ": -0.2,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          },
          {
            "pX": -0.6,
            "pY": 0.2,
            "pZ": -0.2,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          }
        ],
        "vehicles.minicopter3": [
          {
            "pX": 0.0,
            "pY": 0.35,
            "pZ": -1.45,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          },
          {
            "pX": 0.6,
            "pY": 0.2,
            "pZ": -0.2,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          },
          {
            "pX": -0.6,
            "pY": 0.2,
            "pZ": -0.2,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          }
        ]
      },
      "ExtraSeats": {
        "vehicles.minicopter1": [
          {
            "pX": 0.0,
            "pY": 0.4,
            "pZ": -1.1,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          }
        ],
        "vehicles.minicopter2": [
          {
            "pX": 0.6,
            "pY": 0.2,
            "pZ": -0.5,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          },
          {
            "pX": -0.6,
            "pY": 0.2,
            "pZ": -0.5,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          }
        ],
        "vehicles.minicopter3": [
          {
            "pX": 0.0,
            "pY": 0.4,
            "pZ": -1.1,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          },
          {
            "pX": 0.6,
            "pY": 0.2,
            "pZ": -0.5,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          },
          {
            "pX": -0.6,
            "pY": 0.2,
            "pZ": -0.5,
            "rX": 0.0,
            "rY": 0.0,
            "rZ": 0.0
          }
        ]
      },
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "heli": {
      "Name": "Scrap Transport Helicopter",
      "Prefab": "assets/content/vehicles/scrap heli carrier/scraptransporthelicopter.prefab",
      "SpawnCooldown": {
        "vehicles.scraphelicopter": 3600.0,
        "vehicles.scraphelicopter.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.scraphelicopter": 60.0,
        "vehicles.scraphelicopter.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.scraphelicopter": 5.0,
        "vehicles.scraphelicopter.VIP": 15.0
      },
      "FetchDistanceLimit": {
        "vehicles.scraphelicopter": 50.0,
        "vehicles.scraphelicopter.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.scraphelicopter": 50.0,
        "vehicles.scraphelicopter.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.scraphelicopter": 0,
        "vehicles.scraphelicopter.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.scraphelicopter": false,
        "vehicles.scraphelicopter.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.scraphelicopter": 0.5,
        "vehicles.scraphelicopter.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": {
        "vehicles.scraphelicopter2": [
          {
            "pX": -1.235,
            "pY": 1.0,
            "pZ": -2.75,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          },
          {
            "pX": 1.2,
            "pY": 1.0,
            "pZ": -2.75,
            "rX": 0.0,
            "rY": 180.0,
            "rZ": 0.0
          }
        ]
      },
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "boat": {
      "Name": "Row Boat",
      "Prefab": "assets/content/vehicles/boats/rowboat/rowboat.prefab",
      "SpawnCooldown": {
        "vehicles.rowboat": 3600.0,
        "vehicles.rowboat.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.rowboat": 60.0,
        "vehicles.rowboat.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.rowboat": 3.0,
        "vehicles.rowboat.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.rowboat": 50.0,
        "vehicles.rowboat.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.rowboat": 50.0,
        "vehicles.rowboat.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.rowboat": 0,
        "vehicles.rowboat.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.rowboat": false,
        "vehicles.rowboat.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.rowboat": 0.1,
        "vehicles.rowboat.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "rhib": {
      "Name": "RHIB",
      "Prefab": "assets/content/vehicles/boats/rhib/rhib.prefab",
      "SpawnCooldown": {
        "vehicles.rhib": 3600.0,
        "vehicles.rhib.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.rhib": 60.0,
        "vehicles.rhib.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.rhib": 5.0,
        "vehicles.rhib.VIP": 15.0
      },
      "FetchDistanceLimit": {
        "vehicles.rhib": 50.0,
        "vehicles.rhib.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.rhib": 50.0,
        "vehicles.rhib.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.rhib": 0,
        "vehicles.rhib.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.rhib": false,
        "vehicles.rhib.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.rhib": 0.25,
        "vehicles.rhib.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "kayak": {
      "Name": "Kayak",
      "Prefab": "assets/content/vehicles/boats/kayak/kayak.prefab",
      "SpawnCooldown": {
        "vehicles.kayak": 3600.0,
        "vehicles.kayak.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.kayak": 60.0,
        "vehicles.kayak.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.kayak": 3.0,
        "vehicles.kayak.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.kayak": 50.0,
        "vehicles.kayak.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.kayak": 50.0,
        "vehicles.kayak.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "sub1": {
      "Name": "Solo Submarine",
      "Prefab": "assets/content/vehicles/submarine/submarinesolo.entity.prefab",
      "SpawnCooldown": {
        "vehicles.submarinesolo": 3600.0,
        "vehicles.submarinesolo.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.submarinesolo": 60.0,
        "vehicles.submarinesolo.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.submarinesolo": 3.0,
        "vehicles.submarinesolo.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.submarinesolo": 50.0,
        "vehicles.submarinesolo.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.submarinesolo": 50.0,
        "vehicles.submarinesolo.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.submarinesolo": 0,
        "vehicles.submarinesolo.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.submarinesolo": false,
        "vehicles.submarinesolo.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.submarinesolo": 0.025,
        "vehicles.submarinesolo.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.submarinesolo": 0.13,
        "vehicles.submarinesolo.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "sub2": {
      "Name": "Duo Submarine",
      "Prefab": "assets/content/vehicles/submarine/submarineduo.entity.prefab",
      "SpawnCooldown": {
        "vehicles.submarineduo": 3600.0,
        "vehicles.submarineduo.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.submarineduo": 60.0,
        "vehicles.submarineduo.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.submarineduo": 3.0,
        "vehicles.submarineduo.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.submarineduo": 50.0,
        "vehicles.submarineduo.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.submarineduo": 50.0,
        "vehicles.submarineduo.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.submarineduo": 0,
        "vehicles.submarineduo.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.submarineduo": false,
        "vehicles.submarineduo.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.submarineduo": 0.03,
        "vehicles.submarineduo.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.submarineduo": 0.15,
        "vehicles.submarineduo.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "tug": {
      "Name": "Tugboat",
      "Prefab": "assets/content/vehicles/boats/tugboat/tugboat.prefab",
      "SpawnCooldown": {
        "vehicles.tugboat": 3600.0,
        "vehicles.tugboat.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.tugboat": 60.0,
        "vehicles.tugboat.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.tugboat": 10.0,
        "vehicles.tugboat.VIP": 25.0
      },
      "FetchDistanceLimit": {
        "vehicles.tugboat": 50.0,
        "vehicles.tugboat.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.tugboat": 50.0,
        "vehicles.tugboat.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.tugboat": 0,
        "vehicles.tugboat.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.tugboat": false,
        "vehicles.tugboat.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.tugboat": 0.33,
        "vehicles.tugboat.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": true,
      "CanNotSpawnOnWater": false
    },
    "hab": {
      "Name": "Hot Air Balloon",
      "Prefab": "assets/prefabs/deployable/hot air balloon/hotairballoon.prefab",
      "SpawnCooldown": {
        "vehicles.hotairballoon": 3600.0,
        "vehicles.hotairballoon.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.hotairballoon": 60.0,
        "vehicles.hotairballoon.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.hotairballoon": 3.0,
        "vehicles.hotairballoon.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.hotairballoon": 50.0,
        "vehicles.hotairballoon.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.hotairballoon": 50.0,
        "vehicles.hotairballoon.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.hotairballoon": 0,
        "vehicles.hotairballoon.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.hotairballoon": false,
        "vehicles.hotairballoon.VIP": true
      },
      "FuelPerSecond": {
        "vehicles.hotairballoon": 0.25,
        "vehicles.hotairballoon.VIP": 0.0
      },
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": 180.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "horse": {
      "Name": "Ridable Horse",
      "Prefab": "assets/rust.ai/nextai/testridablehorse.prefab",
      "SpawnCooldown": {
        "vehicles.ridablehorse": 3600.0,
        "vehicles.ridablehorse.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.ridablehorse": 60.0,
        "vehicles.ridablehorse.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.ridablehorse": 3.0,
        "vehicles.ridablehorse.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.ridablehorse": 50.0,
        "vehicles.ridablehorse.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.ridablehorse": 50.0,
        "vehicles.ridablehorse.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": true
    },
    "sled": {
      "Name": "Sled",
      "Prefab": "assets/prefabs/misc/xmas/sled/sled.deployed.prefab",
      "SpawnCooldown": {
        "vehicles.sled": 3600.0,
        "vehicles.sled.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.sled": 60.0,
        "vehicles.sled.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.sled": 3.0,
        "vehicles.sled.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.sled": 50.0,
        "vehicles.sled.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.sled": 50.0,
        "vehicles.sled.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "snow": {
      "Name": "Snowmobile",
      "Prefab": "assets/content/vehicles/snowmobiles/snowmobile.prefab",
      "SpawnCooldown": {
        "vehicles.snowmobile": 3600.0,
        "vehicles.snowmobile.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.snowmobile": 60.0,
        "vehicles.snowmobile.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.snowmobile": 3.0,
        "vehicles.snowmobile.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.snowmobile": 50.0,
        "vehicles.snowmobile.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.snowmobile": 50.0,
        "vehicles.snowmobile.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.snowmobile": 0,
        "vehicles.snowmobile.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.snowmobile": false,
        "vehicles.snowmobile.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.snowmobile": 0.03,
        "vehicles.snowmobile.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.snowmobile": 0.15,
        "vehicles.snowmobile.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "tomaha": {
      "Name": "Tomaha Snowmobile",
      "Prefab": "assets/content/vehicles/snowmobiles/tomahasnowmobile.prefab",
      "SpawnCooldown": {
        "vehicles.tomaha": 3600.0,
        "vehicles.tomaha.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.tomaha": 60.0,
        "vehicles.tomaha.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.tomaha": 3.0,
        "vehicles.tomaha.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.tomaha": 50.0,
        "vehicles.tomaha.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.tomaha": 50.0,
        "vehicles.tomaha.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.tomaha": 0,
        "vehicles.tomaha.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.tomaha": false,
        "vehicles.tomaha.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.tomaha": 0.03,
        "vehicles.tomaha.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.tomaha": 0.15,
        "vehicles.tomaha.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "motorbike": {
      "Name": "Motorbike",
      "Prefab": "assets/content/vehicles/bikes/motorbike.prefab",
      "SpawnCooldown": {
        "vehicles.motorbike": 3600.0,
        "vehicles.motorbike.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.motorbike": 60.0,
        "vehicles.motorbike.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.motorbike": 3.0,
        "vehicles.motorbike.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.motorbike": 50.0,
        "vehicles.motorbike.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.motorbike": 50.0,
        "vehicles.motorbike.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.motorbike": 0,
        "vehicles.motorbike.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.motorbike": false,
        "vehicles.motorbike.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.motorbike": 0.03,
        "vehicles.motorbike.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.motorbike": 0.15,
        "vehicles.motorbike.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "motorbike2": {
      "Name": "Motorbike Sidecar",
      "Prefab": "assets/content/vehicles/bikes/motorbike_sidecar.prefab",
      "SpawnCooldown": {
        "vehicles.motorbike2": 3600.0,
        "vehicles.motorbike2.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.motorbike2": 60.0,
        "vehicles.motorbike2.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.motorbike2": 3.0,
        "vehicles.motorbike2.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.motorbike2": 50.0,
        "vehicles.motorbike2.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.motorbike2": 50.0,
        "vehicles.motorbike2.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.motorbike2": 0,
        "vehicles.motorbike2.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.motorbike2": false,
        "vehicles.motorbike2.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.motorbike2": 0.03,
        "vehicles.motorbike2.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.motorbike2": 0.15,
        "vehicles.motorbike2.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "bike": {
      "Name": "Pedal Bike",
      "Prefab": "assets/content/vehicles/bikes/pedalbike.prefab",
      "SpawnCooldown": {
        "vehicles.bike": 3600.0,
        "vehicles.bike.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.bike": 60.0,
        "vehicles.bike.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.bike": 3.0,
        "vehicles.bike.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.bike": 50.0,
        "vehicles.bike.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.bike": 50.0,
        "vehicles.bike.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "trike": {
      "Name": "Pedal Trike",
      "Prefab": "assets/content/vehicles/bikes/pedaltrike.prefab",
      "SpawnCooldown": {
        "vehicles.trike": 3600.0,
        "vehicles.trike.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.trike": 60.0,
        "vehicles.trike.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.trike": 3.0,
        "vehicles.trike.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.trike": 50.0,
        "vehicles.trike.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.trike": 50.0,
        "vehicles.trike.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "ch47": {
      "Name": "Chinook",
      "Prefab": "assets/prefabs/npc/ch47/ch47.entity.prefab",
      "SpawnCooldown": {
        "vehicles.chinook": 3600.0,
        "vehicles.chinook.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.chinook": 60.0,
        "vehicles.chinook.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.chinook": 3.0,
        "vehicles.chinook.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.chinook": 50.0,
        "vehicles.chinook.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.chinook": 50.0,
        "vehicles.chinook.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "sedan": {
      "Name": "Sedan",
      "Prefab": "assets/content/vehicles/sedan_a/sedantest.entity.prefab",
      "SpawnCooldown": {
        "vehicles.sedan": 3600.0,
        "vehicles.sedan.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.sedan": 60.0,
        "vehicles.sedan.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.sedan": 3.0,
        "vehicles.sedan.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.sedan": 50.0,
        "vehicles.sedan.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.sedan": 50.0,
        "vehicles.sedan.VIP": 0.0
      },
      "StartingFuel": null,
      "LockFuelContainer": null,
      "FuelPerSecond": null,
      "IdleFuelPerSecond": null,
      "MaxFuelPerSecond": null,
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "4mod": {
      "Name": "4 Module Car",
      "Prefab": "assets/content/vehicles/modularcar/4module_car_spawned.entity.prefab",
      "SpawnCooldown": {
        "vehicles.4modulecar": 3600.0,
        "vehicles.4modulecar.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.4modulecar": 60.0,
        "vehicles.4modulecar.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.4modulecar": 3.0,
        "vehicles.4modulecar.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.4modulecar": 50.0,
        "vehicles.4modulecar.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.4modulecar": 50.0,
        "vehicles.4modulecar.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.4modulecar": 0,
        "vehicles.4modulecar.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.4modulecar": false,
        "vehicles.4modulecar.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.4modulecar": 0.025,
        "vehicles.4modulecar.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.4modulecar": 0.08,
        "vehicles.4modulecar.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "3mod": {
      "Name": "3 Module Car",
      "Prefab": "assets/content/vehicles/modularcar/3module_car_spawned.entity.prefab",
      "SpawnCooldown": {
        "vehicles.3modulecar": 3600.0,
        "vehicles.3modulecar.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.3modulecar": 60.0,
        "vehicles.3modulecar.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.3modulecar": 3.0,
        "vehicles.3modulecar.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.3modulecar": 50.0,
        "vehicles.3modulecar.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.3modulecar": 50.0,
        "vehicles.3modulecar.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.3modulecar": 0,
        "vehicles.3modulecar.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.3modulecar": false,
        "vehicles.3modulecar.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.3modulecar": 0.025,
        "vehicles.3modulecar.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.3modulecar": 0.08,
        "vehicles.3modulecar.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "2mod": {
      "Name": "2 Module Car",
      "Prefab": "assets/content/vehicles/modularcar/2module_car_spawned.entity.prefab",
      "SpawnCooldown": {
        "vehicles.2modulecar": 3600.0,
        "vehicles.2modulecar.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.2modulecar": 60.0,
        "vehicles.2modulecar.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.2modulecar": 3.0,
        "vehicles.2modulecar.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.2modulecar": 50.0,
        "vehicles.2modulecar.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.2modulecar": 50.0,
        "vehicles.2modulecar.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.2modulecar": 0,
        "vehicles.2modulecar.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.2modulecar": false,
        "vehicles.2modulecar.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.2modulecar": 0.025,
        "vehicles.2modulecar.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.2modulecar": 0.08,
        "vehicles.2modulecar.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "crane": {
      "Name": "Magnet Crane",
      "Prefab": "assets/content/vehicles/crane_magnet/magnetcrane.entity.prefab",
      "SpawnCooldown": {
        "vehicles.magnetcrane": 3600.0,
        "vehicles.magnetcrane.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.magnetcrane": 60.0,
        "vehicles.magnetcrane.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.magnetcrane": 3.0,
        "vehicles.magnetcrane.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.magnetcrane": 50.0,
        "vehicles.magnetcrane.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.magnetcrane": 50.0,
        "vehicles.magnetcrane.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.magnetcrane": 0,
        "vehicles.magnetcrane.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.magnetcrane": false,
        "vehicles.magnetcrane.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.magnetcrane": 0.06668,
        "vehicles.magnetcrane.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.magnetcrane": 0.3334,
        "vehicles.magnetcrane.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": false
    },
    "cart": {
      "Name": "Workcart",
      "Prefab": "assets/content/vehicles/trains/workcart/workcart.entity.prefab",
      "SpawnCooldown": {
        "vehicles.workcart": 3600.0,
        "vehicles.workcart.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.workcart": 60.0,
        "vehicles.workcart.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.workcart": 3.0,
        "vehicles.workcart.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.workcart": 50.0,
        "vehicles.workcart.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.workcart": 50.0,
        "vehicles.workcart.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.workcart": 0,
        "vehicles.workcart.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.workcart": false,
        "vehicles.workcart.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.workcart": 0.025,
        "vehicles.workcart.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.workcart": 0.075,
        "vehicles.workcart.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": true
    },
    "agcart": {
      "Name": "Above Ground Workcart",
      "Prefab": "assets/content/vehicles/trains/workcart/workcart_aboveground.entity.prefab",
      "SpawnCooldown": {
        "vehicles.abovegroundworkcart": 3600.0,
        "vehicles.abovegroundworkcart.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.abovegroundworkcart": 60.0,
        "vehicles.abovegroundworkcart.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.abovegroundworkcart": 3.0,
        "vehicles.abovegroundworkcart.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.abovegroundworkcart": 50.0,
        "vehicles.abovegroundworkcart.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.abovegroundworkcart": 50.0,
        "vehicles.abovegroundworkcart.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.abovegroundworkcart": 0,
        "vehicles.abovegroundworkcart.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.abovegroundworkcart": false,
        "vehicles.abovegroundworkcart.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.abovegroundworkcart": 0.025,
        "vehicles.abovegroundworkcart.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.abovegroundworkcart": 0.075,
        "vehicles.abovegroundworkcart.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": true
    },
    "agcart2": {
      "Name": "Above Ground Workcart 2",
      "Prefab": "assets/content/vehicles/trains/workcart/workcart_aboveground2.entity.prefab",
      "SpawnCooldown": {
        "vehicles.abovegroundworkcart2": 3600.0,
        "vehicles.abovegroundworkcart2.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.abovegroundworkcart2": 60.0,
        "vehicles.abovegroundworkcart2.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.abovegroundworkcart2": 3.0,
        "vehicles.abovegroundworkcart2.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.abovegroundworkcart2": 50.0,
        "vehicles.abovegroundworkcart2.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.abovegroundworkcart2": 50.0,
        "vehicles.abovegroundworkcart2.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.abovegroundworkcart2": 0,
        "vehicles.abovegroundworkcart2.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.abovegroundworkcart2": false,
        "vehicles.abovegroundworkcart2.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.abovegroundworkcart2": 0.025,
        "vehicles.abovegroundworkcart2.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.abovegroundworkcart2": 0.075,
        "vehicles.abovegroundworkcart2.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": true
    },
    "locomotive": {
      "Name": "Locomotive",
      "Prefab": "assets/content/vehicles/trains/locomotive/locomotive.entity.prefab",
      "SpawnCooldown": {
        "vehicles.locomotive": 3600.0,
        "vehicles.locomotive.VIP": 300.0
      },
      "FetchCooldown": {
        "vehicles.locomotive": 60.0,
        "vehicles.locomotive.VIP": 5.0
      },
      "MaxSpawnDistance": {
        "vehicles.locomotive": 3.0,
        "vehicles.locomotive.VIP": 10.0
      },
      "FetchDistanceLimit": {
        "vehicles.locomotive": 50.0,
        "vehicles.locomotive.VIP": 0.0
      },
      "DespawnDistanceLimit": {
        "vehicles.locomotive": 50.0,
        "vehicles.locomotive.VIP": 0.0
      },
      "StartingFuel": {
        "vehicles.locomotive": 0,
        "vehicles.locomotive.VIP": 1
      },
      "LockFuelContainer": {
        "vehicles.locomotive": false,
        "vehicles.locomotive.VIP": true
      },
      "FuelPerSecond": null,
      "IdleFuelPerSecond": {
        "vehicles.locomotive": 0.035,
        "vehicles.locomotive.VIP": 0.0
      },
      "MaxFuelPerSecond": {
        "vehicles.locomotive": 0.1,
        "vehicles.locomotive.VIP": 0.0
      },
      "ExtraMounts": null,
      "ExtraSeats": null,
      "YRotationSpawnOffset": -90.0,
      "CanOnlySpawnOnWater": false,
      "CanNotSpawnOnWater": true
    }
  },
  "Version": {
    "Major": 0,
    "Minor": 1,
    "Patch": 8
  }
}

 

 

 

 

 

Lang:

{
  "NoPermissionSpawn": "You do not have permission to spawn {0}s.",
  "NoPermissionFetch": "You do not have permission to fetch {0}s.",
  "MountedOrParented": "You cannot spawn or fetch vehicles while mounted or parented.",
  "BuildingBlocked": "You cannot spawn or fetch vehicles while building blocked.",
  "InSafeZone": "You cannot spawn or fetch vehicles in a safe zone.",
  "CombatBlocked": "You cannot spawn or fetch vehicles while combat blocked.",
  "RaidBlocked": "You cannot spawn or fetch vehicles while raid blocked.",
  "NotOnWater": "You can only spawn or fetch {0}s on water.",
  "OnWater": "You can not spawn or fetch {0}s on water.",
  "TracksNotFound": "You can only spawn or fetch {0}s on train tracks.",
  "LookingTooFar": "You must be looking at a position closer to you to be able to spawn or fetch {0}s.",
  "Destroyed": "Your {0} has been destroyed.",
  "AlreadySpawned": "You already own a {0}.\nUse '/{1}' to fetch it or '/{2}' to despawn it.",
  "SpawnCooldown": "You must wait {0} before spawning another {1}.",
  "FetchCooldown": "You must wait {0} before fetching your {1}.",
  "Spawned": "Your {0} has spawned.",
  "NotFound": "You do not have a {0}.",
  "TooFarFetch": "Your {0} is too far away to be fetched.",
  "TooFarDespawn": "Your {0} is too far away to be despawned.",
  "BeingUsedFetch": "Cannot fetch your {0} as it is currently being used by another player",
  "BeingUsedDespawn": "Cannot despawn your {0} as it is currently being used by another player",
  "Fetched": "You have fetched your {0}.",
  "Despawned": "You have despawned your {0}.{1}",
  "Refunded": "\nRefunded {0} low grade fuel."
}

 

 

 

 

 

API

List<Tuple<string, string, string>> GetConfig()


Returns the suffix and its name and prefab for every vehicle in the config file.
Example:

List<Tuple<string, string, string>> suffixes = Vehicles.Call<List<Tuple<string, string, string>>>("GetConfig");
if (suffixes == null) return;
for (int i = 0; i < suffixes.Count; i++)
{
    string suffix = suffixes[i].Item1;
    string name = suffixes[i].Item2;
    string prefab = suffixes[i].Item3;
}

 

 

 

List<ulong> GetEntities(ulong playerID, string suffix)


Returns a `List<ulong>` with the network ID of all available entities spawned by the player with this suffix, returns `null` if none found.
Example:

List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini");
if (minis == null) return;
BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;
BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity;

 

 

 

Dictionary<string, List<ulong>> GetAllEntities(ulong playerID)


Returns a `Dictionary<string, List<ulong>>` with the Key as the suffix and the Value as the network ID of all available entities spawned by the player, returns `null` if none found.
Example:

Dictionary<string, List<ulong>> entities = Vehicles.Call<Dictionary<string, List<ulong>>>("GetAllEntities", player.userID);
if (entities == null) return;

List<ulong> minis;
if (entities.TryGetValue("mini", out minis))
{
    BaseEntity newestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;
    BaseEntity oldestMini = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[0])) as BaseEntity;
}
List<ulong> boats;
if (entities.TryGetValue("boat", out boats))
{
    BaseEntity newestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[boats.Count - 1])) as BaseEntity;
    BaseEntity oldestBoat = BaseNetworkable.serverEntities.Find(new NetworkableId(boats[0])) as BaseEntity;
}

 

 

 

bool IsPlayerEntity(ulong entityID)


Checks if the entity belongs to `Vehicles`.
Example:

bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value);

 

 

 

string GetSuffix(ulong entityID)


Returns the suffix of the entity, returns `null` if the entity does not belong to `Vehicles`.
Example:

string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value);
if (string.IsNullOrWhiteSpace(suffix)) return;

 

 

 

ulong GetOwnerUserID(ulong entityID)


Returns the userID of the player who spawned the entity (**not the entity's OwnerID**), returns `0uL` if the entity does not belong to `Vehicles`.
Example:

ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value);
if (playerID == 0uL) return;

 

 

 

bool DespawnNewestEntity(ulong playerID, string suffix, bool refundFuel = false, bool notify = false)


Despawns the newest available entity spawned by the player with this suffix, returns `false` if not found.
Examples:

bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini");
bool success = Vehicles.Call<bool>("DespawnNewestEntity", player.userID, "mini", true, true);

 

 

 

int DespawnAllEntities(ulong playerID, string suffix = "", bool refundFuel = false, bool notify = false)


Despawns all the entities (optionally by suffix) spawned by the player, returns the amount of entities despawned.
Examples:

int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID);
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "", true, true);
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini");
int despawnedAmount = Vehicles.Call<int>("DespawnAllEntities", player.userID, "mini", true, true);

 

 

 

bool AddEntity(ulong playerID, string suffix, ulong entityID)


Adds the entity as the player's last spawned entity with this suffix, returns `false` if suffix does not exist.
Example:

bool success = Vehicles.Call<bool>("AddEntity", player.userID, "mini", entity.net.ID.Value);

 

 

 

bool RemoveEntity(ulong entityID, string suffix = "", ulong playerID = 0uL)


Removes the entity so that it no longer belongs to `Vehicles`, faster if the two optional arguments are provided, returns `false` if entity does not belong to `Vehicles` or to the player's list of entities for this suffix.
Examples:

bool success = RemoveEntity(entity.net.ID.Value);
bool isPlayerEntity = Vehicles.Call<bool>("IsPlayerEntity", entity.net.ID.Value);
if (!isPlayerEntity) return;
string suffix = Vehicles.Call<string>("GetSuffix", entity.net.ID.Value);
ulong playerID = Vehicles.Call<ulong>("GetOwnerUserID", entity.net.ID.Value);
bool success = Vehicles.Call<bool>("RemoveEntity", entity.net.ID.Value, suffix, playerID);

 

 

 

double GetCooldownLeft(ulong playerID, string suffix, bool fetch = false)


Returns how many seconds are left for the player's cooldown to expire for this suffix, returns a negative number if the player's cooldown has expired,  returns `0.0` if suffix does not exist, returns `0.0` if the player's permissions do not have a cooldown for this suffix, or returns `-1.0` if the player does not yet contain a cooldown for this suffix.
Examples:

double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
bool canSpawn = (left <= 0 && left != -1);
bool onSpawnCooldown = (left > 0.0);
bool notFound = (left == -1);
double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true);
bool canFetch = (left <= 0 && left != -1);
bool onFetchCooldown = (left > 0.0);
bool notFound = (left == -1);

 

 

 

bool AddCooldown(ulong playerID, string suffix, bool fetch = false)


Adds a cooldown to the player with the current timestamp for this suffix, returns `false` if the suffix does not exist.
Examples:

bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini");
bool success = Vehicles.Call<bool>("AddCooldown", player.userID, "mini", true);

 

 

 

bool ClearCooldowns(ulong playerID, string suffix = "", bool fetch = false)


Clears the spawn or the fetch cooldowns for the player, clears for every suffix unless one is provided, returns `false` if the player does not have any cooldowns or if the player does not have a cooldown for the provided suffix.
Examples:

bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini");
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "mini", true);
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID);
bool success = Vehicles.Call<bool>("ClearCooldowns", player.userID, "", true);

 

 

string CooldownToString(double cooldown)


Returns a formatted `string` with the span of time.
Example:

double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
if (left == -1.0 || left > 0.0) return;
string duration = Vehicles.Call<string>("CooldownToString", left);

 

 

 

bool HasPermission(string playerId, string suffix, bool fetch = false)


Checks if the player has permission to spawn or fetch this suffix, returns `false` if suffix does not exist.
Examples:

bool canSpawn = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini");
bool canFetch = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true);

 

 

 

bool CanSpawn(BasePlayer player)


Checks if the player can spawn or fetch according to the config options.
Example:

bool canspawn = Vehicles.Call<bool>("CanSpawn", player);

 

 

 

bool CheckSurface(string suffix, Vector3 position, out bool water)


Checks if this suffix may be spawned or fetched on the surface at this position, returns `false` if suffix does not exist, `out` parameter returns `true` if checked surface is water.
Example:

//bool water;
//bool allowedSurface = CheckSurface("mini", position, out water);
//if (!allowedSurface)
//{
//    if (water) player.ChatMessage("Can't spawn on water.");
//    else player.ChatMessage("Can't spawn on land.");
//}

 

 

 

bool TryMoveToTrainTrack(TrainCar train, Vector3 position)


Moves the `TrainCar` to the nearest train track at this position, returns `false` if no train tracks are found.
Example:

bool moved = Vehicles.Call<bool>("TryMoveToTrainTrack", train, position);

 

 

 

Vector3 GetGroundPositionLookingAt(BasePlayer player, float maxDistance)


Returns the position of the surface at up to this maximum distance at the point that the player is looking at, returns `Vector3.zero` if the distance between the position of the surface and the player's position is higher than the maximum distance.
Example:

Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;

 

 

 

void RemoveMapMarker(BaseEntity entity)


Removes the map marker from chinooks.
Example:

Vehicles.Call("RemoveMapMarker", entity);

 

 

 

bool SetFuelConsumption(BaseEntity entity)


Sets the entity's fuel consumption and/or locks the fuel container as is configured for its suffix, returns `false` if entity does not belong to `Vehicles`.
Example:

bool success = Vehicles.Call<bool>("SetFuelConsumption", entity);

 

 

 

bool SetModuleEngineFuelConsumption(VehicleModuleEngine moduleEngine)


Sets the module engine's fuel consumption as is configured for the suffix that the engine is mounted on, returns `false` if the entity that the engine is mounted on does not belong to `Vehicles`.
Example:

bool success = Vehicles.Call<bool>("SetModuleEngineFuelConsumption", moduleEngine);

 

 

 

int AddFuel(EntityFuelSystem fuelSystem)


Adds starting fuel to the entity's fuel system as is configured for its suffix, returns the amount of fuel added or returns `0` if config is set to 0 or returns `-1` if entity does not belong to `Vehicles`.
Example:

int addedFuel = Vehicles.Call<int>("AddFuel", vehicle.GetFuelSystem());
bool success = (addedFuel >= 1);
bool configNoFuel = (addedFuel == 0);
bool failed = (addedFuel == -1);

 

 

 

int RefundFuel(EntityFuelSystem fuelSystem, BasePlayer player)


Refunds the player of any fuel left in the entity's fuel tank, returns the amount of fuel refunded or returns `0` if no fuel left.
Example:

int returnedFuel = Vehicles.Call<int>("RefundFuel", vehicle.GetFuelSystem(), player);
bool success = (returnedFuel >= 1);
bool empty = (returnedFuel == 0);

 

 

 

List<BaseVehicle.MountPointInfo> AddMounts(string playerId, string suffix, BaseVehicle vehicle)


Adds mount points to the vehicle according to the permissions the player has for this suffix, must be called before spawning the entity, returns a `List<BaseVehicle.MountPointInfo>` of the mount points that were added to the vehicle.
Example:

BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity;
if (entity == null) return;

BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle != null)
{
    List<BaseVehicle.MountPointInfo> mounts = Vehicles.Call<List<BaseVehicle.MountPointInfo>>("AddMounts", player.UserIDString, "mini", vehicle);
    int mountsAdded = mounts.Count;
}

entity.Spawn();

 

 

 

List<BaseEntity> AddSeats(string playerId, string suffix, BaseEntity entity)


Adds seats to the vehicle according to the permissions the player has for this suffix, returns a `List<BaseEntity>` of the seats that were added to the vehicle.
Example:

List<BaseEntity> seats = Vehicles.Call<List<BaseEntity>>("AddSeats", player.UserIDString, "mini", entity);
int seatsAdded = seats.Count;

 

 

 

List<BasePlayer> GetMountedOccupants(BaseEntity entity)


Returns a `List<BasePlayer>` of mounted players.
Example:

List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
int numMounted = mounted.Count;

 

 

 

List<BasePlayer> GetParentedOccupants(BaseEntity entity)


Returns a `List<BasePlayer>` of parented players.
Example:

List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
int numParented = parented.Count;

 

 

 

void DismountOccupants(List<BasePlayer> mounted)


Dismounts every player on this List from the vehicle.
Example:

List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
Vehicles.Call("DismountOccupants", mounted);

 

 

 

void UnparentOccupants(List<BasePlayer> parented)


Unparents every player on this List from the entity.
Example:

List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
Vehicles.Call("UnparentOccupants", parented);

 

 

 

string GetMapGrid(Vector3 position)


Returns the map grid from this position.
Examples:

string mapGrid = Vehicles.Call<string>("GetMapGrid", entity.transform.position);
string mapGrid = Vehicles.Call<string>("GetMapGrid", player.transform.position);

 

 

 

BaseEntity CreateEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)


Spawns a suffix for this userID, returns the `BaseEntity` or returns `null` if suffix does not exist.
Example:

bool hasSpawnPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini");
if (!hasSpawnPerm) return;

double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini");
if (left > 0.0) return;

bool canSpawn = Vehicles.Call<bool>("CanSpawn", player);
if (!canSpawn) return;

Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;

BaseEntity entity = Vehicles.Call("CreateEntity", player.userID, "mini", position) as BaseEntity;
if (entity == null) return;

entity.Spawn();
Vehicles.Call("AddEntity", player.userID, "mini", entity.net.ID.Value);

BaseVehicle vehicle = entity as BaseVehicle;
if (vehicle != null)
{
    Vehicles.Call("SetFuelConsumption", entity);
    Vehicles.Call("AddFuel", vehicle.GetFuelSystem());
}

Vehicles.Call("AddCooldown", player.userID, "mini");

 

 

 

BaseEntity FetchEntity(ulong playerID, string suffix, Vector3 position, float YrotationOffset = -90.0f)


Fetches the last available entity spawned by the player with this suffix, returns the `BaseEntity` or returns `null` if not found.
Example:

bool hasFetchPerm = Vehicles.Call<bool>("HasPermission", player.UserIDString, "mini", true);
if (!hasFetchPerm) return;

List<ulong> minis = Vehicles.Call<List<ulong>>("GetEntities", player.userID, "mini");
if (minis == null) return;
BaseEntity entity = BaseNetworkable.serverEntities.Find(new NetworkableId(minis[minis.Count - 1])) as BaseEntity;

double left = Vehicles.Call<double>("GetCooldownLeft", player.userID, "mini", true);
if (left > 0.0) return;

bool canSpawn = Vehicles.Call<bool>("CanSpawn", player);
if (!canSpawn) return;

Vector3 position = Vehicles.Call<Vector3>("GetGroundPositionLookingAt", player, 15.0f);
if (position == Vector3.zero) return;

List<BasePlayer> mounted = Vehicles.Call<List<BasePlayer>>("GetMountedOccupants", entity);
List<BasePlayer> parented = Vehicles.Call<List<BasePlayer>>("GetParentedOccupants", entity);
if (!config.AllowFetchingWhenOccupied && (mounted.Count > 0 || parented.Count > 0)) return;
if (config.DismountOccupantsWhenFetching)
{
    Vehicles.Call("DismountOccupants", mounted);
    Vehicles.Call("UnparentOccupants", parented);
}

object obj = Vehicles.Call("FetchEntity", player.userID, "mini", position);

.


User Feedback

1.4m

Downloads

Total number of downloads.

6.8k

Customers

Total customers served.

101.7k

Files Sold

Total number of files sold.

2m

Payments Processed

Total payments processed.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.