MapleWheels-BepInExExtensions icon

BepInExExtensions

Helper library for making writing ConfigFiles and profile support easy

Last updated 2 weeks ago
Total downloads 7203
Total rating 1 
Dependency string MapleWheels-BepInExExtensions-2.3.1
Dependants 10 other mods depend on this mod

This mod requires the following mods to function

bbepis-BepInExPack-5.3.1 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.3.1
README

Note: This project is not officially associated with BepInEx.

This BepInEx Extension library is a collection of various helper functionalities. As of now the current ready-to-use functions it includes are:

  • Configuration File Model

    > Simple, central place to make your configuration files and instantiate them. An up to date example can be found here: ExamplePlugin and ExampleModel

    > Designed to make BepInEx Configuration Files easy to write and instantiate.

    > Includes virtual methods and event hooks for easy customization of each variable in Pre and Post BepInEx.Configuration.ConfigFile.Bind() and for common ConfigFile events.

    > Migration/Profile Support: You can now change which ConfigFile a model is using live, including Migration hooks, with a simple, one-line command.

    > Allows you to create your own types/classes, just implement the interfaces and the rest will work.

Sample Usage:

public class ExampleModel : ConfigDataModel
{
    //Notes: 
    //You do not need to do every single different way here, it's just to show you the different ways it can be used. 
    //Pick the way that makes sense to you and just use that one.

    public ConfigData<float> ConfigOption1 = new ConfigData<float>()    //SIMPLE/Minimalist setup, using a field.
    {
        DefaultValue = 100f,
        DescriptionString = "Hello"
    };

    public ConfigData<float> ConfigOption2 { get; set; } = new ConfigData<float>()  
    {
        Key = "Config_Variable_Name",                                   //OPTIONAL: This will be set to &#x27;Config_Variable_Name&#x27; in the config file. If not set by you, the default &#x27;Key&#x27; name is the variable&#x27;s name.
        DefaultValue = 10f,                                             //REQUIRED: Default value.
        DescriptionString = "I&#x27;m running out of flavor text",           //OPTIONAL: Description.
        AcceptableValues = new AcceptableValueRange<float>(0f, 50f)     //OPTIONAL: Acceptable values.
    };

    public ConfigData<int> ConfigOption3;       //Nothing defined. This will be bound with the Type defaults.


    public override void SetDefaults()
    {
        this.SectionName = "Example Section";   //Define your section name here. 
    }
}

[BepInPlugin("dev.cdmtests", "CDM Tests", "0.0.0")]
public class ExamplePlugin : BaseUnityPlugin
{
    //NOTE: Before you read this, please take a look at the ExampleModel.cs file. The below will make a lot more sense if you do.
    ExampleModel model;

    void Awake()
    {
        //NOTE: Before you read this, please take a look at the ExampleModel.cs file. The below will make a lot more sense if you do.
        model = Config.BindModel<ExampleModel>(Logger); //Initialized and ready to use.

        Logger.LogInfo($"ExamplePlugin: model init completed.");
        Logger.LogInfo($"ExamplePlugin: model.ConfigOption1={ model.ConfigOption1.Value }");

        model.ConfigOption2.Value = 20f;                                                              
        Logger.LogInfo($"ExamplePlugin: model.ConfigOption2={ (float) model.ConfigOption2 }");    //Explicit & implicit conversion is supported.

        Logger.LogInfo($"ExamplePlugin: model.ConfigOption3={ (int) model.ConfigOption3 }");    //All defaults. Value = 0.

        //Want to change config files for profile support?
        ConfigFile profile2 = new ConfigFile(System.IO.Path.Combine(Paths.BepInExConfigPath, "ExamplePlugin", "profile2"), true);
        model.SetConfigFile(profile2);
    }
}

Available versions

Please note that the install buttons only work if you have compatible client software installed. Otherwise use the zip download links instead.

Upload date Version number Downloads Download link  
2021-1-2 2.3.1 1349 MapleWheels-BepInExExtensions-2.3.1.zip Install
2020-10-2 2.2.0 5518 MapleWheels-BepInExExtensions-2.2.0.zip Install
2020-9-27 2.0.0 141 MapleWheels-BepInExExtensions-2.0.0.zip Install
2020-9-10 1.1.0 195 MapleWheels-BepInExExtensions-1.1.0.zip Install