# 2.4.0 Update Log
## Bug Fixes
- Fixed an issue where clients without YSM installed could not enter the server.
- Fixed an issue with unplayed animation sound effects in multiple animation states.
- Corrected a problem where buttons were not recognizing boolean values in the custom configuration for the roulette animation.
- In animation control, scaling animation blending is now multiplicative instead of additive (aligning with Bedrock Edition mechanics).
- Modified the second-order animation calculation mechanism, allowing second-order animations to play correctly at very low frame rates.
- Audio is now forced to play in mono (only supports Forge 1.21/1.20/1.19/1.18).
- Fixed a bug where audio would not stop in certain situations.
- Attempted to fix a bug where the first frame would be blank when using or swinging animations.
## Maid Rendering Compatibility
- Added compatibility for the maid mod; now version 1.2.0 of the maid mod can directly call YSM rendering, requiring both mods to be updated.
- In creative mode, right-clicking on a statue or garage kit with a gohei allows you to copy your model onto the statue or garage kit.
- New `tlm.animation.json` file added, including ten new maid-related animations:
- New animations: `broom`, `statue`, `garage_kit`.
- Supports Z key roulette animations.
- Supports multi-material switching.
- Supports roaming variables.
- Supports being made into statues or garage kits.
- Wine fox maids now produce particles and music when playing the piano from the maid mod.
- New maid-related Molang variables added:
- `ysm.entity_type`: returns player and maid.
- `ysm.is_player`: boolean value.
- `ysm.is_maid`: boolean value.
- `tlm.favorability_point`: favorability points, 0-384.
- `tlm.favorability_level`: favorability level: 0-3.
- `tlm.task_id`: work mode ID, string.
- `tlm.schedule`: work schedule, day, night, all (day shift, night shift, full-time).
- `tlm.activity`: activities such as work, idle, reset (working, off-duty, sleeping).
- `tlm.gomoku_win_count`: total rounds won in Gomoku.
- `tlm.gomoku_rank`: Gomoku rank, 1-4 (no 0).
- `tlm.game_statue`: game status, win, lost, empty string.
- `tlm.backpack_type`: backpack ID.
- `tlm.is_entity`: render maid entity.
- `tlm.is_statue`: render statue.
- `tlm.is_garage_kit`: render garage kit.
- `tlm.show_item`: item ID for the decoration slot.
## New Content
- Completed slash blade animations; now supports various Japanese-style slash blade.
- Added extra main and off-hand positioning group functionality; simply add numbers 2-8 after the old main and off-hand positioning groups to use them.
- Roaming variable limit modified; quantity increased to 64, name limit increased to 32 characters.
- Optimized animation debugging functionality:
- You can now use `/ysmclient watch var` command for quick Molang debugging.
- Commands will automatically complete available variables now.
- Animation state machines can now be debugged with `/ysmclient watch state`.
- Compatible rendering with the exquisite backpack mod; requires adding BackpackLocator positioning group to display.
- Added Opus audio decoding functionality; using Opus audio can significantly reduce file size (only supports Forge 1.21/1.20/1.19/1.18).
- New Perlin noise function added: `ysm.perlin_noise(seed, x, y, z)`, where y and z can be omitted.
- Added Molang for particle generation:
- `ysm.particle('id', x, y, z, dx, dy, dz, speed, count, life_time)`.
- `ysm.abs_particle('id', x, y, z, dx, dy, dz, speed, count, life_time)`.
- Eight new blank controllers added:
- player.pre_main
- player.post_main
- player.pre_hold
- player.post_hold
- player.pre_use
- player.post_use
- player.pre_swing
- player.post_swing
- New Molang:
- `ysm.mainhand_charged_crossbow`
- `ysm.offhand_charged_crossbow`
- `ysm.is_fishing`
- Wine fox has a new white outfit option.
- New Spring Wine Fox added.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }