Jmt Mcmt

A multithreading mod for for Minecraft forge 1.15.2 and 1.16.x
Alternatives To Jmt Mcmt
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Minecraftforge6,362
3 days ago146otherJava
Modifications to the Minecraft base files to assist in compatibility between mods. New Discord: https://discord.minecraftforge.net/
Worldedit2,869
3 days ago159otherJava
🗺️ Minecraft map editor and mod
Iris2,841
a day ago212lgpl-3.0Java
A modern shaders mod for Minecraft compatible with existing OptiFine shader packs
Create2,230
5 days ago1,961mitJava
[Forge Mod] Building Tools and Aesthetic Technology
Dynmap1,914
4 days ago81apache-2.0Java
A set of Minecraft mods that provide a real time web-based map system for various Minecraft server implementations.
Catserver1,824
a day ago78lgpl-3.0Java
高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
Meteor Client1,576
4 days ago622gpl-3.0Java
Based Minecraft utility mod.
Fabric Carpet1,515
4 days ago291mitJava
Fabric Carpet
Opencomputers1,478
a month ago108otherScala
Home of the OpenComputers mod for Minecraft.
Scriptcraft1,473
3 years ago72mitJavaScript
Write Minecraft Plugins in JavaScript.
Alternatives To Jmt Mcmt
Select To Compare


Alternative Project Comparisons
Readme

Join our discord Issues Build Statis Curseforge Downloads Support Me Shenanagins

MCMT - Minecraft Multi-Threading Mod

This is a mod for Minecraft (forge) versions 1.15.2 and 1.16.x that enables multithreading

Currently it supports multithreading worlds, entities, tile entities, and environment ticks; under testing it has appeared to work with mods.

Under single player testing, there is a nominal drop of 20-50% in tps enabled vs disabled and little measurable difference between disabled and not installed. Note: this is a processing side (i.e. either internal or dedicated server) mod and is unlikely cause any increase in framerates.

Also note that this WILL allow vanilla clients to connect to a server with just this mod and forge installed.

IMPORTANT NOTICE

This fecks around with a LOT of minecraft's internal processing loops. If you are using this with any other mods; it may break. If you do something in vanilla, it might still break. It might break simply by you looking at it. It is almost impossible to test every possible interaction that CAN occur; all I can say is that it's worked in every case I've tested.

DO NOT, under any circumstances, report errors under this mod back to the mod author unless they have EXPLICITLY stated they are attempting to support it. Should mod devs wish to support this in any way, please yell so I can add registration apis.

TO MODDERS: This mod logs at warn level to the log saying it is installed every ~3 minutes and that the logs are invalid. It should be really obvious.

Installing

Simply install the jar like you normally would any other mod; it's that simple.

There are different jars for 1.15.2 and 1.16.1 as while exactly 1 method thing changed to break transferability, there is no way for me to deal with it in a single jar. So make sure you get the right one.

Getting involved

If you want to get involved with the project there are several things you can do:

  • There is a currently seperate version of this mod that is working on fabric support
  • We have a discord (link at top of github readme) that is where I'm going to try and organsie stuff
  • Create an issue with as much detail as possible (or comment on ones that are already there with more info)
  • Contribute code

How it works

The normal minecraft server loop is:

def tick() :
	for world in worlds:
		# random stuff
		for chunk in world.loadedchunks:
			chunk.tickEnvironment()
		# random stuff
		for entity in world.entities:
			entity.tick()
		for tileEntity in world.tileEntities:
			tileEntity.tick()

All this mod does is parallelise each of these loops these loops. The vast majority of the performance (at least in my testing) was gained from parallelising entites.

Each one of the above loops is paralelised, and each one is toggleable.

To make this parallelisation work, there are a lot of patches to the minecraft core code to avoid concurrent access to non-concurrent objects (curse ye fastutil) or to replace them with a working concurrent alternative.

Further, this mod adds it's own chunk caching into the mix, in order to provide paralellised access to chunks; this does mean it may consume some more memory though.

I'll attempt to add more documentation as time goes by on how this works on the gritty internal level.

Compiling

TODO: write properly

In summary:

Get a download of the repo:

git clone [the url of the page you are on now]

(Or download a zip and unzip it; it's up to you)

Open the directory containing it in a command line and run:

./gradlew build

The resulting jar will be present in ./build/libs/

TODO LIST

  • Parallelise more stuff
  • Hack the planet
  • Document everything so it's reproducable
Popular Minecraft Projects
Popular Mod Projects
Popular Games Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Mod
Minecraft
Jar
Concurrent
Multithreading
Minecraft Mod
Minecraft Forge