Skip to content

feat(formats): Minecraft packs and Modrinth modpacks (Games field) - #1048

Merged
KnifeLemon merged 2 commits into
mainfrom
feat/game-packs
Nov 3, 2026
Merged

KnifeLemon merged 2 commits into
mainfrom
feat/game-packs

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

On top of #1047 (it takes schema 61, this one 62); merge that first and this diff shrinks to its own commit.

.mcpack, .mcaddon, .mcworld, .mctemplate and .mrpack are ZIP archives under their own extensions. Both directions asked for in #824 and #898 now work in Filee:

From To How
a pack ZIP, 7Z, TAR…, a folder read with 7-Zip, like any ZIP
ZIP (or another archive) a pack written as ZIP, with the marker file at the top
  • The marker: Minecraft and Modrinth read manifest.json (pack), level.dat (world, template) or modrinth.index.json (modpack) at the top of the ZIP. A ZIP made by zipping the pack's folder has it one level down, so Filee packs that folder's content instead (GamePacks.Root). An add-on (several packs side by side) is packed as it is.
  • Fields ([Feature]: A rule for what Filee shows by default, before more formats are addedΒ #806): specialist formats in the Games field, off in a new install, as docs/FORMAT-RULES.md rule 5 asks for a new specialist output.
  • Schema 62: the MCPACK … MRPACK presets join the library after "TAR" (palette only, no donut gets a slot), and the archives donut learns the extensions. Custom claims stay put.

Tested

  • GamePackTests (new, with the bundled 7-Zip): routes in one step both ways; a ZIP of the pack folder gives an MCPACK / MCWORLD / MRPACK with the marker at the top; an MCADDON keeps its packs side by side; MCPACK and MRPACK β†’ ZIP keep every file; a folder packed into one pack has its manifest at the top.
  • GamePackFormatTests (new): Games field, hidden with the new-install switches; schema 61 β†’ 62 adds the presets after TAR on no donut and the extensions without taking a user donut's claim.
  • FormatFieldsTests updated (Games members, specialist count 108 β†’ 113).
  • Archive tests 69/69 (with 7-Zip), Core 953, CLI 78, related App tests 492; dotnet format --verify-no-changes clean.

Closes #824
Closes #898

πŸ€– Generated with Claude Code

KnifeLemon and others added 2 commits November 3, 2026 19:22
- .dart and .hql join the TXT format like .py, .sql and .cs: recognised as text and converted to TXT, PDF, HTML,
  Markdown and the other text targets, never run (#980, #997).
- .kra is read as the merged picture Krita keeps at the top of the file (mergedimage.png), in memory and at most
  256 MB, so it goes to PNG, JPG, PDF and every other picture target as it looks in Krita (#903). It is graded
  specialist in the Design & print field, and read only.

Settings schema 61 teaches existing text donuts .dart and .hql and the images donut .kra; custom claims stay put.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.mcpack, .mcaddon, .mcworld, .mctemplate and .mrpack are ZIPs under their own extensions (#824, #898). The archive
engine reads them with 7-Zip like ZIP (to ZIP, 7Z, TAR, a folder, ...) and writes them as ZIP. Minecraft and Modrinth
read a marker file at the top (manifest.json, level.dat, modrinth.index.json), so a pack made from an archive or a
folder whose only top folder holds it gets that folder's content (GamePacks.Root); an add-on is packed as it is.

They are specialist formats in the Games field, which a new install has off (docs/FORMAT-RULES.md). Settings schema
62 adds their presets to the library after "TAR" (no donut gets a slot) and teaches the archives donut their
extensions; custom claims stay put.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Format]: .mrpack [Format]: .mcaddon .mcpack .mcworld .mctemplates

1 participant