All Projects → jediminer543 → JMT-MCMT

jediminer543 / JMT-MCMT

Licence: BSD-2-Clause license
A multithreading mod for for Minecraft forge 1.15.2 and 1.16.x

Programming Languages

java
68154 projects - #9 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to JMT-MCMT

ForgeWurst
Wurst Client for Minecraft Forge.
Stars: ✭ 37 (-82.04%)
Mutual labels:  mod, minecraft-mod, forge-mod, minecraft-forge-mod
metal-chests
Better alternative to IronChests
Stars: ✭ 13 (-93.69%)
Mutual labels:  mod, minecraft-mod, minecraft-forge-mod
Tiny-Redstone
Forge mod for Minecraft that adds many tiny redstone pieces that you can put together on redstone panels to form tiny redstone circuits.
Stars: ✭ 20 (-90.29%)
Mutual labels:  mod, minecraft-mod, forge-mod
RubyMod
RubyMod is an open-source mod, which prioritizes sharing its code to help other modders learn.
Stars: ✭ 15 (-92.72%)
Mutual labels:  minecraft-mod, forge-mod, minecraft-forge-mod
Thistle
6502 based architecture for OpenComputers
Stars: ✭ 26 (-87.38%)
Mutual labels:  minecraft-mod, forge-mod, minecraft-forge-mod
Iodine
A Minecraft mod - server plugin pair that adds custom GUIs and overlays. No more inventory and chat menus!
Stars: ✭ 23 (-88.83%)
Mutual labels:  minecraft-mod, forge-mod, minecraft-forge-mod
3d-Skin-Layers
Renders the player skin layer in 3d
Stars: ✭ 63 (-69.42%)
Mutual labels:  mod, forge-mod, minecraft-forge-mod
ForgeModdingSkeleton
Skeletons for building Forge mods
Stars: ✭ 21 (-89.81%)
Mutual labels:  minecraft-mod, forge-mod, minecraft-forge-mod
PlusTiC
Minecraft mod for adding new tools to and integrating various mods with Tinkers Construct
Stars: ✭ 34 (-83.5%)
Mutual labels:  mod, minecraft-mod, forge-mod
MC-Prefab
A minecraft mod designed to provide ways of creating Pre-Fabricated(designed) buildings.
Stars: ✭ 21 (-89.81%)
Mutual labels:  mod, minecraft-mod, minecraft-forge-mod
GTplusplus
GT++ celebrates it's Bithday on September 3rd
Stars: ✭ 40 (-80.58%)
Mutual labels:  mod, minecraft-mod, forge-mod
JoJo-s-Bizarre-Survival
A mod that adds Stands from JoJo's Bizarre Adventure to Minecraft.
Stars: ✭ 20 (-90.29%)
Mutual labels:  mod, minecraft-mod, minecraft-forge-mod
NaturesCompass
A Minecraft mod that allows you to search for a biome's location anywhere in the world and view information about it.
Stars: ✭ 42 (-79.61%)
Mutual labels:  mod, minecraft-mod, forge-mod
Loot-Slash-Conquer-Pre1.14
An immersive, action-RPG mod based on Hack/Mine.
Stars: ✭ 17 (-91.75%)
Mutual labels:  mod, minecraft-mod, minecraft-forge-mod
crafting-dead
The Minecraft zombie survival mod.
Stars: ✭ 44 (-78.64%)
Mutual labels:  mod, minecraft-mod, forge-mod
HomeAssistantMC
Bridge Home Assistant with Minecraft
Stars: ✭ 24 (-88.35%)
Mutual labels:  minecraft-mod, forge-mod
Future-MC
Adds blocks from future versions.
Stars: ✭ 51 (-75.24%)
Mutual labels:  minecraft-mod, minecraft-forge-mod
FarmingForBlockheads
Minecraft Mod. Adds a seed market with a search bar and a scrolling grid.
Stars: ✭ 26 (-87.38%)
Mutual labels:  minecraft-mod, forge-mod
kibe
A miscellaneous mod for Minecraft that adds a bunch of random, and mostly unoriginal things.
Stars: ✭ 42 (-79.61%)
Mutual labels:  mod, minecraft-mod
Levels
A small, Minecraft mod focused around the aspect of weapon and armor leveling.
Stars: ✭ 24 (-88.35%)
Mutual labels:  mod, minecraft-mod

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].