Abstractium
An api to aid abstracting interactions between mod and dependency.
About this Mod
Summary
Abstractium is a moderately simple mod that provides tools to abstract interactive code between a mod and
given dependency.
What does this do?
Abstractium's branch looks a little like this:
- Abstractium = "Api" + "Minecraft Abstraction";
- Api = "Events" + "Abstraction Tools";
Events function similarly to basically every other event system out there with the small
difference that it also has concurrent capabilities and string-based identification systems.
It is used to hold the main "function" of a mixin that potentially might not work in another
update.
The Abstraction Tools provide an easy way to essentially implement an interface of pre-made calls a.k.a
"Abstraction Mappings". The different versions of abstraction mappings are registered through an entrypoint.
The AbstractionHandler.java class handles all the versioning automatically. The abstraction mappings also
allow for "sub-abstraction", where a subset of specific calls can reside. Here is an example hierarchy:
- AbstractClientCalls{
- AbstractRenderCalls{
- AbstractWorldRenderCalls{
- AbstractBlockRenderCalls{},
- AbstractEntityRenderCalls{}
- },
- AbstractGuiRenderCalls{}
- AbstractWorldRenderCalls{
- },
- AbstractSoundCalls{
- AbstractEntitySoundCalls{},
- AbstractBlockSoundCalls{}
- }
- AbstractRenderCalls{
- }
The Minecraft Abstraction puts all this together to provide an inbuilt abstraction layer for other mods
to use. Please keep in mind that this is far from finished. There is a bare minimum to get my mods ported to
it but that's about it. If you feel like contributing, just keep in mind that I'll only accept abstractions
that work for all inbuilt versions this api supports.
How do I use this?
Well if you do want to use my inbuilt minecraft abstraction, it's actually really easy! Just add my mod
to your dependency list (There will be documentation for that shortly) and accessAbstractiumClient#CLIENT_ABSTRACTION_HANDLER or AbstractiumCommon#COMMON_ABSTRACTION_HANDLER.
If you want to make your own abstraction handling, well that's quite a bit more complicated but you will
need to follow how it's done in net.feltmc.abstractium.library.
There will be a wiki some time in the future.
Development Roadmap
For now this has rather limited goals. Support fabric 1.18.2 to the latest version. In the future
there are possibilities not plans for the following:
- Code Wrapper: This would allow mods from different versions running on newer ones without modifications.
- Legacy Support: Supporting versions below 1.18.2.
- Forge Abstraction: Abstracting and wrapping forge code (contingent upon another PatchworkMC)
Why was this made?
I made this api because of how much mojang loves to refactor their own code. I know mod devs alike can agree
with me that mojang's refactors make modding so tedious and demotivating. It forces us devs to focus less on
improving the mod and more on rewriting code to get it working on the latest versions. Then, if someone wants
to maintain multiple versions, multiple branches have to be updated with patches/improvements which is a
logistical nightmare. For the users it causes many, many mods to be split amongst different versions. This
stops people from playing all their favourite mods in one modpack, on the latest versions. This frustration
has been productively redirected to an ambitious api to finally nuke these irritating nuisances out of existence.
Available Versions
How to Install Abstractium on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set fabric Loader
In the panel under "Egg", select the fabric loader and matching Minecraft version (1.20.1).
Install Mod
Open the mod browser in the dashboard and search for "Abstractium". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
1.20.1, 1.20, 1.19.4 (+5 more)
Server-side
✓ RequiredRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
Abstractium server crashes on startup – what to do?
Most common cause: wrong fabric version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (1.20.1). You can switch loaders with one click in the panel.
Is Abstractium compatible with fabric and quilt?
Abstractium officially supports fabric, quilt for Minecraft 1.20.1, 1.20, 1.19.4. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with Abstractium – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Abstractium consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install Abstractium with just one click on your server.