All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Joban Client Mod

Joban Client Mod

by AmberFrost • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

This mod is an addon to the Minecraft Transit Railway 4.0 mod that adds various decoration blocks and scripting support.

IMPORTANT: For MTR 4, use JCM v2.x.x. For MTR 3, use JCM v1.2.2

Joban Client Mod

This is an addon based on Minecraft Transit Railway Mod, adding various blocks from the Hong Kong MTR and utility blocks that will greatly improve your world. Some of the blocks this mod adds including Static Signal Light, Fare Saver machine, Railway Vision PIDS and other decoration blocks to help you build your very own railway system!

Supports Minecraft Forge/Fabric modloader, of the following version:

  • 1.16.5
  • 1.17.1
  • 1.18.2
  • 1.19.2
  • 1.19.4
  • 1.20.1
  • 1.20.4

FAQ & Support

Why does my game crash?

There's a variety of reasons, one of the main reasons is that you're using the wrong version of the MTR Mod.
Version labeled as Beta should only be used with a preview version of MTR Mod in their Discord.
If you're unable to download the preview version of MTR, please download the versions labeled as Release.

The game still crashes / I want to report a bug / I want to give suggestions

Most of the support are done in our Discord for easier communication, please join our Discord Server here.

I want to know more!

We have documented most parts of the mod in our wiki.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.4
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.19.2
Forge
13h ago 1
1.18.2
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.20.4
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Forge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.17.1
Forge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.18.2
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.20.4
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.18.2
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.18.2
Forge
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Forge
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.16.5
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.16.5
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.16.5
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.2
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.20.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.20.1
Forge Neoforge
13h ago 1
1.19.2
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Forge
13h ago 1
1.19.4
Fabric
13h ago 1
1.20.4
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.4
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.20.1
Fabric Forge Neoforge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.20.4
Forge
13h ago 1
1.20.1
Forge
13h ago 1
1.19.4
Forge
13h ago 1
1.19.2
Forge
13h ago 1
1.18.2
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.16.5
Forge
13h ago 1
1.20.4
Fabric
13h ago 1
1.20.1
Fabric
13h ago 1
1.19.4
Fabric
13h ago 1
1.19.2
Fabric
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Fabric
13h ago 1
1.16.5
Fabric
13h ago 1
1.19.3
Fabric Forge Quilt
13h ago 1
1.16.5
Fabric Forge Quilt
13h ago 1
1.17.1
Fabric Forge Quilt
13h ago 1
1.18.2
Fabric Forge Quilt
13h ago 1
1.19.2
Fabric Forge Quilt
13h ago 1
1.19.4
Fabric Forge Quilt
13h ago 1
1.20.x
Fabric Forge Quilt
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.3
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.3
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.3
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.4
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.19.3
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.3
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.17.1
Fabric Forge
13h ago 1
1.16.5
Fabric Forge
13h ago 1
1.18.2
Fabric Forge
13h ago 1
1.19.2
Fabric Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.16.5
Forge
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.16.5
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.16.5
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.19.2
Fabric
13h ago 1
1.19.2
Forge
13h ago 1
1.19
Forge
13h ago 1
1.19
Fabric
13h ago 1
1.18.2
Forge
13h ago 1
1.18.2
Fabric
13h ago 1
1.17.1
Forge
13h ago 1
1.17.1
Fabric
13h ago 1
1.16.5
Forge
13h ago 1
1.16.5
Fabric
13h ago 1
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.3.0-beta.1 for MTR 4.0.5 has been released!

> **Beta Notice**
>
> This is a beta release and is not recommended for stable deployment, nor is it intended for normal players to use. Please report any mod behaviors you feel could be improved.
>
> Feature/implementation details may change throughout the beta lifecycle, any content you have made for this beta release may or may not break in the next version.


> This release contains breaking changes to JCM's internal codebase. Common addons have been tested against, however some addon depending on JCM may break.


## General
### New Blocks
  • Add **Emergency Train Stop Button (Wall mounted, TML)** and **URL variant** (Thanks **LX9702**!)

### Slab Support for blocks
  • The **Spot Lamp** block in JCM will now descend/ascend in accordance to slab blocks attached.
  • The **Railway Sign Poles** in MTR now gained the ability to extend the pole according to the slab above.

### Fixes
  • Fix JCM having an overly-long keybinding description, causing the Minecraft keybind page to shift outside the game window.
  • Previously **Spot Lamp** will always prefer attaching to the top block if available.
  • Now it will respect attaching to the side the player clicked on.
  • PIDS Projector** can now render further away before disappearing.
  • Fix **Automatic Iron Door** detecting players in spectator mode as well.
  • The playing mechanism for **Sound Looper** has been revised.
  • In JCM v1, the sounds are played to everyone across the server, which makes it a reliable source for playing all sorts of audio.
  • In JCM v2, it would only play to nearby players. Which means player may not be able to hear anything after getting in-range, until another loop occurs.
  • In this update, the range is now changed dynamically based on the duration. This allows short-form looping audio to play for nearby players, while having further range for long-form audio.
  • This should hopefully make sound looper more reliable.

## Technical

### PIDS Projector UI Improvement
It now supports real-time position/rotation preview, and you may now type the negative sign (-) as the first character.

### Railway Sign Text Coloring
Allow coloring text with the textColor field in the mtr_custom_resources.json "sign" section. Format is the same as backgroundColor.

### Lift Scripting
Lift Scripting has been added for review and feedback by the public, including rendering and sound playing.

See [JCM Docs](https://jcm.joban.org/v2.3/dev/scripting/type/lift/) for documentation.

### PIDS Scripting
  • Add TextWrapper.measureWidth() to return the actual text width. Note that this cannot be chained for further usage, and must be invoked separately.
  • Add PIDSWrapper.isPlatformAutoDetected(), returning whether the selected PIDS platform is manually picked by the user, or if it's automatically detected.
  • Add RectangleWrapper, which is similar to TextureWrapper with the texture id pointing to mtr:textures/block/white.png
  • PIDS relying on a white texture previously should change to use RectangleWrapper (Rectangle.), as it is guaranteed the output will be a solid color, even if such texture is moved/no longer available in future Minecraft/MTR versions.

### General Scripting
#### API-related
  • Vector3f now accepts TSC's Position class as a constructor
  • Added the ctx.setDebugInfo(value: any) shorthand for temporary, single-value on-screen debug info, without requiring a key.
  • Same as calling ctx.setDebugInfo("<Untitled>", value) if called once.
  • Subsequent invocation will result in <Untitled2>, <Untitled3> and so on...
  • Added PlayerEntity.displayName() to return the player's name with team prefixes.
  • Added PlayerEntity.isSpectator() and PlayerEntity.isCreative()
  • Added MinecraftClientWrapper.getCurrentWorldId() and MinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context.
  • Added the MTRWrapper class (Referenced using MTR in scripts).
  • This is a wrapper for various MTR utilities and data obtaining functions. (MTR.ClientConfig, MTR.Data)
  • It aims to reduce dependency on MTRClientData and other internal MTR class access, as there may be breaking changes made in MTR 4.1.
  • Unlike MTRClientData, backward compatibility will be considered in a best-effort basis, to ensure existing scripts do not break badly.
  • Note: Returned type from TSC is still vulnerable, however from observations it is more stablized than the MTR Mod's code.

#### Surrounding Changes
  • The create() function is changed to be re-invoked again after an execution error, instead of continuing towards render() function, where not all variable may be initialized, obscuring the original error in the create function.
  • Added isScriptRendered field for eyecandy and lift entry, which allows script to fully take over the rendering, without MTR's default renderer.
  • This is useful for lifts whose model is solely rendered by scripts, as well as eyecandy model that desires a generic model fallback when JCM scripting is not available.
  • Eyecandy**
  • The custom config NBT tags by ANTE will now be preserved.
  • The eyecandy model select UI is now overwritten by JCM in preparation for eyecandy custom config.
  • Though I have other plans for the UI, so it will likely be removed in future releases.
  • When script debug mode is enabled, in-game script parsing error messages will now display on the first-time you join the game.
  • Previously this will cause errored scripts to be missed on launch.
  • Script Debug Overlay**
  • "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
  • If riding a scripted lift or scripted vehicle, it will always be sorted to the top as it's of most-relevance.
  • Order of script debug info is now always arranged according to the script execution order.

### PIDS Textures
Please note that several textures used by PIDS (rv_door_cls_apg.png, rv_door_cls_psd.png, rv_door_cls_train.png, thumbnail/pids_1a.png) has been relocated from jsblock:textures/block/pids to jsblock:textures/pids.

It is done this way to avoid Minecraft including the texture to the block texture atlas, resulting in unnecessary overhead/enlarging of the block texture size.

## Translations
Thanks to the following people who have contributed translations for this release! (No particular order):
  • Smile Wood (zh_cn)
  • DelphoxOTS (ja_jp)
  • Fed (it_it)

Translations for JCM is now hosted on [ZiYue's Weblate](https://weblate.ziyuesinicization.site/projects/joban-client-mod/)

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)
# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.6 for MTR 4.0.5 (Forge) has been released!

This is a hotfix for all **Minecraft Forge** distribution of JCM.

  • All Forge users are advised to update to this version to ensure addon content works properly.**

It issues for resource packs making use of JCM Scripting (ctx.setDataFetchMode is ineffective).

Fabric loader is unaffected, no action is needed.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

# JCM v2.2.5 for MTR 4.0.5 has been released!

Fairly small release to address some usability issues. ^^
Does not alter server-side behaviour.

## Changes
  • Script Debug Overlay source can now be switched to "None" to avoid cluttering up the screen when not in use.
  • Search box in PIDS selection screen is no longer case-sensitive for better usability.
  • Improve GUI performance. This should improve situations like PIDS selection screen freezing the game for a few seconds with many RPs loaded.

  • Download:**
You can download this release on [Modrinth](https://modrinth.com/mod/jcm), [CurseForge](https://curseforge.com/minecraft/mc-mods/jcm) or [GitHub](https://github.com/DistrictOfJoban/Joban-Client-Mod/releases)

Joban Client Mod Icon
Download Joban Client Mod
Select game version
Select platform