Giter VIP home page Giter VIP logo

bannerlord.butrloader's Introduction

Bannerlord.BUTRLoader

CodeFactor Code Climate maintainability
GitHub Workflow Status

Extends the native launcher.
Adds support for community used mod metadata that fixes issues with mod load order sorting! It will sort correctly Harmony, UIExtender, ButterLib and MCM.

Features

BUTRLoader consists of two modules - BUTRLoader itself and LauncherEx.

BUTRLoader expands the game launch with the following features:

  • Interceptor - BUTRLoader checks if the is a class with a custom attribute named BUTRLoaderInterceptorAttribute. If it's found it checks if there are the following signatures:
    • void OnInitializeSubModulesPrefix() - will execute just before the game starts to initialize the SubModules. This gives us the ability to add SubModules declared in other programming languages like Python and Lua
    • void OnLoadSubModulesPostfix() - will execute just after all SubModules were initialized
  • LoadReferencesOnLoad - gives the ability to add that will disable explicit dependency load. Will be useful after switch to .NET Core runtime.

LauncherEx is the UI module. It expands the native launcher with the following features:

  • Option Screen - provides various options that will be listed below.
  • Extended Sorting - the launcher now respects the community metadata when sorting. Available in Options. Enabled by default.
  • Scrollbar - the launcher before e1.7.2 didn't had a way to scroll without the mouse wheel. We added a scrollbar to fix this.
  • Enable/Disable All Mods Checkbox - added the ability to enable and disable all mods with one click.
  • Expanded Dependencies Hint - added our community metadata to be displayed in the Hints added in e1.7.0.
  • Issue Hint System - the launcher displays an arrow that when expanded, will display why a mod can't be enabled. The issue can be a wrong dependency module version, binary incompatibility with the current game version
  • Compact Module List - allows a more compact display of the Module List. Available in Options. Disabled by default.
  • Fix Common Issues - the launcher checks if 0Harmony.dll is present in the main /bin folder. If there is one, will prompt the user whether t delete it.
  • File Unblocking - the launcher will unblock the .dll's if they are locked itself. Available in Options. Enabled by default.
  • Reset Module List - will forcefully reset the module list and force the raw loaded list to be sorted. Available in Options. Will be disabled after restart.
  • Binary Compatibility Check - the launcher will check whether the are ABI issues in the module with the current game version. ABI issues mean the module won't work in the game and will need a new updated version.
  • Import/Export Mod List - provides a way to export and import Mod Lists with the correct load order and module versions. If a module version is incorrect, with highlight that.

Installation

Download the file and extract it's contents into the game's root folder (e.g. C:\Program Files (x86)\Steam\steamapps\common\Mount & Blade II Bannerlord).

Troubleshooting

Unblocking DLL's

You may need to right click on Bannerlord.BUTRLoader.dll file, click Properties, and click Unblock if you extracted the zip file with Windows Explorer or other programs that try to secure extracted files.

For Modders

BUTRLoader adds support for a new tag DependedModuleMetadatas that allows you to better define your load order, see the example below

<DependedModuleMetadatas>
  <!-- order: [ "LoadBeforeThis", "LoadAfterThis" ] -->
  <!-- optional: [ "true", "false" ] -->
  <!-- version: [ "e1.0.0.0", "e1.*", "e1.0.*", "e1.0.0.*" ] -->
  <!-- incompatible: [ "true", "false" ] -->

  <DependedModuleMetadata id="Bannerlord.Harmony" order="LoadBeforeThis" />

  <DependedModuleMetadata id="Native" order="LoadAfterThis" version="e1.4.3.*" />
  <DependedModuleMetadata id="SandBoxCore" order="LoadAfterThis" version="e1.5.*" />
  <DependedModuleMetadata id="Sandbox" order="LoadAfterThis" />
  <DependedModuleMetadata id="StoryMode" order="LoadAfterThis" version="e1.*" optional="true" />
  <DependedModuleMetadata id="CustomBattle" order="LoadAfterThis" optional="true" />

  <DependedModuleMetadata id="MyCustomMod" incompatible="true" />
</DependedModuleMetadatas>

bannerlord.butrloader's People

Contributors

aragas avatar dependabot[bot] avatar github-actions[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.