halon’s CSM¶
The experimental CSM (aka halon’s CSM/SSCSM, Mineclonia CSM mcl_localplayer/mcl_serverplayer CSM, etc) refers to optional code that enhances Mineclonia gameplay with Minecraft-like physics, movement, animations, and visuals (i.e. rain/snow particles). It consists of:
mcl_serverplayermod inside Mineclonia (enabled with the Enable support for the Mineclonia CSM ormcl_enable_csmsetting), which doesn’t require a modified Luanti server to run;mcl_localplayerclient mod distributed separately and enabled just like any other CSM; andhalon’s Luanti fork that has the CSM API modifications necessary to run the
mcl_localplayerCSM, and that only connecting clients need to use.
Communication between the server and the client in this case is done through modchannels. The CSM uses the facilities modded into the client engine to predict in-game events and coordinate with the server without jitter in a way that is not currently possible within the official Luanti client.
Clients with halon’s modifications and the mcl_localplayer CSM installed are referred to as CSM-capable, or simply CSM clients.
Features¶
No jitter when flying with an elytra, especially in multiplayer
No jitter when swimming; swimming direction follows your view direction (yaw and pitch: look up → swim up)
No jitter when riding on mobs/boats/minecarts/etc; player’s look direction is followed buttery smooth
Movement and jumping physics are similar to those in Minecraft (no sliding on block corners)
Improved mob and item physics (movement, jumping, swimming, etc) that are closer to Minecraft
Velocity and acceleration of flight in creative mode is increased and comparable to Minecraft
Player model animations are interpolated cleanly and feel very smooth
Unlit caves don’t look completely pitch-black
The Nether and the End aren’t pitch-black either; ambient lighting works in all dimensions
Night vision effect works similarly to Minecraft in unlit spaces
Eating and drinking animations more closely match Minecraft
Place (right-click) behavior on utility blocks never overlaps with shields/bows/etc (especially in offhand)
Weather particles (snow/rain) mix on cold/warm biome borders and look much better
Setup¶
1. halon’s Luanti & Mineclonia¶
First, obtain a Luanti client compiled with halon’s modified code. You can do this by:
Installing a pre-compiled copy, like one in the Guix package
luanti-halon; orCompiling it manually following the same build instructions as for regular Luanti.
The fork does not provide any gameplay improvements per se, but extends the CSM APIs so that mcl_localplayer can use them once installed.
It’s generally best to also download unstable Mineclonia from Git (via git clone or by downloading as an archive) as it’s more likely to support the newest CSM features, but stable Mineclonia from ContentDB should also work.
2. Configuring Luanti & Mineclonia¶
Two separate config entries (one for Luanti and one for Mineclonia) must be changed to allow mcl_localplayer to run once installed.
Toggle the Client modding option ON under Developer options (you have to check Show advanced settings first in order to see it); and
Toggle the Enable support for the Mineclonia CSM option ON under Experimental in Mineclonia’s settings (found under Content: Games).
The first option enables Luanti’s CSM APIs; the second enables the aforementioned mcl_serverplayer mod that will run on your singleplayer server. If you only plan to connect to multiplayer servers hosted by others, the second option can stay OFF as it doesn’t affect your client.
In minetest.conf, these changes amount to:
enable_client_modding = true
mcl_enable_csm = true
3. Installing mcl_localplayer¶
Download a copy of mcl_localplayer either directly from Git, or as an archive. From here, it’s as easy as following the Luanti Docs guide on Installing Client-Side Mods, but to re-iterate:
Go to Luanti’s About main menu page, click or tap on Open User Data Directory;
In the opened directory, create or open a subdirectory called
clientmods;Move or extract your
mcl_localplayerclone or copy intoclientmods, renaming it back to its technical name (e.g.mcl_localplayer-master→mcl_localplayer) if necessary;Inside
clientmods, create or edit a file namedmods.confto say:# ... (if there are other lines here, keep them) load_mod_mcl_localplayer = true
Double-check that your user data directory tree now looks something like this:
.minetest/ ├─ .../ ├─ clientmods/ │ ├─ mcl_localplayer/ │ │ ├─ ... │ ├─ mods.conf ├─ .../
After that, restart Luanti and the setup should be complete!