A cross-platform 3D model viewer for .ysm files — Encrypted binary format used for Minecraft player models. Built with Avalonia.
Try it in your browser: YSMViewer Live
git clone https://github.com/DrAbcOfficial/YSMViewer.git
cd YSMViewer
dotnet build YSMViewer.slnx
dotnet run --project YSMViewer.DesktopOpen a .ysm file via Open YSM button or launch with a file:
dotnet run --project YSMViewer.Desktop -- path/to/model.ysm- SDK: .NET 10.0
| Operation | Desktop | Browser |
|---|---|---|
| Orbit | Left mouse drag | Left mouse drag |
| Zoom | Mouse scroll / middle mouse drag | Mouse scroll / pinch |
| Pan | Right mouse drag | Right mouse drag |
| Reset view | Bottom bar Reset button | Bottom bar Reset button |
| Front view | Bottom bar Front button | Bottom bar Front button |
| Left view | Bottom bar Left button | Bottom bar Left button |
| Top view | Bottom bar Top button | Bottom bar Top button |
| Project | Target | Purpose |
|---|---|---|
YSMViewer/ |
net10.0 |
Shared UI library: Views, ViewModels, Services, 3D scene |
YSMViewer.Core/ |
net10.0 |
Shared parsing/model library consumed by all other projects |
YSMViewer.Desktop/ |
net10.0 |
Desktop launcher |
YSMViewer.Browser/ |
net10.0-browser (WASM) |
Browser launcher |
ThumbnailProviders/YSMViewer.ThumbnailProvider/ |
net10.0 |
NativeAOT thumbnail rendering library |
ThumbnailProviders/YSMViewer.ThumbnailProvider.Win/ |
Native (C++/COM) | Windows Explorer thumbnail provider |
ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/ |
Native (C) | Linux XDG thumbnailer CLI |
ThumbnailProviders/YSMViewer.ThumbnailProvider.OSX/ |
Objective-C | macOS Quick Look thumbnail provider |
Build & register from a Visual Studio x64 Native Tools command prompt:
# Build C# library
dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r win-x64 -o publish/thumbnail-win
# Build native COM wrapper
msbuild ThumbnailProviders\YSMViewer.ThumbnailProvider.Win\YSMViewer.ThumbnailProvider.Win.vcxproj /p:Configuration=Release /p:OutDir="%cd%\publish\thumbnail-win\"
# Register (admin required)
.\publish\thumbnail-win\install.ps1
# Unregister
.\publish\thumbnail-win\uninstall.ps1The XDG thumbnailer uses MIME application/vnd.ysm.model+encrypted and covers file managers that honor freedesktop thumbnailers, such as Nautilus, Nemo, Caja, and Thunar. KDE Dolphin may require a future KIO plugin for first-class support.
# Publish NativeAOT rendering library
dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r linux-x64 -o publish/thumbnail-xdg
# Build CLI
make -C ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG BUILD_DIR="$PWD/publish/thumbnail-xdg"
# Copy metadata and install scripts
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/ysm.thumbnailer.in publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/application-vnd-ysm-model-encrypted.xml publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/install.sh publish/thumbnail-xdg/
cp ThumbnailProviders/YSMViewer.ThumbnailProvider.XDG/uninstall.sh publish/thumbnail-xdg/
chmod +x publish/thumbnail-xdg/ysm-thumbnailer
# Install (user-level)
./publish/thumbnail-xdg/install.shThe macOS provider is a minimal Objective-C Quick Look generator that loads the NativeAOT rendering library from the generator bundle.
Note: I do not have a macOS machine. The OSX thumbnail provider can only be compile-checked via CI; no runtime testing is possible.
dotnet publish ThumbnailProviders/YSMViewer.ThumbnailProvider -c Release -r osx-arm64 -o publish/thumbnail-osx/native
make -C ThumbnailProviders/YSMViewer.ThumbnailProvider.OSX BUILD_DIR="$PWD/publish/thumbnail-osx" NATIVE_LIB="$PWD/publish/thumbnail-osx/native/libYSMViewer.ThumbnailProvider.dylib"- UI: Avalonia 12.0
- 3D: Aura3D (Desktop) / Three.js (Browser via JS interop)
- MVVM: CommunityToolkit.Mvvm (source generators)
- Parser: YSMParser.Core
- MoLang: Alex.MoLang
- YSMParser — original YSM format research