SMCModelEngine
Let Bedrock players see your ModelEngine custom mobs.
If you use ModelEngine to add custom mob models to your server, Bedrock players connecting through Geyser can't see them — they just see the vanilla mob underneath.
SMCModelEngine is a Geyser extension made by SayMC that bridges ModelEngine and Geyser. It reads your .bbmodel blueprints and converts them so Bedrock players see the same custom mobs as Java players.
It runs as a Geyser extension alongside a small set of companion plugins and extensions — no extra tools needed.
Requirements
Setup differs depending on whether Geyser is running on your Paper server directly, or on a Velocity proxy. Follow the column that matches your setup.
Standalone — Geyser-Spigot
- ModelEngine
- GeyserModelEngine
- GeyserUtils (Spigot)
- Geyser-Spigot
- Floodgate
- smc_modelengine
- geyserutils-geyser
- GeyserDisplayEntity
- GeyserDisplayEntity.mcpack
Proxy — Velocity
- ModelEngine
- GeyserModelEngine
- GeyserUtils (Spigot)
- Floodgate
- Geyser-Velocity
- GeyserUtils (Velocity)
- Floodgate
- smc_modelengine
- geyserutils-geyser
- GeyserDisplayEntity
- GeyserDisplayEntity.mcpack
extensions folder. Packs go in the Geyser packs folder. These are inside the Geyser plugin data folder — not the server root.
Commands
SMCModelEngine provides a small set of commands to run conversions and get help.
/smc_modelengine help
Shows all available SMCModelEngine commands in chat.
/smc_modelengine convert
Starts the ModelEngine conversion. Reads your blueprints and converts them so Bedrock players can see your custom mob models.
Configuration
SMCModelEngine is configured via its own config file in the Geyser extensions folder.
The two key options are enabled and blueprints_path.
enabled
Enables or disables the extension.
true— extension is activefalse— extension is disabled
blueprints_path
Path to your ModelEngine blueprints folder. On a standalone server this can be a relative path. On a proxy setup, this must be an absolute path pointing to the blueprints folder on your backend Paper server, since Geyser runs on the proxy and can't resolve relative paths to the backend.
Standalone (Geyser-Spigot)
{
"enabled": true,
"blueprints_path": "plugins/ModelEngine/blueprints"
}
Proxy (Velocity)
{
"enabled": true,
"blueprints_path": "/path/to/paper/plugins/ModelEngine/blueprints"
}
blueprints_path — even on standalone setups. It avoids any ambiguity about where the extension looks for your blueprints.
SFTP Upload
When the Geyser proxy (Velocity or BungeeCord) runs on a different machine than your Paper server,
SMCModelEngine can upload the compiled smc_modelengine.zip pack directly to the remote proxy's Geyser
packs folder over SFTP after each conversion — the same way SMCConverter handles its proxy_ip upload.
Leave proxy_ip blank (the default) and SFTP upload is skipped; the pack is only saved locally.
proxy_ip
Hostname or IP of the remote proxy machine. Leave blank to skip SFTP upload (default).
proxy_port
SFTP port on the remote machine. Default 22.
proxy_user / proxy_pass
SFTP login credentials for the remote machine.
proxy_path
Optional. Full path to the remote Geyser-Velocity / Geyser-BungeeCord data folder
(e.g. /home/user/velocity/plugins/Geyser-Velocity).
Leave blank and SMCModelEngine will auto-search the remote machine for a matching Geyser folder,
just like SMCConverter does.
Example — proxy on a different machine
{
"enabled": true,
"blueprints_path": "/home/container/paper/plugins/ModelEngine/blueprints",
"proxy_ip": "your.proxy.host",
"proxy_port": 22,
"proxy_user": "youruser",
"proxy_pass": "yourpassword",
"proxy_path": ""
}
/geyser reload is often not enough — a full proxy restart is recommended.
/smc_modelengine convert, or copy the pack manually.
Tips & Best Practices
- Use a full absolute path. Even on a standalone server, pointing
blueprints_pathto the full path is safer and avoids issues if the working directory ever changes. - Run the conversion after any model changes. If you add or update blueprints in ModelEngine, re-run
/smc_modelengine convertto keep the Bedrock output in sync. - Fully restart after setup changes. If you add or move extensions or packs, do a full server/proxy restart — a reload is not always enough for Geyser to pick up new extensions.
- On a proxy, the absolute path must point to the backend Paper server. Geyser runs on the proxy, so a relative path will look in the wrong place. Always use the full path to the backend's
plugins/ModelEngine/blueprintsfolder. - Make sure Floodgate is installed. Both the backend and proxy need Floodgate for Bedrock player authentication to work correctly.
- Use SFTP when your proxy is on a separate machine. Set
proxy_ip,proxy_user, andproxy_passinconfig.jsonand the pack is uploaded automatically after each conversion. Leaveproxy_pathblank to let SMCModelEngine find the Geyser folder on the remote machine.
FAQ
GeyserDisplayEntity.mcpackisn't in the Geyserpacksfolder.- One or more extensions are missing from the Geyser
extensionsfolder. blueprints_pathis pointing to the wrong location.- The conversion hasn't been run yet — run
/smc_modelengine convert. - The server wasn't fully restarted after setup.
/home/container/paper/plugins/ModelEngine/blueprints.
A relative path won't work on a proxy because the extension runs inside Geyser on the proxy, not on Paper.
extensions folder inside your Geyser data folder (e.g. plugins/Geyser-Spigot/extensions/ or plugins/Geyser-Velocity/extensions/).
Packs go in the packs folder in the same Geyser data folder.
On a proxy setup, both go on the proxy — not on the backend Paper server.
proxy_ip, proxy_port, proxy_user, and proxy_pass in config.json.
After each /smc_modelengine convert, the compiled smc_modelengine.zip is uploaded over SFTP to the remote Geyser packs folder automatically.
Leave proxy_path blank and SMCModelEngine will auto-search the remote machine for the right folder.
Restart the remote proxy after the upload so Geyser picks up the new pack.
smc_modelengine.zip in the extension data folder) is always saved regardless of SFTP result.
Check your proxy_ip, proxy_user, and proxy_pass settings, then re-run /smc_modelengine convert.
Alternatively, copy the local pack to the remote Geyser packs folder manually and restart the proxy.
Support
Join the Discord for support and development builds.