promotional bannermobile promotional banner

MTR: JCM

A Hong Kong metro decoration addon for the Minecraft Transit Railway Mod
Back to Files

[Forge 1.20.1] v2.3.0-prerelease.3

File nameJCM-forge-2.3.0-prerelease.3-1.20.1.jar
Uploaded
Nov 3, 2026
Downloads
54
Size
24.3 MB
Mod Loaders
ForgeNeoForge
File ID
9415945
Type
B
Beta
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:jcm-1316710:9415945")

NeoForge

implementation fg.deobf("curse.maven:jcm-1316710:9415945")

Learn more about Curse Maven

What's new

JCM v2.3.0-prerelease.3 for MTR 4.0.5 has been released!

This is a prerelease, focused on bug-fixes and preparation before the official release.

General

  • Fix PIDS Projector unable to save selected platforms.
  • Reduce performance impact when hiding vehicle display cube.
  • MTR Patch: Fix a source of memory leak in MTR 4 (Vehicle/Eyecandy model)

Technical

Scripting

  • Bump Rhino JS Engine to 1.9.2, see their changelog for details.
  • Add MTR.Data.getConnectedRails() to obtain a list of rails connected to either a path/rail node position.
  • Add MTR.Data.getVehicleMountDetail() to obtain the player's current car index & position in car.
  • Add MTR.Data.getLiftFloors() to obtain a list of stopping floors (With floor name/descriptions) from a TSC Lift.
  • Better error message for partial GraphicsTexture.upload().
  • TickableSoundInstance has been revised, hopefully making it more intuitive.
    • Add standalone TickableSoundInstance.play() and TickableSoundInstance.stop() method, removing the need for SoundManager. (Which doesn't manage the sound at all)
    • The previous setLoopable method is deprecated, since it will be set to false once SoundManager.stop is called, requiring the need to call setLoopable again.
      • Use setRepeatable instead, which preserves the state.
    • You may also use play(ctx) to associate your sound with a ScriptContext. This will auto stop your sound once the script context is disposed/errored, without the need for manual disposal.

Vehicle Scripting

  • Fix a bug where if the same RoutePlatform is assigned multiple times in a Route, the behaviour of data fetching will be errornous.

PIDS Scripting

  • Add pids.arrivals().length() to obtain the total arrivals available.
  • Breaking Changes (Not code-related) (PIDS Projector only)
    • This update "nerfed" the PIDS Projector such that it will skip rendering if out of the camera's bound (In-line with other PIDS), except:
      • If any of the configured X/Y/Z offset is >= 4m
      • If the configured scale is >= 4x
      • If explicitly configured in the PIDS Preset (Detailed below)
    • This is done to conserve performance, in particular vanilla text rendering (Text.create) can be very heavy for frame-rate. (This is not related to JS execution speed)
    • Please manually add a "outOfBound": true property for the relevant preset in joban_custom_resources.json to true if:
      • Your script requires constant background running.
      • You experience your PIDS disappearing midway. (Note: There's some leniency for the out-of-bound rules, so e.g. a 2x1 is acceptable)
      • You think the frame-rate impact of your PIDS is negligible. (e.g. AWT-drawn text)

Translations

Thanks to the following people who have contributed translations for this release! (No particular order):

  • happytbs (zh_cn)

Translations for JCM is now hosted on ZiYue's Weblate

Download:
You can download this release on Modrinth, CurseForge or GitHub