Skip to main content

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, so event.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​

EventgetVehicle() typeCancellableFires when…
VehiclePreSpawnEventStorageVehicle✅Just before a vehicle is spawned. Cancel to prevent it.
VehicleSpawnedEventSpawnedVehicle❌After a vehicle has spawned into the world.
VehicleDespawnEventSpawnedVehicle✅A vehicle despawns. getReason() → PLAYER, CHUNK_UNLOAD, API, SHUTDOWN or DESTROY.
VehicleGiveEventVehicleModel✅A vehicle is given to someone. Exposes getSource() (e.g. command or voucher), getGarage() and getCommandSender().
VehicleBuyEventVehicleModel✅A player buys a vehicle from the shop.
VehicleDeleteEventVehicle✅A vehicle is permanently removed (remove()).
VehicleDestroyEventSpawnedVehicle✅A vehicle is destroyed (health hits zero / crash).
VehicleCollisionEventSpawnedVehicle✅A vehicle collides with a block, entity or vehicle.
VehicleEnterEventSpawnedVehicle✅A player enters a seat.
VehicleLeaveEventDrivableVehicle✅A player leaves a vehicle.
VehicleClickEventDrivableVehicle✅A player right-clicks a vehicle part.
VehicleLockStateChangeEventDrivableVehicle✅A vehicle is locked or unlocked.
VehicleUpgradeEventDrivableVehicle✅A stat is upgraded. getType() → SPEED, TANK, ACCELERATION or TURNING.
VehicleRefuelEventSpawnedVehicle✅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, …).