- Dependencies
- Sign Artist (Required)
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/plateand/unplatechat 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 inPermit Tiers. Replace{suffix}with the tier'sPermission Suffixfrom 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 theOwnerIDof 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/platecommand 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/plateon a vehicle that has no owner, the plugin will set the vehicle'sOwnerIDto 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 yourRegion CodeList.{MON}- Uses nearest monument short code (if nearby).{GRID}- Current map grid (e.g. J11).{LET1}to{LET6}- Random letters fromAllowed 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.,FF0000for 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 nearlaunch_site_1, the codeLSwill 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, likeD 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."
}