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 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,minedndanddnd5eare taken). The new pack haspack.mcmetafor 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>.zipfrom a release), Open folder… an unzipped one (the folder withpack.mcmetain 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 orpack.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.jsonandpack.mcmetahave 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_packfor 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
datapacksfolder (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.jsonthe 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.jsonandit_it.json), sotranslatekeys 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.