PackStudio Documentation
Everything you need to know about creating custom Minecraft resource packs and datapacks with PackStudio. Whether you're making your first custom item or building a full themed pack, you'll find guides and explanations here.
Getting Started
PackStudio is a browser-based editor for Minecraft Java resource packs and datapacks. You don't need to install any software — everything runs in your browser at mcpack.studio.
What you can make
- ▸ Custom items — Import a Blockbench model and a texture PNG; PackStudio wires up all the JSON files (item model pointers, string-based model selectors, language entries) automatically.
- ▸ Custom paintings — Upload an image; PackStudio resizes it, composites a frame, generates the datapack painting variant, a crafting recipe, and an advancement.
- ▸ Full resource packs — Download a ready-to-use ZIP that drops straight into your Minecraft
resourcepacks/folder. - ▸ Datapacks — Painting creations also produce a datapack ZIP with crafting recipes.
Do I need an account?
No. You can start creating immediately as a guest — no login required. Your work is auto-saved for up to 30 days. When you're ready to download, you'll be prompted to create a free account (you can skip it). Signing up gives you:
- • Persistent storage across sessions
- • A personal list of all your packs
- • The ability to publish packs with shareable download links
Quick start (3 steps)
- 1. Go to mcpack.studio and click Start Creating (or just visit /editor).
- 2. The editor opens with an empty pack. Click Add Item or Add Painting to begin.
- 3. Follow the wizard prompts — upload your model/texture, give it a name, and done.
Your items appear in the grid immediately. No page reloads — everything updates live.
Your Workspace & Projects
When you start creating, PackStudio sets up a workspace for you. Think of it as a project folder that holds everything in your pack.
What's in a workspace?
- • A resource pack with a
pack.mcmetamanifest - • Your custom items, models, and textures
- • Your custom paintings (and their datapack counterparts)
- • A language file (
en_us.json) for in-game display names
Managing multiple packs
Logged-in users can create multiple workspaces. Each one is a separate pack — you might have one for custom swords, another for paintings, a third for a server resource pack.
- • Create new: Click "New Pack" from your sessions list
- • Switch between them: Use the sessions list at /sessions
- • Upload existing: Got a ZIP from elsewhere? Use "Upload Pack" to import and continue editing
Guest vs. logged-in
| Feature | Guest | Logged in |
|---|---|---|
| Create items & paintings | Yes | Yes |
| Auto-save | 30 days | Permanent |
| Download packs | Login prompted (skippable) | Yes |
| Multiple workspaces | One at a time | Unlimited |
| Publish with share links | No | Yes |
| Group collaboration | No | Yes (premium) |
Workspace settings
Inside the editor, the settings panel lets you:
- • Change the pack description (shown in Minecraft's pack selection screen)
- • Set your custom namespace (defaults to "custom" — this prefixes all your item identifiers)
- • Change the target Minecraft version
Resource Packs & Datapacks Explained
What is a resource pack?
A Minecraft resource pack replaces or adds visual and audio assets — textures, models, sounds, languages. PackStudio generates the standard folder structure Minecraft expects:
your_pack.zip ├── pack.mcmeta ← Pack manifest (format version, description) ├── assets/ │ ├── your_namespace/ │ │ ├── items/ ← Item model pointers │ │ ├── models/item/ ← Full 3D model JSONs (from Blockbench) │ │ ├── textures/item/custom/ ← Your texture PNGs │ │ ├── textures/painting/ ← Painting artwork │ │ └── lang/en_us.json ← In-game display names │ └── minecraft/ │ └── items/ ← Vanilla item overrides
What is a datapack?
A datapack adds data-driven game logic — recipes, advancements, painting variants, tags. PackStudio generates datapacks automatically when you create paintings (so they can be crafted and placed in-game):
paintings_datapack.zip
├── pack.mcmeta
└── data/
├── your_namespace/
│ ├── painting_variant/ ← Painting definitions
│ ├── recipe/painting_variant/ ← Crafting recipes
│ └── advancement/recipes/ ← Recipe unlocks
└── minecraft/tags/
└── painting_variant/placeable.json
Why does PackStudio create both?
Resource packs handle the visuals (textures, models). Datapacks handle the behavior (crafting recipes, what surfaces a painting can be placed on). For custom paintings, you need both — the resource pack makes the painting look right, the datapack makes it craftable and placeable.
The pack.mcmeta manifest
Every pack (resource or data) includes a pack.mcmeta file. This tells Minecraft:
- • What pack format version the pack targets (determines compatibility)
- • A description shown in the pack selection menu
- • The minimum and maximum supported formats
PackStudio generates this automatically based on your selected Minecraft version. You don't need to edit it manually.
Namespaces — what are they?
Every item, texture, and model in Minecraft lives under a namespace. Vanilla content uses
minecraft/. Your custom content uses your chosen namespace (default: custom).
For example, if you create an item called "fire_sword" with the namespace "custom", its
in-game identifier becomes custom:fire_sword. This keeps your content separate from vanilla
and prevents name collisions with other packs.
Custom Items
PackStudio's item wizard lets you add custom items with 3D models and textures — no JSON editing required.
Interactive walkthrough with real JSON examples
What you need
- 1. A 3D model file — Export from Blockbench as a JSON file
- 2. Texture PNG(s) — The image(s) that wrap around your model
Blockbench model creation guide
PackStudio accepts model files exported from Blockbench (free, cross-platform 3D modeling tool popular in the Minecraft community). Blockbench handles the complex grid-based modeling that Minecraft uses — you don't need to understand JSON or Minecraft's model format directly.
Setting up a new item model
- 1. Open Blockbench and click Create New Model
- 2. Select Java Edition Item as the model type
- 3. Set your display format to 3D Inventory (this is the default for item models)
"Java Edition Item" is critical — the Bedrock exporter generates a different JSON structure
that PackStudio cannot parse. Blockbench's "Item" type generates the correct
parent, elements, and
display format for Minecraft Java Edition item models.
Model design best practices
- • Work within the grid — Items should fit within the standard item bounding box (16×16×16 blocks). Large models work, but items that are too big can look distorted when held or placed in containers.
- • Use proper UV mapping — Each cube in your model needs texture coordinates (UVs) assigned. Blockbench's "Edit UV" mode lets you drag UV faces onto your texture atlas. If UVs are missing, parts of your model will appear purple/black in-game.
- • One texture atlas per model — Keep all UV faces on a single texture sheet. PackStudio uploads textures as separate PNG files, one per atlas, and automatically wires them into the model JSON.
- • Keep UV atlases small — Minecraft's item UI renders textures at relatively small sizes. A 64×64 or 128×128 atlas is usually more than enough. Huge textures don't gain you detail — they just look blurry after Minecraft downscales them.
- • Check your model in multiple angles — Blockbench's toolbar shows first-person, third-person, and GUI views. Your item rotates when held, so check it from all angles before exporting.
Exporting from Blockbench
This is the most important step — the export settings determine whether PackStudio can import your model correctly.
- 1. Go to File → Export → Export Model
- 2. Set "Export Format" to Java Edition Model
- 3. Give the file a descriptive name (e.g.,
fire_sword.json— the filename becomes the item name in PackStudio) - 4. Include textures — check the option to "Save with texture" so Blockbench also exports your texture atlas PNG(s) alongside the model JSON
- 5. Click Export
Blockbench will export both a .json model file and one or more
.png texture files. Upload both to PackStudio — the JSON
file as the model, and the PNG(s) as textures.
Tip
Why not hand-write model JSON?
Minecraft's item model format is verbose — cube definitions, rotation matrices, display transforms, and texture coordinates nested in JSON. Blockbench abstracts all of this into an interactive 3D editor. Even experienced pack creators find Blockbench much faster than writing model JSON by hand, especially for items with complex shapes (multiple cubes, rotated elements, or custom animations).
If you're comfortable with raw JSON, PackStudio's advanced editor mode lets you edit model files directly. But for most users, Blockbench is the fastest path from idea to in-game item.
Step-by-step
- 1. In the editor, click Add Item
- 2. Upload your Blockbench model JSON
- 3. Upload your texture PNG file(s)
- 4. Give your item a name (this becomes the in-game identifier)
- 5. Click Create
PackStudio automatically:
- • Parses the Blockbench model and remaps texture paths
- • Writes the item model pointer JSON
- • Saves the full 3D model JSON
- • Stores your texture PNG
- • Creates a vanilla item override (string-based select) so the item appears in-game
- • Adds the display name to the language file
Example Walkthrough — Hard Hat
Let's walk through uploading a complete item step by step using a hard hat model as our example. The model is a three-part helmet created in Blockbench: a brim, a main shell, and a front peak. Here's what you'll actually be doing.
Step 1: Create the model in Blockbench
Open Blockbench, build your model on a 16×16 grid. For the hard hat, we built three elements:
- • Brim — a flat rectangular plate (
from [3,0,2] to [14,1,15]) - • Main shell — a box sitting on the brim (
from [4,1,3] to [13,5,12]) - • Front peak — a smaller box on the shell (
from [7,1,2] to [10,6,13])
In Blockbench, each face of every element gets UV coordinates that map to positions on your texture. Blockbench handles most of this for you — use the UV Editor tab to unwrap faces and drag them onto the UV canvas.
Step 2: Paint the texture
Still in Blockbench, switch to the Texture tab and open a 64×64 canvas (matching the
model's "texture_size": [64, 64]).
Paint your design — for the hard hat, a safety-yellow base with a dark gray rim and a small
reflective strip on the peak.
The key thing to understand: your model's JSON references the texture by an internal ID —
in our example, it's "0": "gc:item/custom/hard_hat".
This tells Minecraft to look for a PNG at assets/{namespace}/textures/item/custom/hard_hat.png
once the pack is assembled. PackStudio will rewire this path automatically when you upload.
Under the Hood
How the model → texture link works
The Blockbench JSON contains a "textures" block that maps
internal names (like "0") to Minecraft resource paths.
Every face in every element references one of these names via "texture": "#0".
When you upload the model and texture to PackStudio, it reads that "textures"
mapping, renames the path to match your pack's namespace, and saves the texture PNG to the
correct subdirectory. You don't edit any of this — the wizard takes care of it.
Step 3: Export from Blockbench
- 1. Go to File → Export → Export Model
- 2. Choose Bedrock Item / Java Item format (saves as
.json) - 3. Name the file something descriptive, e.g.,
hard_hat.json - 4. Go to Texture → Save As and save the painted texture as
hard_hat.png
These are the only two files you need: hard_hat.json (the 3D model)
and hard_hat.png (the texture that wraps around it).
Step 4: Upload to PackStudio
- 1. In the editor, click Add Item
- 2. Blockbench Model JSON: Select
hard_hat.json - 3. Texture File(s): Select
hard_hat.png - 4. Base Item Override: Type a vanilla item name — for a helmet,
carved_pumpkinworks well
The base item is the vanilla Minecraft item that will be visually replaced by your model in-game.
Choose one that has a similar bounding box to your custom item — carved_pumpkin
is the standard choice for helmets. You can optionally expand Advanced Options
to set a custom namespace, override the default model data number, or choose a different data type.
Step 5: Click "Add Item to Pack"
PackStudio now processes everything behind the scenes:
- • Reads the model JSON, finds the
"textures"block mapping"0"→gc:item/custom/hard_hat - • Stores the model at
assets/{ns}/models/item/hard_hat.json - • Saves the texture PNG at
assets/{ns}/textures/item/custom/hard_hat.png - • Creates the item model pointer at
assets/{ns}/items/hard_hat.json - • Registers the custom_model_data override for
carved_pumpkin - • Adds
"item.hard_hat.name": "Hard Hat"to the language file
The hard hat appears in your item grid immediately with its texture and 3D preview. No page reload — the grid updates live via HTMX.
Concept
How custom items appear in Minecraft
Minecraft has two systems for adding custom item models to existing vanilla items.
String-based select (default) uses a custom_model_data string selector — Minecraft's simpler, more flexible approach.
Range dispatch (legacy) uses numeric float thresholds and is kept for backward compatibility with the CustomRoleplay datapack.
Each custom item gets a unique identifier. When a player holds a vanilla item (like a
stick or netherite sword) with the right Custom Model Data value, Minecraft swaps in your
custom model.
PackStudio handles this automatically — it picks the right data type based on your workspace settings and wires up the override. You just see your item appear in the grid.
Managing your items
After creating items, you can:
- • View details — Click any item in the grid to see its model, texture, and metadata
- • Rename — Update the item name (updates all file references automatically)
- • Delete — Remove an item and all its associated files (model, texture, JSON, language entries, model override)
Using your items in-game
To see custom items in Minecraft, you need both the resource pack and a datapack that
registers items with the /trigger command. PackStudio supports integration with:
- • CustomRoleplay datapack
- • ModelApplier datapack
These datapacks handle the /trigger commands that give players the custom items. PackStudio
links to them when you download — you'll get guidance on which one to use.
Custom Paintings
PackStudio's painting wizard turns any image into a placeable, craftable custom painting.
What you need
- • A PNG image (any reasonable size — PackStudio resizes it to fit Minecraft's painting canvas dimensions)
Step-by-step
- 1. In the editor, click Add Painting
- 2. Upload your image
- 3. Give your painting a name and (optionally) an author credit
- 4. Click Create
PackStudio automatically:
- • Resizes the image to fit Minecraft's painting canvas
- • Composites the painting with a frame overlay (so it looks like a proper Minecraft painting)
- • Generates a miniaturized item texture (what you see in your inventory)
- • Creates the datapack painting variant JSON
- • Writes a crafting recipe (so the painting can be crafted in survival)
- • Adds the painting to the placeable tag (so it can be placed on walls)
- • Adds title and author entries to the language file
What gets generated
Resource pack side:
- •
textures/painting/{name}.png— The full painting artwork - •
textures/item/painting_{name}.png— The inventory icon
Datapack side:
- •
painting_variant/{name}.json— Defines the painting dimensions and texture - •
recipe/painting_variant/{name}.json— Crafting recipe - •
advancement/recipes/{name}.json— Recipe unlock advancement - • Updates to
minecraft/tags/painting_variant/placeable.json
Installing paintings in Minecraft
- 1. Download both the resource pack ZIP and the datapack ZIP from PackStudio
- 2. Put the resource pack in
.minecraft/resourcepacks/ - 3. Put the datapack in your world's
datapacks/folder - 4. Enable both in Minecraft (Settings → Resource Packs, and
/reloadfor datapacks) - 5. Craft your painting in survival, or use
/give @s painting{variant:"your_namespace:name"}
The Editor Interface
The PackStudio editor is a single-page workspace — no page reloads as you work. Dynamic regions update live via background requests.
Item Grid
The main panel shows a visual grid of all your custom items. Each card shows the item's texture and name. Click a card to view full details (model, texture path, custom model data number).
Validation Sidebar
A live validation panel checks your pack for errors as you work. If something's wrong — a missing texture, a broken JSON reference, a duplicate name — the sidebar shows a clear, human-readable explanation of the problem and how to fix it.
File Tree (Advanced Mode)
For users who want to see the raw file structure, switch to advanced mode to browse the entire pack as a file tree. You can:
- • Navigate folders
- • View any JSON file's contents
- • Edit JSON inline with a built-in code editor
This is for advanced users comfortable with Minecraft's pack format. Most users never need this — the wizards handle everything.
Settings Panel
Access workspace settings to:
- • Change the pack description
- • Set your custom namespace
- • Change the target Minecraft version (re-generates pack.mcmeta automatically)
Minecraft Version Compatibility
Minecraft resource packs use a numeric pack format that changes with each major update. PackStudio targets Minecraft 26.2 and supports pack formats 73 through 88.
What this means for you
- • PackStudio generates packs compatible with Minecraft 26.2+
- • If a future Minecraft update changes the pack format, PackStudio updates to support it
- • You can change your target version in workspace settings (useful if you're building for an older Minecraft version)
The version selector
In the editor, the version dropdown shows all supported Minecraft versions. Changing it
updates your pack.mcmeta automatically. Your items and textures carry over — only the
manifest metadata changes.
Exporting & Downloading
When you're ready to use your pack in Minecraft:
Resource Pack Download
- 1. Click Download Resource Pack
- 2. You'll receive a
.zipfile - 3. Move it to
.minecraft/resourcepacks/ - 4. Enable it in Minecraft: Settings → Resource Packs
Datapack Download
If you've created custom paintings, also download the datapack:
- 1. Click Download Datapack
- 2. Move the
.zipto your world'sdatapacks/folder - 3. In-game, run
/reloadto load it
Publishing (Logged-in users)
Logged-in users can publish packs with a shareable link:
- 1. Click Publish
- 2. PackStudio generates a public download URL
- 3. Share the link — anyone can download the pack without logging in
- 4. A SHA-1 hash is provided for server administrators to verify integrity
Pushing to GitHub (Premium)
Premium users can push their pack directly to a GitHub repository:
- 1. Click Push to GitHub
- 2. Enter your GitHub Personal Access Token (PAT) — it's used once, never stored
- 3. PackStudio commits all pack files to your repo
- 4. You get a commit URL to share or track
Installing in Minecraft — quick checklist
- ☐ Download resource pack ZIP
- ☐ (If paintings) Download datapack ZIP
- ☐ Resource pack →
.minecraft/resourcepacks/ - ☐ Datapack →
worldname/datapacks/ - ☐ Enable resource pack in Minecraft settings
- ☐ Run
/reloadin-game for datapacks - ☐ For custom items: also install CustomRoleplay or ModelApplier datapack
Accounts & Security
Sign up
- 1. Click Sign Up anywhere on the site
- 2. Enter email, username, and password
- 3. You're immediately logged in and redirected to the editor
Password requirements
- • At least 12 characters
- • Must contain uppercase and lowercase letters
- • Must contain at least one digit
Password reset
Forgot your password? Use the Forgot Password link on the login page. A reset token will be sent to your email.
Account security
PackStudio uses secure, HTTP-only cookies for authentication. Your login token is never exposed to JavaScript, which prevents cross-site scripting (XSS) attacks from stealing your session. Passwords are hashed with bcrypt — they're never stored in plain text.
Your profile
Visit your profile to view and edit your profile. You can update your email and username.
Groups & Collaboration
Groups let multiple users collaborate on packs. This is a premium feature.
Creating a group
- 1. Go to Groups in the navigation
- 2. Click New Group
- 3. Set a name, slug (URL identifier), and description
- 4. Choose link-sharing options
Roles & permissions
| Role | What they can do |
|---|---|
| Owner | Everything, including deleting the group |
| Admin | Invite/remove members, manage workspaces |
| Member | Edit packs in linked workspaces |
| Viewer | View-only access to workspaces |
Link sharing
Group owners can enable:
- • Link view — Anyone with the group URL can view (read-only) without logging in
- • Link edit — Anyone with the URL can edit (use with caution)
Inviting members
Owners and admins can invite members by username. Invitees receive a pending invitation they can accept or decline. Only Minecraft usernames are shown — no real names or emails are exposed in group contexts.
Linking workspaces
A group can have multiple workspaces linked to it. Any member with the right role can edit packs in those workspaces.
Troubleshooting
My item doesn't appear in Minecraft
Cause: Custom items require a datapack to register them with the /trigger command.
Fix: Download and install either the CustomRoleplay or ModelApplier datapack alongside your resource pack. These handle the /trigger commands that give players custom items.
My painting won't place on the wall
Cause: The datapack's placeable tag wasn't loaded.
Fix: Make sure you've placed the datapack ZIP in your world's datapacks/ folder and run /reload in-game. The painting needs both the resource pack (for the texture) and the datapack (for the placement behavior).
Pack shows as incompatible in Minecraft
Cause: The pack format in pack.mcmeta doesn't match your Minecraft version.
Fix: In the editor, open workspace settings and change the target Minecraft version to match yours. Then re-download the pack.
My textures show as missing (purple/black squares)
Cause: A texture file is missing or the reference path is wrong.
Fix: Check the validation sidebar in the editor — it will flag any missing textures. Delete the broken item and re-create it with the correct texture file.
Guest work disappeared
Cause: Guest sessions are automatically cleaned up after 30 days of inactivity.
Fix: Create a free account to keep your work permanently. If you had a session ID bookmarked, it may have expired — start a new pack.
Download button asks me to log in
Cause: Downloads require an account (you can skip the prompt, but you'll need to sign up eventually).
Fix: Create a free account. It's quick and your work will be saved permanently.
Validation sidebar shows errors
The validation sidebar is your friend — it catches problems before they reach Minecraft. Common validation issues:
- • Duplicate item name — Two items can't have the same name. Rename one.
- • Missing texture — An item references a texture that doesn't exist. Re-upload it.
- • Invalid namespace — Namespaces can only contain lowercase letters, numbers, and underscores.
GitHub push failed
Cause: The most common reasons are an expired or invalid Personal Access Token, or lack of write permissions on the target repository.
Fix: Generate a new PAT with repo scope at github.com/settings/tokens and try again.
I need to edit a file manually
Advanced users can use the File Tree in advanced mode to browse and edit JSON files directly. Use with caution — manual edits bypass validation. If something breaks, the validation sidebar will flag it.
Frequently Asked Questions
Yes. The core editor — creating items, paintings, and downloading packs — is free. Premium features (GitHub push, group collaboration, pack hosting) are available with a subscription.
No. PackStudio runs entirely in your browser. You only need a web browser and Minecraft Java Edition.
Yes. Use the Upload Pack feature on the sessions page to import an existing resource pack ZIP. PackStudio extracts it and lets you continue editing.
PackStudio targets Minecraft 26.2 and supports pack formats 73–88. You can change the target version in workspace settings.
Yes. The item wizard accepts Blockbench JSON exports directly. Upload the model JSON and your texture PNGs — PackStudio handles the rest.
PNG is the recommended format for textures and paintings. PNG supports transparency, which is essential for custom item textures.
PackStudio stores your pack files securely on its servers. Each workspace is isolated — your files are only accessible to you (and group members if you've shared the workspace). Guest sessions are cleaned up after 30 days.
Yes. Logged-in users can publish a pack, which generates a permanent public URL. Anyone with the link can download the pack — no account needed.
Your login token is stored in a secure HTTP-only cookie. Passwords are hashed with bcrypt. Pack files are isolated per workspace. We never share your data. In group contexts, only Minecraft usernames are shown — never real names or emails.
At this time, PackStudio is closed source and we do not have plans to accept external contributions. If you have feedback or feature requests, please open an issue on our GitHub issue tracker.
Ready to start creating? Jump into the editor and make your first custom item or painting.
Start Creating