Logo of Mineclonia
Mikita Wiśniewski

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:

  1. mcl_serverplayer mod inside Mineclonia (enabled with the Enable support for the Mineclonia CSM or mcl_enable_csm setting), which doesn’t require a modified Luanti server to run;

  2. mcl_localplayer client mod distributed separately and enabled just like any other CSM; and

  3. halon’s Luanti fork that has the CSM API modifications necessary to run the mcl_localplayer CSM, 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:

  1. Installing a pre-compiled copy, like one in the Guix package luanti-halon; or

  2. Compiling 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.

  1. Toggle the Client modding option ON under Developer options (you have to check Show advanced settings first in order to see it); and

  2. 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:

  1. Go to Luanti’s About main menu page, click or tap on Open User Data Directory;

  2. In the opened directory, create or open a subdirectory called clientmods;

  3. Move or extract your mcl_localplayer clone or copy into clientmods, renaming it back to its technical name (e.g. mcl_localplayer-mastermcl_localplayer) if necessary;

  4. Inside clientmods, create or edit a file named mods.conf to say:

    # ... (if there are other lines here, keep them)
    load_mod_mcl_localplayer = true
    
  5. 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!