A server-side proxy plugin that enables Yes Steve Model (YSM) custom player models and animations across BungeeCord/Velocity networks.
Maintained by: NguyenDevs · Original author: MrHua269 · License: Mozilla Public License 2.0
⚠️ Freesia is not an official Yes Steve Model project.
This project originated as Cyanidin, was later renamed Freesia by KikirMeow, and is now continued under the name Freesia II by NguyenDevs after an extended period of inactivity and accumulated bugs.
Freesia is a hybrid between MultiPaper and Geyser. It uses MultiPaper's cross-server data exchange mechanism to synchronize YSM packets across a network — handling entity ID differences between worker and sub-servers, and determining player visibility across nodes.
| Component | Role |
|---|---|
| Velocity/Waterfall | Proxy layer — forwards/processes YSM packets, routes players |
| Worker | Dedicated backend node — model sync, entity state, NBT generation, caching (Fabric 1.21, minimal mode) |
| Backend | Installed on sub-servers — handles player tracker checks, notifies proxy |
Worker nodes run in a stripped-down mode: no world saving, no standard game features, async YSM processing only. They are not added to the Velocity/Waterfall server list.
- Velocity/Waterfall proxy
- Fabric 1.21 server(s) for Worker nodes + Yes Steve Model mod + Freesia-Worker
- Sub-servers (Spigot/Paper/etc.) with Freesia-Backend installed
- Consistent IP/port configuration across all components
- Download
template serverfrom the latest release - After download completes, run
start.batin the created folder
- Install Freesia-Velocity/Waterfall on your Proxy
- Set up Worker nodes (Fabric 1.21 + YSM mod + Freesia-Worker)
- Install Freesia-Backend on all gameplay sub-servers
[functions]
debug = false
kick_if_ysm_not_installed = false
ysm_detection_timeout_for_kicking = 30000 # milliseconds
[messages]
language = "en_US" # Options: "en_US", "zh_CN", "vi_VN"
[worker]
worker_master_ip = "localhost"
worker_master_port = 19200
worker_msession_ip = "localhost"
worker_msession_port = 19199[worker]
worker_master_ip = "localhost"
worker_master_port = 19200
controller_reconnect_interval = 1
player_data_cache_invalidate_interval_seconds = 30server-ip=127.0.0.1
server-port=19199 # Must match worker_msession_port in Velocity config🔒 Security: Never expose ports
19200(master) or19199(msession) to the public internet.
- Full Yes Steve Model support on Velocity/Waterfall / plugin networks
- Asynchronous model synchronization and data generation
- Worker nodes optimized exclusively for YSM packet handling
- Optional kick for players without YSM mod installed
- Multi-language kick messages (
zh_CN/en_US/vi_VN) - Secure design — control and msession ports are internal only
Freesia has not been formally benchmarked. According to MrHua269, it should handle around 130 concurrent players without issue. Note that YSM's own cache synchronization can occasionally cause memory leaks and model sync issues.
Linux / macOS
chmod +777 ./gradlew
./gradlew buildWindows
gradlew.bat buildBuild artifacts are output to the build/libs/ directory of each module.
- 📖 YSM Plugin Documentation
- 🎬 Full Setup Tutorial (YouTube) — Velocity + Spigot/Paper
- 📦 Release