Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-30 18:25:28 +00:00
gradle/wrapper create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
src/main update commands; add a config file for auto-staging 2026-05-30 01:44:04 -05:00
.gitignore create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
build.gradle create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
gradle.properties create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
gradlew create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
gradlew.bat create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00
README.md remove annoying part 2026-05-30 18:25:28 +00:00
settings.gradle create most simple iteration of mmdload 2026-05-30 00:19:30 -05:00

mmdload

Client-side NeoForge mod for 1.21.1. Pulls MMD model files (or zip bundles of them) into .minecraft/3d-skin/ so mmdskin picks them up. Works on vanilla servers. Everything runs on the client.

Install

NeoForge 1.21.1. Drop mmdload-1.0.0.jar into mods/. That's it.

Commands

/mmdload <url> — fetch a URL once. Single MMD file or .zip. Chat reports progress and where it landed.

/mmdload (no args) — fetches the URL saved in the config. Errors if nothing is set.

/mmdload-config <url> — saves the URL to config and fetches it immediately. Persists across restarts; the same URL is auto-fetched on every client startup.

Config

config/mmdload-client.toml, generated on first launch:

# URL to fetch on client startup. Accepts a single MMD file or a .zip.
# Leave empty to disable startup auto-download.
autoDownloadUrl = ""

Set it manually or via /mmdload-config.

Accepted files

.pmx .pmd .png .jpg .jpeg .bmp .tga .vmd .vpd

Anything else in a zip is skipped. Zip entries with ../ are rejected (no zip-slip). 200 MB cap on download size.

Only http:// and https:// schemes.

Notes

Files extract into 3d-skin/ preserving the zip's internal directory structure, so a zip with EntityPlayer/MyModel/model.pmx lands at 3d-skin/EntityPlayer/MyModel/model.pmx. mmdskin reads from there directly.