Centrifuge Modding Framework Centrifuge Versions Save

Cross-platform runtime mod loader and API for any Unity-based game. Supports Unity 5 and up!

3.2.2

2 years ago

Adds a global toggle settings key. Set CentrifugeEnabled to false to disable the loader.

API has not changed.

08-Aug-2022: Centrifuge Installer has been updated and now attempts to install a GSL if present in the definitions repository.

3.2.1

3 years ago

Fix a bug in the mod loader, Dependencies are meant to be optional... 😅 API stays 3.2.0 so no changes in that package.

3.2.0

3 years ago

Messenger system deprecation
In order to communicate between mods you should use Manager.GetMod(string modId)?.Instance to get the desired mod's entry point.

Messenger system will be removed in Centrifuge 4.0

Settings system can now typecast enums Apparently it's just me who needs that shit because nobody else reported that exception before.

GslEventFinished event Raised after all GSLs have been loaded.

ModInfo will now provide information on entry point type You can use IsMonoBehaviour boolean property to tweak your mods' behavior for whatever reason.

How do I install Centrifuge?

3.1.0

3 years ago

Release switching from Harmony 1.0 and moving to HarmonyX. Additionally from now on, two builds are going to be released - one for the legacy Unity Engine systems (pre-netstandard) and the other for modern game builds.

If you're a user - refer to the GSL/mod documentation on which version to use. If your game released back in 2015/2016 then you're probably good with the net35 version. A good example of netstandard release target is Risk of Rain 2.

If you're a developer - best course of action to avoid confusion is to attach a readme file describing which version of Centrifuge to download in order to run your mod.

You can also use the included installer to install Centrifuge for your game.

2.3.0

3 years ago

Update for both users and developers.

  • We're back to Json.Net. Heh.
  • Minor fixes, public API stays the same.

2.2.0

4 years ago

Update for both users and developers.

Changes:

  • Mods can now utilize an optional callback to load textures and whatnot with 100% certainty that it will not crash the game. The callback method name is defined by the mod entry point attribute and is set to Load by default.

Component versions: Bootstrap version: 2.1.0 TypeBridge version: 2.2.0 Reactor version: 2.1.0 API version: 2.1.0

2.1.0

4 years ago

This is a user-mode update only, no NuGet package this time. Improved stability and fixes for games with iffy dependencies like Newtonsoft.Json.

Bootstrap version: 2.1.0 TypeBridge version: 2.1.0 Reactor version: 2.0.3 API version: 2.0.2

2.0.2

4 years ago

Minor release fixing a catastrophic bug where a missing Logs directory would bring the whole system down.

2.0.0

4 years ago

This is a major update for Centrifuge.

Changes

▐ Logging system has been vastly improved. Breaking changes had to be introduced in order to make this happen.

▐ Unity log interceptor has been improved and displays its logs way better than before.

▐ Reactor.API got the new RuntimePatcher system. It allows mods and GSLs to easily run all the patches and GameCodeTranspiler classes without manually creating a new Harmony instance.

▐ GSLs are now able to get a reference to the IManager interface via Initialize(IManager) method, just like mods, it can be configured to run before or after the Awake method.

▐ Mod manifest now accepts the RequiredGSLs string array, allowing mod developers to specify hard dependencies against GSLs by providing the desired GSL IDs.

▐ A critical bug where Section and float types could not be loaded from the settings has been fixed.

▐ Many minor cosmetic and usability changes were introduced. See commit history for details on those.

Logging System - details on breaking changes

Initialization

// Before
public Log Log { get; } = new Log("mylogfile");

// After
public Log Log { get; } = LogManager.GetForCurrentAssembly();

Exception logging

// Before
Log.Exception(e, true); // Silent
Log.Exception(e, false); // Verbose

// After
Log.Exception(e);

Moreover, log configuration is now done at the time of initialization via call chaining. Visit docs on details for using the new Logging system.

1.2.1

4 years ago

This release makes Centrifuge work on Linux again.

No SDK changes - this time it's only related to Spindle, changes include mainly Linq replacement, target framework changed to .NET 3.5, and addition of platform awareness.