Skip to content

About

A lightweight, ultra-fast C# framework for FiveM development. Featuring an advanced Event Dispatcher, Singleton Driver Registry, and full xUnit test coverage for stable, scalable, and crash-free multiplayer architecture.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Contributors Forks Stargazers Issues MIT License


image

Aero Framework

A high-performance C# server-side development framework for FiveM.
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Plugin Development Guide
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

Aero Framework is a high-performance C# development framework for FiveM server resources, built by Vertex Tools. Designed to overcome standard C# FiveM limitations, it features a dedicated, low-overhead event dispatcher system, dynamic plugin loading, and robust abstraction drivers.

Key Features:

  • Circular-Buffer Event Dispatcher: Optimized for processing native and custom events with high stability and extremely low memory footprint.
  • Dynamic Plugin Loader: Scan, load, and manage assemblies dynamically from your plugins/ directory. Compatible framework verification prevents outdated plugins from loading.
  • Driver Abstraction System: Ready-to-use abstract interfaces for Databases, Players, Vehicles, and Objects.
  • Zero-Touch Registration: Automatically scans and registers commands (ICommand) and events (IEvent) within your custom plugin assemblies upon loading.

(back to top)

Built With

(back to top)

Getting Started

To get a local copy up and running, follow these steps.

Prerequisites

  • .NET SDK 4.7.2
  • Rider, Visual Studio, or VS Code
  • A FiveM Server environment

Automatic Installation

  1. From the release install the installer from github.
  2. Restart the server and enjoy the framework!

Manual Installation

  1. Install all DLL's from the release on github.
  2. Put all the DLL's in the resource folder in the FiveM server.
  3. Build the manifest.lua to link everything.
  4. Restart the server and enjoy the framework!

(back to top)

Plugin Development Guide

Aero Framework makes it extremely simple to extend your server functionality with modular plugins. To create a plugin, reference Aero.API in your project.

1. Creating a Plugin

Create a class that inherits from Plugin<TConfig>, where TConfig represents your configuration class.

using Aero.API;
using Aero.API.Interfaces;

public class MyPluginConfig : IConfig
{
    public bool Enabled { get; set; } = true;
    public string GreetingMessage { get; set; } = "Hello from Aero Plugin!";
}

public class MyPlugin : Plugin<MyPluginConfig>
{
    public override string Name => "MyPlugin";
    public override string Author => "Vertex Tools";
    public override string Description => "An example plugin demonstrating Aero.Framework features.";
    public override System.Version Version => new System.Version(1, 0, 0);
    public override System.Version RequiredFramework => new System.Version(1, 0, 0);

    // This property is automatically populated by Aero Framework
    public static MyPluginConfig Config { get; set; }

    public override void OnLoad()
    {
        Log.Info($"{Name} Loaded! Greeting: {Config.GreetingMessage}");
    }

    public override void OnUnload()
    {
        Log.Warn($"{Name} Unloaded.");
    }
}

2. Configuration Management

Plugin configurations are automatically written and read from the plugin's folder using standard YAML. When your plugin is initialized, a config file named <PluginName>.yml will be generated/loaded automatically.

3. Registering Commands

Any class inside your plugin assembly implementing the ICommand interface will be automatically detected and registered to FiveM's command list when the plugin loads.

using Aero.API.Interfaces;
using Aero.API.Features;

public class HelloCommand : ICommand
{
    public string Name => "hello";
    public string Description => "Greets the server.";
    public string Permission => "user";

    public void Execute(int source, string[] args)
    {
        Log.Success($"Hello command executed by source player {source}!");
    }
}

4. Registering Events

The framework automatically scans and registers event handlers using the [AeroEvent] attribute. You don't need to manually implement interfaces or register listeners.

using Aero.Events;
using Aero.API.Events.Network;
using Aero.API.Features;

public class PlayerEventHandler
{
    // 🏷️ The framework will automatically detect this attribute on startup
    [AeroEvent(typeof(PlayerEnteringEvent))]
    public void OnPlayerEntering(PlayerEnteringEvent e)
    {
        // 🎨 Your color-coded logs work natively here!
        Log.Success($"Player {e.PlayerName} (ID: {e.PlayerId}) is entering the server! ^2✓");
    }
}

5. Using Drivers

Aero Framework features a centralized driver manager. You can retrieve driver instances to safely interact with core services like Databases, Players, Vehicles, and Objects.

using Aero.Drivers.Registry;
using Aero.API.Interfaces;

// Accessing the Database Driver
var db = DriverRegistry.Singleton.Get<IDataBaseDriver>();
await db.ExecuteAsync("INSERT INTO audit_logs (message) VALUES (@msg)", new { msg = "Server start" });

// Accessing the Player Driver
var playerDriver = DriverRegistry.Singleton.Get<IPlayerDriver>();

Full documentation in https://aeroframework.net/docs

(back to top)

Roadmap

  • Circular Buffer Event Dispatcher
  • YAML Injected Plugin Configurations
  • Command Permission Middleware
  • Hot Reloading for Plugins
  • Direct Database ORM integration

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Vertex Tools - @Vertex-Tools

Project Link: https://github.com/Vertex-Tools/Aero.Framework

(back to top)

Acknowledgments

  • Cfx - CitizenFX.Core.Server: Thanks for its native API and communication FiveM - C#
  • Jnewkirk, Bradwilson - xunitv3: Thanks for their system to test all our systems in Aero.Tests
  • Antoine Aubry - YamlDotNet: Thanks for building our ConfigBuilder which is essential for our core
  • Microsoft - System: C# Native System
  • Vertex Tools - Avian: Essential for our Event system
  • Vertex Tools - pyro.Avian: Useful for packaging all the dependencies in one dll

About

A lightweight, ultra-fast C# framework for FiveM development. Featuring an advanced Event Dispatcher, Singleton Driver Registry, and full xUnit test coverage for stable, scalable, and crash-free multiplayer architecture.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages