[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-45":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":14,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":16,"starSnapshotCount":16,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},45,"YSMParser","OpenYSM\u002FYSMParser","OpenYSM","A Parser to recover Yes-Steve-Model Encrypted Binaries.","https:\u002F\u002Fwww.ysm.rip",null,"C++",518,152,5,16,0,8,68,15,10.55,"MIT License",false,"main",[],"2026-06-12 02:00:07","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"images\u002Fbrand.jpg\" alt=\"logo\" width=\"300\"\u002F>\n  \u003Ch1>YSMParser\u003C\u002Fh1>\n  \u003Cp>.ysm模型一键解密、转换为Blockbench工程，全版本加密格式支持。\u003C\u002Fp>\n  \u003Cp>One-click decryption of .ysm models and conversion to Blockbench projects, with support for all encrypted format versions.\u003C\u002Fp>\n  \u003Cp>\n    \u003Cstrong>语言 \u002F Language:\u003C\u002Fstrong>\n    \u003Ca href=\"#zh-cn\">简体中文\u003C\u002Fa> |\n    \u003Ca href=\"#english\">English\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F3485f424-c715-4d65-a35a-d57bd46d82a8\n\n[-> 在线体验\u002FOnline Demo](https:\u002F\u002Fwww.ysm.rip\u002F)\n\n\u003Ca id=\"zh-cn\">\u003C\u002Fa>\n\n## 简体中文\n\n[切换到 English](#english)\n\n### 总览\n\n[是，史蒂夫模型](https:\u002F\u002Fgithub.com\u002FYesSteveModel)是一款[《我的世界》](https:\u002F\u002Fwww.minecraft.net\u002Fzh-hant)模型载入模组。由于作者[TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid)拟似患上[偏执型人格障碍](https:\u002F\u002Fzh.wikipedia.org\u002Fwiki\u002F%E5%81%8F%E5%9F%B7%E5%9E%8B%E4%BA%BA%E6%A0%BC%E9%9A%9C%E7%A4%99)，在原有的不安全加密方案出现公共攻击之后为了保护他的兒子，使用C++重写了加密和渲染，且渲染使用C++编写完全为了防止Java Hooks导出模型。为了防止社区认为他是精神障碍患者，其在[Modrinth主页](https:\u002F\u002Fmodrinth.com\u002Fmod\u002Fyes-steve-model)上声称使用被盗的VMProtect和没有缓存的jni渲染是极大的提升了渲染效率。\n\n本项目提供了完全解密其C++重写版本的加密及所有旧版本加密的方案。\n\n![1](images\u002Fplatform.png)\n\n### 功能\n\n- 支援全部格式版本\n- 当模型仅保存顶点\u002F法线\u002FUV 时，自动还原BlockBench的 origin、size、pivot、rotation与各面uv字段\n- 还原工程文件： `models`、`animations`、`controller`、`textures`、`sounds`、`lang`、`avatar`、`ysm.json`\n\n#### 格式支持\n\n| 格式 | 支援 |\n|------|------|\n| V1 | ✅ |\n| V2 | ✅ |\n| V3 (`format` \u003C 4) | ✅ |\n| V3 (`format` 4 ~ 15) | ✅ |\n| V3 (`format` > 15) | ✅ |\n| V3 (`format` ≥ 26) | ✅ |\n| V3 (`format` ≥ 32) | ✅ |\n\n### 教学\n\n1. 构建或者[下载](https:\u002F\u002Fgithub.com\u002FOpenYSM\u002FYSMParser\u002Freleases)符合您的作业系统的可执行文件\n2. 创建一个输入目录，将所有需要解密的.ysm文件放入\n3. 运行命令列\n\n```bash\nYSMParser -i \u003C输入目录> -o \u003C输出目录> [-v] [-j \u003C线程数>]\n```\n\n| 参数 | 说明 |\n|------|------|\n| `-i, --input` | 输入目录（必须），将处理其中的全部 `.ysm` 文件 |\n| `-o, --output` | 输出根目录（必须） |\n| `-v, --verbose` | 详细输出模式（强制单线程） |\n| `-j, --threads` | 并行线程数（默认 `0` = 自动检测 CPU 核心数） |\n| `--version` | 显示版本号 |\n\n示例：\n\n```bash\n# 所有文件放入input文件夹\nYSMParser -i input -o output\n```\n\n### 构建\n\n环境：\n- CMake ≥ 3.12\n- C++20 Compiler\n\n\n#### 可执行文件构建\n\n```bash\n# 配置 (Windows x64 Release)\ncmake --preset x64-release\n\n# 编译\ncmake --build --preset x64-release\n```\n\n#### WASM构建\n\n```bash\n# Node.js\ncmake --preset wasm-release\ncmake --build --preset wasm-release\n\n# Web\ncmake --preset wasm-web-release\ncmake --build --preset wasm-web-release\n```\n\nWASM构建需要EMSDK环境变量指向Emscripten安装目录。\n\n### 贡献\n\n开发时，如果您使用Vibe Coding，请让LLM遵守 AGENTS.md 中的开发约定，特别是关于代码结构和提交规范的部分。\n\n\n### FAQ\n\n**Q：为什么还原出的模型参数（如长宽高、旋转角、中心点）与我的未加密原文件不同？**\n\n**A：** 因为 YSM 导出会将模型 **“烘焙”** 为最底层的顶点和面数据，丢失了原本直观的尺寸参数。为了让模型能在 BlockBench 中再次编辑，YSMParser 使用了**几何反推**算法，通过点和面重新“猜”出模型的参数。由于多种不同的参数组合能拼凑出完全相同的外观，因此反推参数可能与原文件有出入，但请放心，**模型在实际渲染时的视觉外观是完全一致的**。\n\n**Q：为什么我还原出来的模型完全错位，甚至方块扭曲崩塌了？**\n\n**A：** 这通常是因为**几何反推算法出现了误判**。如果原模型包含极其复杂的嵌套旋转、极近的重合顶点或非标准几何体，算法可能会算错特定骨骼的中心点（Pivot）或旋转方向，从而导致关联部件错位或崩塌。如果您遇到了这种情况，欢迎提交 Issue 并附带出错的 `.ysm` 文件。如果条件允许，请尽量附带该模型的未加密原文件，这会对我们优化算法、修复问题提供极大的帮助！\n\n### 鸣谢\n\n- [TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid): 使用VMProtect并misconfiguration导致所有关键函数没有被加密并随机按压数字小键盘为[ChatGPT 4o(Free tier)](https:\u002F\u002Fchatgpt.com\u002F)推荐的加密算术输入新的魔数\n- [Ivan Permyakov](https:\u002F\u002Fvmpsoft.com\u002F): 创建VMProtect\n- [Geoff Pike](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcityhash): 创建CityHash64\n- Makoto Matsumoto: 创建MT19937_64\n- Scott Arciszewski: 创建XChaCha20\n- [ChatGPT 4o](https:\u002F\u002Fopenai.com\u002Fzh-Hant\u002Findex\u002Fhello-gpt-4o\u002F): 帮助[TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid)创建加密方案\n\n#### 依赖库\n\n所有依赖以源码形式vendored在`external`下。\n\n| 依赖 |\n|------|\n| `zstd` |\n| `zlib` |\n| `cityhash` |\n| `xchacha20` |\n| `AES` |\n| `md5` |\n| `cpp-base64` |\n| `fpng` |\n| `json` |\n| `CLI11` |\n\n\u003Ca id=\"english\">\u003C\u002Fa>\n\n## English\n\n[Switch to 简体中文](#zh-cn)\n\n### Overview\n\n[Yes Steve Model](https:\u002F\u002Fgithub.com\u002FYesSteveModel) is a [Minecraft](https:\u002F\u002Fwww.minecraft.net\u002F) model-loading mod. Because its author, [TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid), allegedly appears to suffer from [paranoid personality disorder](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FParanoid_personality_disorder), after public attacks emerged against the original insecure encryption scheme, he rewrote the encryption and rendering in C++ in order to protect his son, and wrote the renderer in C++ entirely to prevent model exporting through Java hooks. To prevent the community from thinking that he is mentally ill, he claimed on the [Modrinth page](https:\u002F\u002Fmodrinth.com\u002Fmod\u002Fyes-steve-model) that using a stolen copy of VMProtect and uncached JNI rendering greatly improved rendering performance.\n\nThis project provides a complete decryption solution for both the C++-rewritten encrypted version and all older encrypted versions.\n\n![1](images\u002Fplatform.png)\n\n### Features\n\n- Supports all format versions\n- When a model stores only vertices\u002Fnormals\u002FUVs, automatically reconstructs BlockBench `origin`, `size`, `pivot`, `rotation`, and per-face `uv` fields\n- Restores project files: `models`, `animations`, `controller`, `textures`, `sounds`, `lang`, `avatar`, `ysm.json`\n\n#### Format Support\n\n| Format | Support |\n|------|------|\n| V1 | ✅ |\n| V2 | ✅ |\n| V3 (`format` \u003C 4) | ✅ |\n| V3 (`format` 4 ~ 15) | ✅ |\n| V3 (`format` > 15) | ✅ |\n| V3 (`format` ≥ 26) | ✅ |\n| V3 (`format` ≥ 32) | ✅ |\n\n### Tutorial\n\n1. Build or [download](https:\u002F\u002Fgithub.com\u002FOpenYSM\u002FYSMParser\u002Freleases) the executable that matches your operating system\n2. Create an input directory and place all `.ysm` files that need to be decrypted into it\n3. Run the command line\n\n```bash\nYSMParser -i \u003Cinput-directory> -o \u003Coutput-directory> [-v] [-j \u003Cthread-count>]\n```\n\n| Parameter | Description |\n|------|------|\n| `-i, --input` | Input directory (required); all `.ysm` files inside it will be processed |\n| `-o, --output` | Output root directory (required) |\n| `-v, --verbose` | Verbose output mode (forces single-threaded execution) |\n| `-j, --threads` | Parallel thread count (default `0` = automatically detect CPU core count) |\n| `--version` | Show version |\n\nExample:\n\n```bash\n# Put all files into the input folder\nYSMParser -i input -o output\n```\n\n### Build\n\nEnvironment:\n- CMake ≥ 3.12\n- C++20 Compiler\n\n#### Executable Build\n\n```bash\n# Configure (Windows x64 Release)\ncmake --preset x64-release\n\n# Build\ncmake --build --preset x64-release\n```\n\n#### WASM Build\n\n```bash\n# Node.js\ncmake --preset wasm-release\ncmake --build --preset wasm-release\n\n# Web\ncmake --preset wasm-web-release\ncmake --build --preset wasm-web-release\n```\n\nThe WASM build requires the `EMSDK` environment variable to point to the Emscripten installation directory.\n\n### Contributions\n\nDuring development, if you are using Vibe Coding, please ensure that your LLM adheres to the development conventions outlined in AGENTS.md, particularly the sections regarding code structure and commit guidelines.\n\n### FAQ\n\n**Q: Why are the restored model parameters, such as dimensions, rotation angles, and pivot points, different from my original unencrypted file?**\n\n**A:** This is because YSM export **\"bakes\"** the model down into raw vertex and face data, losing the original intuitive size parameters. To make the model editable again in BlockBench, YSMParser uses a **geometric reverse-inference** algorithm to \"guess\" the model parameters back from points and faces. Since many different parameter combinations can produce exactly the same visual appearance, the inferred parameters may differ from the original file. However, the **actual rendered visual result remains exactly the same**.\n\n**Q: Why is my restored model completely misaligned, or even twisted and collapsed?**\n\n**A:** This is usually caused by a **misjudgment in the geometric reverse-inference algorithm**. If the original model contains extremely complex nested rotations, very closely overlapping vertices, or non-standard geometry, the algorithm may infer the pivot point or rotation direction of certain bones incorrectly, causing related parts to shift or collapse. If you encounter this, feel free to submit an Issue and attach the problematic `.ysm` file. If possible, please also include the original unencrypted source file of the model, as that would greatly help us optimize the algorithm and fix the issue.\n\n### Acknowledgements\n\n- [TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid): Use VMProtect, and through misconfiguration left all key functions unencrypted, then randomly pressed the numpad to input new magic constants for encryption arithmetic as recommended by [ChatGPT 4o (Free tier)](https:\u002F\u002Fchatgpt.com\u002F)\n- [Ivan Permyakov](https:\u002F\u002Fvmpsoft.com\u002F): Created VMProtect\n- [Geoff Pike](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcityhash): Created CityHash64\n- Makoto Matsumoto: Created MT19937_64\n- Scott Arciszewski: Created XChaCha20\n- [ChatGPT 4o](https:\u002F\u002Fopenai.com\u002Findex\u002Fhello-gpt-4o\u002F): Helped [TartaricAcid](https:\u002F\u002Fgithub.com\u002FTartaricAcid) create the encryption scheme\n\n#### Dependencies\n\nAll dependencies are vendored in source form under `external`.\n\n| Dependency |\n|------|\n| `zstd` |\n| `zlib` |\n| `cityhash` |\n| `xchacha20` |\n| `AES` |\n| `md5` |\n| `cpp-base64` |\n| `fpng` |\n| `json` |\n| `CLI11` |\n","YSMParser 是一个用于解密和转换 Yes-Steve-Model 加密二进制文件的解析器。其核心功能包括一键解密 .ysm 模型文件，并将其转换为 Blockbench 工程，支持所有版本的加密格式。技术上，YSMParser 采用 C++ 编写，提供了多线程处理能力以提高解密效率，并且支持多种构建方式，包括可执行文件和 WebAssembly 构建。该项目适用于需要将加密的《我的世界》模型恢复为可编辑状态的场景，特别适合游戏开发者和模型制作者使用。",2,"2026-06-11 02:30:36","CREATED_QUERY"]