Back to mods
mdcdi1315's BML project artwork

CurseForge · Minecraft mod

mdcdi1315's BML

Another library for supporting my multi-platform projects!!! (And possibly other projects too!)

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which mdcdi1315's BML release should I use?

Updated 12 days ago
Latest stable file mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar
Game version 1.21.5
Loader Fabric

mdcdi1315's BML mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar targets 1.21.5 with Fabric. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.

Where it goes

Is mdcdi1315's BML required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release Fabric
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does mdcdi1315's BML mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar need?

mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar. Change the file and its required mods may change too.

All 1 required mods have matching files

Install Fabric API first. We found matching files for this game-version and loader setup.

Fabric API Needed by mdcdi1315's BML mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar
required
Matching file found Matched file: [1.21.5] Fabric API 0.128.2+1.21.5

We only count dependency files that match this setup. A file for another loader does not fill the gap.

Before you install it

Add mdcdi1315's BML without breaking your instance.

Built for mdcdi1315's BML mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar. It targets 1.21.5 with Fabric; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    Install Fabric API first. We found matching files for this game-version and loader setup.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside mdcdi1315_base_mods_lib-fabric-1.21.5-Stable-1.0.37.jar. It opens that exact file at the source.

About this project

What does mdcdi1315's BML add?

mdcdi1315's Base Mods Library (BML)

IMPORTANT: For Fabric, you will also need the Fabric API installed!!.

This is the project that provides my Base Mods Library mod that my multi-platform mods from now on will heavily use.

It is inspired by other great mods providing mod-loader agnostic support (Such as Balm or Architectury API, also great libraries too), but containing useful utilities and being much more complete than those mods (providing support for custom registries, data pack registries and others as well!!).

Of course, by just installing this without any mod that depends on this makes this mod useless.

Supported Platforms

The library supports Fabric, Forge and NeoForge for 1.21.1+ (Which all the depending mods should all work the same).

Technical details and background

This library, unlike other abstraction layer libraries, aims to get in the deepest of Minecraft to support as most mod-loader features as possible, while not breaking other mods in the process. Additionally, there is the need to indicate to the mod-loader what the mod itself does to load.

The final goal of this library is to be used by large-scale mods in order to support them in all the possible mod-loaders. Large mods, such as Create, are not easy to support them in different mod loaders due to the features provided by each mod-loader.

One additional point that makes Minecraft modding difficult in mod-loader agnostic cases is that the developer cannot modify the access to many Minecraft classes, as it is like modding in vanilla Minecraft. While the Mixin project covers some cases, it does not cover them all.

To solve these problems, the library provides thin wrappers (called Contracts) over mod-loader and Minecraft classes to achieve platform-agnosticness. These contracts are assigned a specific mod-loader implemented object during mod loading. Then, the contract is provided to the mod itself so that the mod can do whatever it needs to do with it.

Furthermore, the library treats mods as real entities in a Minecraft instance which do have a specified lifetime, that is, they do have features that does make development with them more natural. Additionally, helpers are defined around them for common tasks (i.e. retrieveing a known mod instance). As such, the library provides all those components to be even itself a very good mod-loader solution standing on its own (although it does not do that for pretty much obvious reasons).

Another problem that modern mods are being plagued with is configuration files. Over 5 libraries are currently existing only for this purpose (Let alone Forge and NeoForge that are also defining their own ones). As such, this library provides its own, very complete configuration system with a highly expected flexibility on what someone can do with it. On top of these, the library has built-in support for the well-known screen config library, the Cloth Config API. To even take it further, mod developers can also (why not?) register their own custom-made configuration screen. Finally, for the Fabric mod loader only, the library does also have built-in support for the ModMenu mod, so that mod developers can hook their configuration screens without taking any additional actions to their development environment.

Due to its nature, there is always the need in Minecraft to load or store data in a form or another, either if that is JSON or NBT or any other format that can be supported through the Mojang's serialization library. However, it utilizes adequate CPU and memory resources and it is not so easy to use, especially for mod developers that are now diving into the Minecraft's large complexity. For this reason, the library provides common and easy-to-use Codec implementations for many applications, with a look on performance.

While all these features are good, there is something that is missed out of the equation: The Java runtime itself. Java is being plagued by a LOT of issues, and mods do always write on-the-fly code which is itself very fragile and unsafe. While starting my modding experience, I noticed that many times mods do very fragile operations. Even Minecraft itself has this issue. As being a .NET developer as well, I quickly realized the importance of type safety. As such, the library provides a small subset of .NET API's which do embrace type safety and make the code more robust and less error-prone. Most of the library objects do embrace type safety and define exceptions for known code states through these API's.

All of these features, however, are not enough to make a library perfect. On the top of everything, the library tries to keep ABI compatibility with previous versions. If it is not possible, the component is appropriately deprecated or modified. For example one of the mods I do currently develop had been built against 1.0.11 of the library and as of 1.0.15, it still works the same!

Due to its broad support, however, the library is not error-free and bugs may be found while using it. Please report bugs as you find them!

Project description from CurseForge.

Pick your setup

mdcdi1315's BML by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

9 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

mdcdi1315's BML versions and loaders

50 of 50 releases match

Looking for an older file? The official CurseForge project page is in Resources.