Tags
Creators
Details
v2.3.0-beta.1+1.20.1
Compatibility
Required content
Changes
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 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 toTextureWrapperwith the texture id pointing tomtr: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.
- PIDS relying on a white texture previously should change to use
General Scripting
API-related
Vector3fnow accepts TSC'sPositionclass 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...
- Same as calling
- Added
PlayerEntity.displayName()to return the player's name with team prefixes. - Added
PlayerEntity.isSpectator()andPlayerEntity.isCreative() - Added
MinecraftClientWrapper.getCurrentWorldId()andMinecraftClientWrapper.getWorldBlockState(), allowing for better environmental context. - Added the
MTRWrapperclass (Referenced usingMTRin scripts).- This is a wrapper for various MTR utilities and data obtaining functions. (
MTR.ClientConfig,MTR.Data) - It aims to reduce dependency on
MTRClientDataand 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.
- This is a wrapper for various MTR utilities and data obtaining functions. (
Surrounding Changes
- The
create()function is changed to be re-invoked again after an execution error, instead of continuing towardsrender()function, where not all variable may be initialized, obscuring the original error in the create function. - Added
isScriptRenderedfield 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.
- "More relevant" instances are now sorted at the top for ease of visualization (Usually as one is closer to an object)
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
Download:
You can download this release on Modrinth, CurseForge or GitHub
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:lQqKCDhg:hmTo4jV7"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:lQqKCDhg:hmTo4jV7"
}

