Vehicle License Plate

Vehicle License Plate 1.0.0

Adds license plates to vehicles with automatically generated numbers
Dependencies
Sign Artist (Required)
image.jpg
image2.jpg
image3.jpg
image4.jpg


This Rust plugin adds license plates to vehicles like minicopters, modular cars, boats, and even custom vehicles from Karuza. Players can attach plates manually with a chat command, or they can be added automatically when a vehicle spawns. Plate numbers are generated using random regions, letters, numbers, and optional monument or grid codes. You can also give certain groups their own special plates with custom colors and styles, like vips or police. Plates are saved and will stay even after server restarts.




Permissions

  • vehiclelicenseplate.use - Allows the player to use the /plate and /unplate chat commands to add or remove plates.
  • vehiclelicenseplate.editown - Allows a player to paint on the license plate sign attached to a vehicle they own.
  • vehiclelicenseplate.editany - Allows a player to paint on the license plate sign of any vehicle, even if they are not the owner.
  • vehiclelicenseplate.permit.{suffix} - Grants the player a specific permit tier defined in Permit Tiers. Replace {suffix} with the tier's Permission Suffix from config. The highest priority tier the player has access to will be applied to their license plate styling and format.

Commands

  • /plate - Adds a license plate to the vehicle the player is currently looking at (if allowed).
  • /unplate - Removes the license plate from a vehicle the player owns (they must be the OwnerID of the vehicle).

Configuration

JSON:
{
  "Version": "1.0.0",
  "Chat Command To Add Plate": "plate",
  "Chat Command To Remove Plate": "unplate",
  "Automatically Add Plate On Spawn": false,
  "Only Auto Add For Owned Vehicles": false,
  "Block Adding Plate If Vehicle Has An Owner": true,
  "Claim Vehicle Ownership When Adding Plate": true,
  "Supported Vehicles": [
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/minicopter/minicopter.entity.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.85,
        -0.8
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.5
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/boats/rhib/rhib.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.7,
        -4.35
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.0
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/boats/tugboat/tugboat.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        1.1,
        -12.0
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 2.0
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/bikes/motorbike.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.8,
        -0.95
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.5
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/bikes/motorbike_sidecar.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.8,
        -0.95
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.5
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/boats/rowboat/rowboat.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.35,
        -2.5
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.7
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/attackhelicopter/attackhelicopter.entity.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.8,
        -1.6
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.7
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/scrap heli carrier/scraptransporthelicopter.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.3,
        -3.3
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 1.0
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/modularcar/2module_car_spawned.entity.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.4,
        -1.95
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.7
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/modularcar/3module_car_spawned.entity.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.4,
        -2.7
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.7
    },
    {
      "Enabled": true,
      "Prefab Path": "assets/content/vehicles/modularcar/4module_car_spawned.entity.prefab",
      "Plate Local Position (x, y, z)": [
        0.0,
        0.4,
        -3.5
      ],
      "Plate Local Rotation (Euler degrees)": [
        0.0,
        180.0,
        0.0
      ],
      "Plate Scale (0 = inherit)": 0.7
    }
  ],
  "Plate Format Pattern": "{REGION}{SPACE}{LET1}{LET2}{SPACE}{NUM1}{NUM2}{NUM3}",
  "Plate Text Size": 18,
  "Plate Text Color (HEX, no #)": "00E5FF",
  "Plate Background Color (HEX, no #)": "111111",
  "Plate Scale (1.0 = normal)": 1.0,
  "Allowed Letters (A-Z)": "ABCDEFGHJKLMNPRSTUVWXYZ",
  "Region Code List (for {REGION})": [
    "D",
    "F",
    "NL",
    "S",
    "I",
    "PL",
    "CZ",
    "DK",
    "NO",
    "SE",
    "FI",
    "ES"
  ],
  "Monument Short Codes (for {MON})": {
    "airfield_1": "AF",
    "arctic_research_base_a": "ARB",
    "bandit_town": "BAN",
    "cave_large_hard": "CLH",
    "cave_large_medium": "CLM",
    "cave_large_sewers_hard": "CLS",
    "cave_medium_easy": "CME",
    "cave_medium_hard": "CMH",
    "cave_medium_medium": "CMM",
    "cave_small_easy": "CSE",
    "cave_small_hard": "CSH",
    "cave_small_medium": "CSM",
    "compound": "OUT",
    "desert_military_base_a": "DMB",
    "desert_military_base_b": "DMB",
    "desert_military_base_c": "DMB",
    "desert_military_base_d": "DMB",
    "excavator_1": "EX",
    "ferry_terminal_1": "FT",
    "fishing_village_a": "FV",
    "fishing_village_b": "FV",
    "fishing_village_c": "FV",
    "gas_station_1": "GAS",
    "harbor_1": "HB",
    "harbor_2": "HB",
    "ice_lake_1": "IL1",
    "ice_lake_2": "IL2",
    "ice_lake_3": "IL3",
    "ice_lake_4": "IL4",
    "junkyard_1": "JY",
    "launch_site_1": "LS",
    "lighthouse": "LH",
    "military_tunnel_1": "MT",
    "mining_quarry_a": "MQ",
    "mining_quarry_b": "MQ",
    "mining_quarry_c": "MQ",
    "nuclear_missile_silo": "NMS",
    "oilrig_1": "ORL",
    "oilrig_2": "ORS",
    "powerplant_1": "PP",
    "radtown_small_3": "SEW",
    "satellite_dish": "SAT",
    "sphere_tank": "DME",
    "stables_a": "STB",
    "stables_b": "STB",
    "supermarket_1": "SUP",
    "swamp_a": "SWP",
    "swamp_b": "SWP",
    "swamp_c": "SWP",
    "trainyard_1": "TY",
    "underwater_lab_a": "ULA",
    "underwater_lab_b": "ULB",
    "underwater_lab_c": "ULC",
    "underwater_lab_d": "ULD",
    "warehouse": "WH",
    "water_treatment_plant_1": "WTR",
    "water_well_a": "WELL",
    "water_well_b": "WELL",
    "water_well_c": "WELL",
    "water_well_d": "WELL",
    "water_well_e": "WELL"
  },
  "Permit Tiers": [
    {
      "Permission Suffix (e.g., vip)": "vip",
      "Priority (higher wins)": 50,
      "Font Size (0 = inherit)": 18,
      "Text Color (HEX, no #)": "FACC15",
      "Background Color (HEX, no #)": "0F172A",
      "Plate Format Pattern": "VIP{SPACE}{REGION}{SPACE}{LET1}{LET2}{SPACE}{NUM1}{NUM2}{NUM3}"
    },
    {
      "Permission Suffix (e.g., vip)": "police",
      "Priority (higher wins)": 75,
      "Font Size (0 = inherit)": 18,
      "Text Color (HEX, no #)": "F8FAFC",
      "Background Color (HEX, no #)": "0B1E3B",
      "Plate Format Pattern": "POLICE{SPACE}{REGION}{SPACE}{LET1}{LET2}{SPACE}{NUM1}{NUM2}{NUM3}"
    }
  ]
}
  • Chat Command To Add Plate - Players type this chat command (e.g., /plate) to manually attach a license plate to the vehicle they are looking at.
  • Chat Command To Remove Plate - Players type this chat command (e.g., /unplate) to remove the plate from their own vehicle. Only works if they are the owner.
  • Automatically Add Plate On Spawn - If set to true, plates are automatically added to supported vehicles the moment they spawn into the world (like from vendors or admin spawn).
  • Only Auto Add For Owned Vehicles - If set to true, only vehicles that already have an owner (OwnerID != 0) will get auto plates. Useful if you want to exclude naturally spawned vehicles.
  • Block Adding Plate If Vehicle Has An Owner - Prevents players from using the /plate command if the vehicle already has an owner. Stops people from messing with someone else's ride.
  • Claim Vehicle Ownership When Adding Plate - If a player uses /plate on a vehicle that has no owner, the plugin will set the vehicle's OwnerID to that player, giving them ownership.
  • Supported Vehicles- A list of vehicle types that should have license plates. You can add more entries to support different vehicles.
    • Enabled - Turns support for this vehicle on or off. If false, plates won't be added to this vehicle type.
    • Prefab Path - The internal prefab path of the vehicle.
    • Plate Local Position - Where the plate is placed on the vehicle, based on its center point. Adjust this if the plate looks off.
    • Plate Local Rotation - Which direction the plate faces. Use this to rotate the plate if it's backwards or angled wrong.
    • Plate Scale - Controls the size of the plate. Set to 0 to use the default global size, or increase/decrease to fine-tune for this vehicle.
  • Plate Format Pattern- The pattern used to generate the plate text. You can use any of the following tokens:
    • {REGION} - Random from your Region Code List.
    • {MON} - Uses nearest monument short code (if nearby).
    • {GRID} - Current map grid (e.g. J11).
    • {LET1} to {LET6} - Random letters from Allowed Letters.
    • {NUM1} to {NUM6} - Random numbers (0-9).
    • {SPACE} - Inserts a space.
    • {DASH} - Inserts a hyphen.
  • Plate Text Size - Default font size used on all plates, unless overridden by a permit tier.
  • Plate Text Color - HEX color of the text, without the # (e.g., FF0000 for red).
  • Plate Background Color - HEX background color of the sign, behind the text.
  • Plate Scale - Global fallback scaling for all signs. Can be overridden per vehicle or tier.
  • Allowed Letters - Letters allowed to be picked for the {LET} tokens.
  • Region Code List - List of region/country codes used in {REGION}. One is picked randomly for each plate.
  • Monument Short Codes - A list that connects each monument prefab name to a short code. These codes are used in license plates when the {MON} token is present in the format pattern.

    For example: If the plate format includes {MON} and the player is near launch_site_1, the code LS will be used. This makes the plate reflect the monument the vehicle was near when the plate was created.

  • Permit Tiers- Used to give different plate styles to vips, admins, police, etc. Each tier entry has:
    • Permission Suffix - Appended to form: vehiclelicenseplate.permit.{suffix} (e.g., vehiclelicenseplate.permit.vip)
    • Priority - If a player has multiple matching tier permissions, the one with the highest priority is used.
    • Font Size - Overrides text size for this tier (0 = fallback to default).
    • Text Color / Background Color - Custom color scheme just for this tier.
    • Plate Format Pattern - Fully overrides the main plate pattern if this tier applies to the player.

Stored Data

JSON:
{
  "Vehicle Plates": {
    "342134893": {
      "Vehicle Id": 342134893,
      "Sign Id": 482101394,
      "Owner Id": 76561198000000000,
      "Vehicle Prefab": "assets/content/vehicles/minicopter/minicopter.entity.prefab",
      "Plate Text": "D AB 123",
      "Font Size": 18,
      "Text Color (Hex)": "00E5FF",
      "Background Color (Hex)": "111111",
      "Permit Tier Suffix": "vip",
      "Sign Local Position": [0.0, 0.85, -0.8],
      "Sign Local Rotation": [0.0, 180.0, 0.0],
      "Sign Local Scale (x,y,z)": [0.5, 0.5, 0.5],
      "Player Edited": false
    }
  }
}
  • Vehicle Plates - A dictionary where each key is the vehicle's network id and the value is a detailed record about its plate.
  • Vehicle Id - The network id of the vehicle this plate is attached to.
  • Sign Id - The network id of the sign entity used as the plate.
  • Owner Id - The user id of the player who owns the vehicle (used for ownership checks and editing restrictions).
  • Vehicle Prefab - The full prefab path of the vehicle this plate was attached to.
  • Plate Text - The text printed on the plate, like D AB 123.
  • Font Size - The font size used when printing the plate.
  • Text Color - Foreground text color in hex format.
  • Background Color - Background color behind the plate text in hex format.
  • Permit Tier Suffix - The name of the permission tier (e.g., vip, police) used to apply this plate's styling.
  • Sign Local Position - The position of the plate sign relative to the vehicle in local X, Y, Z format.
  • Sign Local Rotation - The rotation of the plate sign in local Euler angles.
  • Sign Local Scale - The scale of the sign (used to resize signs appropriately for different vehicles).
  • Player Edited - Indicates whether a player manually painted over this plate (prevents it from being auto-reset).

Localization

JSON:
{
  "Error.NoPermission": "You do not have permission to use this command.",
  "Error.SignArtistMissing": "Sign Artist is not installed or loaded. Unable to print license text.",
  "Error.NoTargetVehicle": "Look directly at a supported vehicle and try again.",
  "Error.UnsupportedVehicle": "That entity isn't a supported vehicle.",
  "Error.PlateAlreadyAdded": "This vehicle already has a license plate.",
  "Error.EditBlocked": "This license plate is protected and cannot be edited.",
  "Error.AddBlockedOwned": "You cannot add a plate: this vehicle already has an owner.",
  "Error.Remove_NotOwner": "You can only remove plates from vehicles you own.",
  "Error.NoPlateAdded": "This vehicle doesn't have a license plate.",
  "Info.PlateApplied": "License plate applied: {0}",
  "Info.PlateRemoved": "License plate removed.",
  "Info.OwnershipClaimed": "You are now set as the owner of this vehicle."
}
Author
VisEntities
License duration
Unlimited
Price
9.99 USD
First release
Last update

Ratings

0.00 star(s) 0 reviews

Also by VisEntities

  • Offline Raid Shield
    Offline Raid Shield
    Protects player bases while they're offline with timed shields
  • Kill Awards
    Kill Awards
    Gives players rewards for every set number of kills
  • Armory
    Armory
    Gives players instant access to a box with unlimited supplies
Back
Top
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.
Cart