Skip to content

Carbon is a self-updating, lightweight, intelligent mod loader for Rust utilizing the latest C# and Harmony for the best performance and stability possible, fully compatible with Oxide.

License

Notifications You must be signed in to change notification settings

CarbonCommunity/Carbon

Repository files navigation



GitHub NuGet


Carbon is a self-updating, lightweight, intelligent mod loader for Rust utilizing the latest C# and Harmony for the best performance and stability possible. Its robust framework and backward compatibility with Oxide plugins make it the ultimate replacement for those wanting better functionality and performance from their plugins!

Carbon has all the creature comforts you need to run your server, such as a permission system, user system, and so much more. Carbon is developed by experienced developers and server owners working to take the tedium out of hosting servers and make configuration and setup seamless with an integrated GUI in-game to manage everything!

📦 Download

Start using Carbon today, download the latest version from our releases page. We also provide a quick start script to get your server running in minutes, available for Windows and Linux.

📘 Documentation

For more in-depth Carbon documentation, from builds and deployment, check here. Find all currently available hooks here. If you are a developer take a look at our Wiki page.

❓ Support

Join our official Discord server for support, more frequent development info, discussions and future plans.

⚙️ Development

To help us and work with us on the project, or get started with Carbon's structure, follow this for understanding how it works. The project is split in various essential and mostly independent components, making it easier to organise and follow.

Getting Started

Upon cloning Carbon, all you need to execute is setup.bat to initialize the entire project and its dependencies.

Branches

The following branches are shared across all Component and Hook projects and synchronized accordingly with the main project (this one) and its branches.

  • develop branch is the primary base branch of Carbon. It's used to be merged into Rust beta branches as well as the production (live) branch.
    • Used against Rust public branch.
    • Public build, gets updated every time we commit changes to Carbon.
  • preview branch is usually synced up with develop and has experimental features that may or may not be brought into develop.
    • Used against Rust public branch.
    • Public build, gets manually triggered to get updated, not very often.
  • production branch is the primary (live) branch of Carbon and main release is built off of.
    • Used against Rust public branch or release on Rust wipe day.
    • Public build, gets updated twice times a month, excluding important hotfix patches.
  • rust_beta/staging is often times synced up with develop and has changes that might come to Rust release|public branch in a future update, which can contain mandatory changes to Carbon to address the Rust changes.
    • Used against Rust staging branch.
    • Public build, gets updated a few times a month. Usually only hooks get updated. Mainly merged from develop.
  • rust_beta/aux01 is often times synced up with rust_beta/staging and is minimally supported, just enough to be able to run Carbon on AUX01. This Rust branch is extremely unstable and contains things that may or may not ever be merged to the main version of Rust.
    • Used against Rust aux01 branch. The staging branch beta client is not always available.
    • Public build, gets updated a few times a month. Usually only hooks get updated.
  • rust_beta/aux02 is often times synced up with rust_beta/staging and is minimally supported, just enough to be able to run Carbon on AUX02. This Rust branch is extremely unstable and contains things that may or may not ever be merged to the main version of Rust.
    • Used against Rust aux02 branch. The staging branch beta client is not always available.
    • Public build, gets updated a few times a month. Usually only hooks get updated.

Components

  • Carbon.Preloader: Runtime preloader of dependencies and responsible assembly patching (publicising, injecting, etc.).
  • Carbon.Bootstrap: Initial Carbon execution and boot in the primary app-domain.
  • Carbon.Common: The very basis of Carbon, tools and extensions for overall use and functionality. Primarily a center piece for all dependant sub-components.
  • Carbon.SDK: Infrastructural and contractual features with no implementation. An easy way to identify and organise the structure of our systems.
  • Carbon.Modules: Carbon optional modules expanding functionality, enhanced QoL and tools.
  • Carbon.Compat: Previously known as Carbon Compatibility Loader written by Patrette (community member).
  • Carbon.Test: Integral implementation for automated testing rules and events.

Hooks

Carbon's hooks are managed in a separate location:

  • Carbon.Hooks.Base: Includes ground level dynamic and static patching instructions supplementing necessary events for Carbon's own runtime.
  • Carbon.Hooks.Community: Community curated patches and hooks.
  • Carbon.Hooks.Oxide: Oxide compatibility package, primarily utilized for internal use whenever going through the automatic patch code generation process.

Dynamic Hooks

Each Carbon version has its own protocol which relative to that, so does the hooks that get automatically updated upon boot. You can find the directory here.

Building

To locally build Carbon from scratch, execute the build.bat file, and find the results in the root of Carbon, under ./Release.

❤️ Sponsor

If you would like to sponsor the project the best way is to use Patreon.

We would like to thank everyone who sponsors us.