Fixed modular cars being detected/saved as multiple individual modules instead of a single vehicle.
Engine parts are now saved per engine module and restored to their exact locations. They're no longer included under inventory items.
Removed console warning Couldn't find entity for this item when restoring modular cars, caused by killing modules before removing their items.
Updated UI label to show only functional engine parts (e.g., “Engine N”).
Radios on modular cars are now saved and restored, including the last tuned station.
Fuel is now saved as the actual fuel item, with support for custom name, skin id, and amount.
Tugboats (and other vehicles, if applicable) now keep their authorized players when stored and respawned.
Added support for saving and restoring storage containers attached to vehicles by players or other plugins (e.g. furnaces or workbenches placed on tugboats). Built-in vehicle sub-entities are ignored.
Virtual Garage now supports plugin-defined JSON “attachments” per vehicle. Plugins can store data (e.g., signs, turrets, storage containers, skins, locks, etc.) during save. This data is passed back on restore without being altered or parsed by Virtual Garage itself. (See Developer Hooks for implementation details.)
Added support for using an icon in the HUD button.
Added config option Require Line Of Sight To Vehicles (default true). Useful for servers running Karuza's custom vehicles where line of sight can be blocked by the vehicle itself.
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.