This project is a free and open-source Minecraft mod which optimizes the processing of multiple Dimensions, by assigning them independent threads. It works on both the client and server, and does not require the mod to be installed on both sides.
You can find downloads for DimThread on the GitHub releases page. The Fabric API can be found on Curseforge.
Install the Fabric Loader. Select Fabric for either the Minecraft launcher (client) or the dedicated server (server).
Once you have installed Fabric, move theDimThread.jar
and theFabric-API.jar
into the/mods
folder generated by Fabric.
/gamerule dimthreadActive <true/false>
enables/disables the mod
DimThread aims to conserve vanilla-parity in all points. Currently, some bugs related to data-pack has been confirmed. But there are no other deviations in behaviour from Mojangsserver.jar
. If you notice any, feel free to open an issue.
As stated above this is NOT the case. DimThread will always synchronize the dimensions it threads with each other, setting the overall MSPT to the slowest individual dimension.
Yes, but you will have to adjust the GameRule accordingly.
No, the mod can only assign one dimension to one thread.
Compatibility with JellySquids performance mods and Carpet will be ensured and issues concerning them are accepted. If you plan on using a different mod compatibility cannot be guaranteed, since not every author writes their mod threadsafe.
DimThread is licensed under MIT, a free and open-source license. For more information, please read the license file.
As this is an optimization mod, a bug is defined as:
- A deviation from vanilla behaviour
- Mod conflicts with other mods
- Terrible performance in a specific scenario
- Security issues
Please notice that crashing is not always considered a bug. If both vanilla and modded servers crash, it is work as intended. If vanilla servers crash, but modded servers do not, or vice versa, it is a bug.
Open an issue if you encounter any of the above. If you are unsure, feel free to open an issue anyway. In the issue, describe the bug, and how to reproduce it. A litemetic file is always appreciated.
Feature requests should also be opened as issues. Describe the feature you want to be added, and why you think it should be added. This kind of issue is much free-form. Say anything you want, but please be civil.
Before you fix a bug, please open an issue before you start working on it. This is to prevent duplicate work, and to make sure that the bug is actually a bug, this help us discuss and understand the issue better.
As for code, we have a few principles:
- Your code should work, it should not have unexpected behaviour and tests are always appreciated. This is the most important principle.
- Your code should run fast, at least the time complexity should be correct and better do some constant optimization in time-critical code.
- Your code should be readable, avoid functions with hundreds of lines, deep nesting blocks, misleading variable names, etc.
- Your code should be maintainable, do not copy-paste code, modularize your code, keep things simple, and leave comments when necessary.