Barotrauma

Barotrauma

Not enough ratings
Mod Loader WIP
By Cain
Guide to working with the Mod Loader application
   
Award
Favorite
Favorited
Unfavorite
Introduction
What is Mod Loader?
Mod Loader is a utility that will help you organize your mods. It shows how mods interact with each other, which ones overwrite others, and what dependencies are tied to. If you've ever tried to figure out what should go next, and why some mods conflict with others, this might help you.

Link to the project on GitHub[github.com]
Link to download the latest release[github.com]

Why do you need Mod Loader?
Mod Loader tries to solve the problem of lack of flexibility when working with a large collection of mods by analyzing installed mods and showing which ones overwrite what exactly. Now, if suddenly something is wrong, you can easily figure out which mods need to be re-arranged.

Main Features
  • Conflict Check: You can see which mods are overwriting which content of another mod.
  • Sorting by Dependencies: automatically sets the loading order, this automation takes into account only external dependencies. The overwriting order is at your discretion
  • Additional functions for Barotrauma: automatic installation of Lua and skipping the splash screen when starting the game.
For players
How do I run this marvel of engineering?

Or you go to the archive for your OS from here[github.com], unpack it to any convenient place and enjoy. Please note that this executable file can make your antivirus react to it. If you do not trust executable files - download the repository, look at the code and run it yourself.

OR! Or download and run it manually

First, you'll need to install the following:

Now it's easy. Open the console in a folder convenient for you
win + r for Windows users, for Linux they already know

and clone the repository with the command:

Next, go to the project folder and run:
  • For Windows:
    run_app.bat
  • For Linux:
    run_app.sh
For Linux users - do not forget about chmod +x before running

That's it! After each update using git pull, while in the application folder, it is advisable to delete the .venv folder so that all dependencies are updated correctly.
For modders
I'm a modder, why should I care?
The most direct! It will take you less effort to tell what works, what doesn't, what conflicts, and what is an optional dependency.

You can add your mod to the Mod Loader database without even merging anything into the main repository. Specifically - you need to add the metadata.xml file to the root of the modification
You can see an example in the fork of neurotrauma[github.com]

That is, the structure will be something like this:
  • mod/
    • filelist.xml
    • metadata.xml
    • dir_1/...
    • dir_2/...
    • dir_in_dir/
      • file_3.some
      • ...
    • file_1.some_extension
    • file_2.some
    • ...

What if my mod is already listed in the internal library?
If your mod is already listed in the internal library, you can still create a metadata.xml file. In this case, the information in your metadata file will take precedence. If you want, you can create a pull request for your mod to be removed from the internal library on git (though this is probably not necessary).

What can I specify in metadata.xml ?
In short - look here[github.com]
More examples can be found here[github.com], but I don't recommend looking in auto_pars, it's scary there.
xml structure simplified
<?xml version="1.0" encoding="UTF-8"?> <metadata> <meta> <author>Your Steam name here!</author> <!-- Unique mod identifier; format — YourNameWithoutSpaces.ModName --> <id>AuthorsName.SomeUniqueId</id> <!-- License, if needed (this element can be removed) --> <license>License type here</license> <!-- Warning message displayed in the program, Essentially a comment from the developer to his package. For example, WIP or something else --> <!-- <warning>Make sure compatible mods are installed.</warning> --> <!-- Error message displayed in the program. Similar to warning, but highlighted in red. For example, if you don't want to work on a mod anymore, but want to mark it as obsolete and broken --> <!-- <error>Mod loading failed due to incompatibility.</error> --> </meta> <dependencies> <!-- DO NOT SPECIFY ID IF YOU ARE NOT SURE, JUST SKIP --> <!-- Patch: Mods that should be loaded AFTER your mod. Your mod will overwrite their contents if there is a conflict. FIELDS: name - Required (mod name in filelist.xml) steamID - Optional (unique Steam ID) ID - Optional (unique mod ID in AuthorName.ModID format) --> <patch name="Mod name in filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Requirement: Mods that must be loaded BEFORE your mod, as they contain necessary components required by your mod. FIELDS: name - Required (mod name in filelist.xml) steamID - Optional (unique Steam ID) ID - Optional (unique mod ID in AuthorName.ModID format) --> <requirement name="Mod name in filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Optional Requirement: Mods that are compatible with your mod, but are not required. These mods may improve functionality if installed, but are not required. FIELDS: name - Required (mod name in filelist.xml) steamID - Optional (unique Steam ID) ID - Optional (unique mod ID in AuthorName.ModID format) --> <optionalRequirement name="Mod name in filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Optional Patch: Similar to an optional requirement, but will be overwritten by your mod if installed. These mods can provide additional features without affecting the core functionality of your mod. FIELDS: name - Required (mod name in filelist.xml) steamID - Optional (unique Steam ID) ID - Optional (unique mod ID in AuthorName.ModID format) --> <optionalPatch name="Mod name in filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" /> <!-- Conflict: Mods that are incompatible with your mod. If installed, they will cause a warning or error to the user. The optional message and level attributes allow you to specify details of the conflict. FIELDS: name - Required (name of the conflicting mod in filelist.xml) steamID - Optional (unique Steam ID) ID - Optional (unique mod ID in AuthorName.ModID format) message - Optional, default="Incompatible modifications" level - Optional, can be "warning" or "error", default="error" --> <conflict name="Mod name in filelist.xml" steamID="123" ID="AuthorsName.SomeUniqueId" message="Conflict detected" level="warning" /> </dependencies> </metadata>
FAQ
Here I am just predicting questions that may arise
Q: Is MacOS supported?
A: In fact, I did not make MacOS support. I do not have it, and sawing without bug fixes is so-so. If you are on a Mac, you can help by contributing to the repository

Q: Why is this?
A: I do not like the current mod management system. I want it to be better. Maybe later there will be a purely XML option to disable some parts of modifications if certain mods are present

Q: I have a problem with X, what should I do?
A: Contact me in discord (I am on the official server [barotauma|Luatrauma|Neurotrauma Fork], nickname - cainheretic) or create an issue on GitHub[github.com]

I will also add answers to questions if there are frequent similar questions
1 Comments
The Tea Time Courier Apr 25 @ 7:16pm 
whats the deal with airline food