Hook for vehicle lift
Are there any hooks that get called when modular cars go up or down on vehicle lifts?
No, there are no modular hooks yet.
On my car storage plugin using the lift to store cars i use void OnEntityDistanceCheck(BaseEntity entity, BasePlayer player, uint rpcId, string debugName, float maximumDistance)   to get when they use thelift. then you can use lootend to detect when they exit thelift.
aka up/down
Can you provide more info about exactly what you are trying to do? Curious why you need to detect specifically when the lift goes up or down. Likely you just care about a player opening the loot panel which you can do with void OnLootEntity(BasePlayer player, ModularCarGarage carLift), but this will run for each player if multiple players start looting it. If you really want to know when the lift goes up or down, you can infer it by following the same rules as the game. For instance, when a player starts looting it, you can check if they are the only one looting it, then assume the lift is going up. You would also have to account for the case where the lift stays up when the player stops looting if it doesn't have a vehicle/cockpit.
Hi, thank you for your suggestions, I was looking for a way to remove the engine parts when the car goes up on the lift so that players are able to move/add/remove modules from the chassis, since I'm adding the parts OnEntitySpawned and locking the engine storage.
I ended up using OnItemRemovedFromContainer
I recently added a OnVehicleModuleMove(module) hook that will be available in a future Oxide update. It's called automatically once per second per module for each car that is on a lift, when the game normally tries to refresh the locked status of a module, as well as when items enter/exit storage modules. Intercepting it will allow you to override the default behavior for determining whether a module should be locked. This will allow you to make engine or storage modules even if they have items.
The hook I mentioned didnt get added as planned. We may still add ones called OnVehicleModuleLock and OnVehicleModuleUnlock to allow you to override whether a vehicle module item is locked.

However, I recently discovered these are not required as you can use the CanMoveItem hook to allow the item to move even if it's "locked". Heres a rough sketch of how you would use it for your use case.
  1. Confirm that the item is being moved from a vehicle module inventory and is an engine module. You can check item.parent.entityOwner is a ModularCar.
  2. Find the associated vehicle module on the car (there's a method for this), and clear the engine container.
  3. Return true to allow the move.
  4. Add engine parts when a vehicle module spawns.
The only downside to this is that it's not obvious to players that they can move the engine module, unless the locking related hooks are added and used.