Formato dei file
Un file per veicolo in vehicles/<tipo>/, in HJSON (o JSON). Il nome del file non conta: vale il campo id.
In HJSON una stringa senza virgolette arriva fino a fine riga. Per scrivere più campi su una riga usa il JSON con le virgolette (come fa l'editor): { "type": "skin", "xoffset": 0 }.
Campi principali
| Campo | Tipo | Obbl. | Descrizione |
|---|---|---|---|
id | testo | sì | Identificatore univoco. Compare nei permessi (ev.spawn.<id>) e nei comandi. |
displayName | testo | no | Nome mostrato nei menu. Se manca vale l'id. |
typeId | testo | sì | Tipo: cars, trucks, bikes, bicycles, boats, hovercrafts, helicopters, planes o tanks. Decide la fisica. Le bicycles (biciclette) non hanno mai carburante. |
enabled | booleano | no | Con false il modello non viene caricato (predefinito vero). |
category | testo | no | PASSENGER, CARGO, EMERGENCY o SPECIAL. Se manca vale vehicles-registry.yml o PASSENGER. |
price | numero | no | Prezzo finale pagato dal cliente. Con 0 il veicolo non compare nel negozio. |
trunkSize | intero | no | Slot del bagagliaio (multipli di 9, massimo 54; 0 = senza bagagliaio). |
health | numero | no | Salute del veicolo (predefinito 100). |
drivingMode | testo | no | WASD o HORSE: come si guida questo modello. Se manca vale driving.mode del config.yml. |
availableColors | lista | no | Colori scelti nel negozio: oggetti { red, green, blue } da 0 a 255. |
parts | lista | sì | Le parti del veicolo, vedi sotto. |
hitbox | oggetto | sì | length (Z), width (X), height (Y) in blocchi. |
fuel | oggetto | sì | typeId (GASOLINE, DIESEL, PETROL, KEROSENE o NONE per nessun serbatoio) e usage (consumo, vedi Carburante). Per le bicycles si può omettere insieme a fuelTank. |
Caratteristiche potenziabili
Quattro blocchi con la stessa forma: maxSpeed (km/h), fuelTank (litri), turningRadius e acceleration. Tutti obbligatori.
| Campo | Descrizione |
|---|---|
base | Valore di partenza (obbligatorio). |
upgradable | Se la caratteristica si può potenziare. |
max | Valore massimo raggiungibile. |
step | Incremento a ogni livello. Per il raggio di sterzo si può usare un valore negativo. |
stepCost | Costo di ogni livello, pagato dal giocatore con Vault. |
unit | Unità mostrata (testo libero). |
I livelli sono (max - base) / step, arrotondati per difetto. Esempio: base 60, max 90, step 10 danno 3 livelli.
Le parti
Ogni elemento di parts ha type, xoffset, yoffset, zoffset e rotationOffset, più i campi del suo tipo (vedi Creare un veicolo). Un tipo sconosciuto viene ignorato con un avviso nel log.
Blocchi facoltativi
| Campo | Descrizione |
|---|---|
physics | suspension (0-1, predefinito 0,6), steeringSmoothing (0-1, predefinito 0,5), liftoffSpeed (aerei; predefinito 55% della velocità massima). |
heightLimit | min e max: quota minima e massima per elicotteri e aerei. |
permissions | sitWithoutRidePermission: i passeggeri si siedono senza il permesso ride. |
animations | wheels (spin, steer) e doors (lista di part, axis, openAngle, durationTicks). Una porta è una skin con un name: il centro di rotazione del modello deve stare sulla cerniera. |
plate | Mostra la targa sul veicolo: enabled, xoffset, yoffset, zoffset, rotationOffset, scale. |
Altri campi (exhaust, horn, sounds, realisticSteering, drift, exitWhileMoving, gearbox) sono accettati e ignorati dal motore attuale.
Esempio minimo
{
"id": "offroad_black",
"displayName": "OffRoad nera",
"typeId": "cars",
"price": 5000,
"trunkSize": 9,
"availableColors": [ { "red": 255, "green": 255, "blue": 255 } ],
"parts": [
{ "type": "skin", "xoffset": 0, "yoffset": 0, "zoffset": 0, "rotationOffset": 0,
"item": { "material": "PAPER", "custommodeldata": 2400153 } },
{ "type": "seat", "xoffset": 0.4, "yoffset": -1.25, "zoffset": 0.3, "rotationOffset": 0, "steer": true }
],
"maxSpeed": { "base": 80, "upgradable": false, "max": 80, "step": 0, "stepCost": 0, "unit": "km/h" },
"fuelTank": { "base": 40, "upgradable": false, "max": 40, "step": 0, "stepCost": 0, "unit": "L" },
"turningRadius": { "base": 10, "upgradable": false, "max": 10, "step": 0, "stepCost": 0 },
"acceleration": { "base": 30, "upgradable": false, "max": 30, "step": 0, "stepCost": 0 },
"hitbox": { "length": 4.5, "width": 2, "height": 1.8 },
"fuel": { "typeId": "GASOLINE", "usage": 7 }
}