Skip to content

MineDnD Pack Editor

The desktop app for building a MineDnD datapack: start a new one or open yours, as a .zip or a folder, and work on its JSON files right there. Every file is checked as you type, with the rules the game applies, and so is the pack as a whole (what one file names must exist in another); the right side previews each file the way players will see it (an item's tooltip, a recipe's grid, an achievement's toast…). Save writes back into the same zip or folder. Windows, macOS and Linux; English and Italian (switch with the View menu). Single JSON files open too.

Download

Download the file for your system from the repository's Releases page. They're added to a release separately, so if the newest one doesn't have them yet, take them from an earlier release. Up to 0.10 the app was called MineDnD Validator: the Pack Editor is a separate app, and the old one can be uninstalled.

There's nothing to install: each download is the app itself, to run from any folder or a USB stick.

System File Notes
Windows MineDnD-Pack-Editor-<version>-windows-portable.exe Run it
macOS MineDnD-Pack-Editor-<version>-macos.zip Universal: Apple Silicon and Intel. Unzip it and run the app (move it to Applications if you like)
Linux MineDnD-Pack-Editor-<version>-linux-x86_64.AppImage Any distribution: chmod +x it, then run it

Release candidate: while the next version is being tested, the pre-release "MineDnD release candidate" (tag rc-v<version>) has MineDnD Pack Editor RC (MineDnD-Pack-Editor-RC-<version>-…): the app for that version, a separate app from the released one, which opens the release candidate's docs (https://rc.minednd.pages.dev/). It may change before the release, and is deleted when the version is released.

The builds aren't signed with a paid certificate, so the first launch shows a warning:

  • Windows: "Windows protected your PC" → More info → Run anyway.
  • macOS: "cannot be opened because the developer cannot be verified" (or "is damaged") → right-click the app → Open → Open (or System Settings → Privacy & Security → Open Anyway). Only the first time.
  • Linux: AppImages need FUSE 2 on some distributions (Ubuntu 22.04+: sudo apt install libfuse2).

Your datapack

  • File → New datapack… (Ctrl/Cmd+Shift+N) asks for its namespace, the folder under data/ for your content and the first part of its ids (my_campaign → my_campaign:ruby_ring; minecraft, minednd and dnd5e are taken). The new pack has pack.mcmeta for this Minecraft version, English and Italian language files and the usual folders (items, recipe, crafting_requirements, enchantment, loot_injections, advancement, title). Nothing is on disk until Save as… makes the zip.
  • Open… a datapack's .zip (e.g. MineDnD-Default-Content-<version>.zip from a release), Open folder… an unzipped one (the folder with pack.mcmeta in it), or drag either onto the window. File → Open recent lists the last 8 zips and folders opened or saved.

  • The file tree on the left lists every file, with its number of errors (red) and warnings (orange); folders add up what's inside. Only files with problems hides the rest. The pack opens on the first file with an error.

  • Click a file to open it in the editor: it's checked and previewed as usual, with the pack's own translations. Changes stay in the app until you save; a ● marks the files changed.
  • Above the tree: the pack's totals and the problems of the pack as a whole.
  • Files: File → New file in the pack… (or right-click a folder → New file…) asks for the path, e.g. data/my_campaign/items/rings/ruby_ring.json: folders that aren't there yet are made. The file starts empty ({}), or pick a Template: a small, valid item, shaped, brewing, smithing, fletching, fletching upgrade, imbuing or cooking recipe, loot injection, enchantment, requirement rule, achievement, title, tag, world settings, translations or pack.mcmeta, named after the file (ruby_ring.json → "Ruby Ring", my_campaign:ruby_ring). A template sets the folder the game reads that kind of file from (e.g. data/my_campaign/items/, in the namespace you're making it in) and you type the rest (weapons/ruby_ring.json); settings.json and pack.mcmeta have a fixed path. Pick Empty again for any path. Right-click a file (or use the Edit menu) for Rename / move… (change the folders to move it), Duplicate (ruby_ring_copy.json) and Delete; right-click a folder to rename, move or delete it with everything inside. Delete (or Ctrl/Cmd+Backspace) deletes the selected file. All of it waits for Save like an edit.
  • Folders: File → New folder in the pack… (or right-click a folder → New folder…) makes an empty folder, e.g. data/my_pack for your own namespace, so the files you make in it (and their templates) use it: data/my_pack/items/, my_pack:ruby_ring. The box says when a name isn't one the game can read (lowercase letters, digits and _ - .). An empty folder stays in the tree, and Save makes it in the folder or the zip.
  • Save (Ctrl/Cmd+S) writes the changes back: into the same zip, or, for a folder, into its files. In a folder, deleted and renamed-away files go to the Trash (Recycle Bin on Windows), so they can be brought back, and folders left empty are removed (not the ones made with New folder). Save as… writes the pack as a new zip, ready to share or to put in a world's datapacks folder (from a folder too). If the pack still has errors, the app says how many and asks before saving.
  • Closing the pack, or opening something else, asks first if there are unsaved changes.

Besides every file's own checks, it checks the pack itself:

Check Severity
pack.mcmeta missing, or not at the top of the zip (inside MyPack/, from zipping the folder instead of its content: Save as… moves it to the top) Error
No data folder Error
A namespace or a file name the game can't read (capital letters, spaces, accents): the game skips those files Error
The same path twice in the zip, or two paths that differ only in capital letters (the same file on Windows and macOS) Error
A file outside the folders the game reads (data/<namespace>/<folder>/…) Warning
The same item in items/ and in the old gm_items/ folder (the mod uses items/) Warning
The same translation key, with different texts, in two namespaces' lang files (the game shows one) Warning
Across files: an item, enchantment, recipe, achievement, potion tag or loot table that a file names in the pack's own namespace, and no file defines (a recipe's result or catalog_item, a loot injection's item, an item's enchantments, a rule's recipes and potion tags, a title's achievement, an achievement's parent and rewards). The editor underlines the id Warning
A text the pack translates (translate keys of its own namespace) with no text in any of its language files Warning
Content in the engine's namespace minednd (only settings.json and the hook tags fletching_table and first_time_xp go there) Warning
Ids of another pack's namespace, e.g. the Default Content's dnd5e: one note for the whole pack, since the world needs that pack too Note
A text missing in one of the pack's languages; an item category with no minednd.category.<category> text (the Imbue tab's list shows its name); minecraft:custom_model_data that only names the item itself (a look file named like the item does it now); a file replacing one of the Default Content's Note
Files the Pack Editor has no checks for (loot tables, functions, …), files that aren't part of a datapack, junk from zip tools (__MACOSX, .DS_Store: left out when saving) Note

The editor

  • Everything is in the app's menus (on macOS in the menu bar at the top of the screen, on Windows and Linux at the top of the window):
  • File: New datapack… (Ctrl/Cmd+Shift+N), Open… (Ctrl/Cmd+O) a zip or a file (or drag one onto the window), Open folder… (Ctrl/Cmd+Shift+O), Open recent, Save (Ctrl/Cmd+S) and Save as… (Ctrl/Cmd+Shift+S); New empty file; with a pack open, New file in the pack…, New folder in the pack… and Close pack; Exit (Windows, Linux; on macOS Quit is in the app's menu).
  • Edit: Undo, Redo, Cut, Copy, Paste, Select All, Find / replace… (Ctrl/Cmd+F) in the editor; Rename / move…, Duplicate and Delete for the pack file in the editor.
  • View: Only files with problems (in a pack), and the language (English or Italiano).
  • Examples: a file to start from, from the Default Content datapack, the tutorial's pack or the templates test pack (a hidden, limited smithing template, a smithing recipe, a loot injection, a loot table).
  • Help: Guide ↗ opens this page in the browser, and About (on macOS in the app's menu).
  • The right-click menu of the file tree is the system's too.
  • File type is Detect by default: the type comes from where the file is in its datapack (data/<namespace>/items/… is an item, data/<namespace>/recipe/… a recipe, data/<namespace>/settings.json the world settings and so on, see Datapacks) or, for a file that isn't in a datapack yet, from its content. Pick the type by hand if it guesses wrong.
  • The problems list updates as you type. Click a problem to jump to it; the same problems are underlined in the editor.
  • When you open a file from a datapack, the app also reads that datapack's translations (data/*/lang/en_us.json and it_it.json), so translate keys show as their text in the preview.
  • For items and requirement rules, Character sets the ability scores of the player the preview is for (All sets every score at once): requirements turn green or red, and an item shows whether its bonuses would be active.

What it checks

The same rules the mod applies when it loads a datapack, so a file with no errors here loads in game:

Severity Means
Error The game rejects the file (or the entry): wrong JSON, a missing required field, a value out of range, an unknown ability, slot, component or trigger
Warning It loads, but probably not as you meant: an unknown field (with a "did you mean…?" suggestion), a field the ability type ignores, a recipe key that the pattern never uses, a rule that matches nothing
Info Worth knowing, nothing to fix

File types: items, recipes (shaped, shapeless, brewing, smithing, fletching, fletching upgrade, imbuing, cooking), loot injections, loot tables (only their minednd:catalog_item entries), enchantments, requirement rules, achievements (advancements), titles, tags, world settings (settings.json, including the XP formula), translations and pack.mcmeta.

A single file opened alone is checked on its own; in a datapack it's also checked against the pack's other files. What depends on other packs (an id of the Default Content, a vanilla tag's contents) shows in game: load the pack and look at the game's log (Finding mistakes).

What it previews

File Preview
Item The in-game tooltip: name in its rarity colour, enchantments, lore, attribute modifiers, requirements, the active ability (key, damage, cooldown) and stat bonus
Recipe The crafting grid with its result, the brewing stand, the smithing table, the fletching table (grid or upgrade), the enchanting table's Imbue tab with its cost, or the furnace, smoker or campfire with the cooking time
Loot injection, loot table The item, chance and tables; the MineDnD items a loot table can give
Enchantment The enchanted book's tooltip, what it applies to, and a table of every level and its cost
Requirement rule What it blocks, for which items or blocks, and which scores it needs
Achievement The toast that pops up, its tooltip, and its criteria
Title The name tag above the player
World settings What you changed from the defaults, what each ability score does, and the XP each level costs
Tag, translations, pack.mcmeta Their values, the translations side by side, the pack as the pack list shows it

Troubleshooting

  • The portable Windows exe doesn't start: it needs Microsoft's WebView2 runtime, part of Windows 10 and 11 (on an old or trimmed-down system, install "WebView2 Runtime" from Microsoft).
  • No menus, Open and Save do nothing: the menus are the app's, so a page opened in a browser (npm run dev) has none. There, drop a file or a zip onto the page, and Ctrl/Cmd+Shift+S downloads a pack's zip.
  • A translated name shows as its key (item.dnd5e.flame_sword): the file wasn't opened from inside its datapack, so the app couldn't find the translations. Open it from the datapack folder, or just ignore it: the game shows the text.