Events
VehiclesPlus fires standard Bukkit events, so you listen to them exactly like any other event — a class implementing Listener with @EventHandler methods, registered via getServer().getPluginManager().registerEvents(...).
- Every vehicle event exposes
getVehicle(), typed to the most specific vehicle it can be (SpawnedVehicle,DrivableVehicle,VehicleModel, …). - Cancellable events implement
Cancellable, soevent.setCancelled(true)stops the action.
public class MyListener implements Listener {
@EventHandler
public void onSpawn(VehicleSpawnedEvent event) {
SpawnedVehicle vehicle = event.getVehicle();
Bukkit.getLogger().info("A " + vehicle.getVehicleModel().getId() + " was spawned!");
}
}
getServer().getPluginManager().registerEvents(new MyListener(), this);
All events
| Event | getVehicle() type | Cancellable | Fires when… |
|---|---|---|---|
VehiclePreSpawnEvent | StorageVehicle | ✅ | Just before a vehicle is spawned. Cancel to prevent it. |
VehicleSpawnedEvent | SpawnedVehicle | ❌ | After a vehicle has spawned into the world. |
VehicleDespawnEvent | SpawnedVehicle | ✅ | A vehicle despawns. getReason() → PLAYER, CHUNK_UNLOAD, API, SHUTDOWN or DESTROY. |
VehicleGiveEvent | VehicleModel | ✅ | A vehicle is given to someone. Exposes getSource() (e.g. command or voucher), getGarage() and getCommandSender(). |
VehicleBuyEvent | VehicleModel | ✅ | A player buys a vehicle from the shop. |
VehicleDeleteEvent | Vehicle | ✅ | A vehicle is permanently removed (remove()). |
VehicleDestroyEvent | SpawnedVehicle | ✅ | A vehicle is destroyed (health hits zero / crash). |
VehicleCollisionEvent | SpawnedVehicle | ✅ | A vehicle collides with a block, entity or vehicle. |
VehicleEnterEvent | SpawnedVehicle | ✅ | A player enters a seat. |
VehicleLeaveEvent | DrivableVehicle | ✅ | A player leaves a vehicle. |
VehicleClickEvent | DrivableVehicle | ✅ | A player right-clicks a vehicle part. |
VehicleLockStateChangeEvent | DrivableVehicle | ✅ | A vehicle is locked or unlocked. |
VehicleUpgradeEvent | DrivableVehicle | ✅ | A stat is upgraded. getType() → SPEED, TANK, ACCELERATION or TURNING. |
VehicleRefuelEvent | SpawnedVehicle | ✅ | A vehicle is refueled. |
KeyPressEvent | — | ❌ | A driver sends movement input (each tick). Exposes getPlayer() and getInput(). |
GarageOpenEvent | — | ✅ | A garage menu is opened. |
Examples
Stop a specific model from being bought:
@EventHandler
public void onBuy(VehicleBuyEvent event) {
if (event.getVehicle().getId().equals("ExampleTank")) {
event.setCancelled(true);
}
}
Don't let players despawn vehicles by hand (but allow chunk unloads, shutdown, etc.):
@EventHandler
public void onDespawn(VehicleDespawnEvent event) {
if (event.getReason() == VehicleDespawnEvent.DespawnReason.PLAYER) {
event.setCancelled(true);
}
}
React when a vehicle is given via a voucher:
@EventHandler
public void onGive(VehicleGiveEvent event) {
if (event.getSource() == VehicleGiveEvent.Source.VOUCHER) {
Bukkit.getLogger().info("Voucher redeemed for " + event.getVehicle().getId());
}
}
note
Cancelling a *PreSpawn*, *Give*, *Buy* or *Delete* event is the clean way to gate VehiclesPlus actions behind your own plugin's logic (regions, claims, custom economy, cooldowns, …).