Minecraft Bedrock Resource Pack Textures with AI: 16x16 Blocks, Items and a Consistent Palette
Build a Minecraft Bedrock resource pack with AI textures: the folder layout and manifest from Microsoft docs, 16x16 rules and palette consistency.
A Minecraft Bedrock resource pack is a folder with a manifest.json, an optional pack_icon.png and a textures folder whose files replace vanilla textures by name. Generate each replacement at 16x16 in one locked palette, save it with the vanilla filename (for example textures/blocks/dirt.png), then activate the pack on a world.
The layout below follows Microsoft's Introduction to Resource Packs tutorial. This guide is for Bedrock Edition; Java Edition packs use a different structure.
The pack layout
During development, Bedrock reads packs from the development_resource_packs folder inside com.mojang. On Windows, Microsoft's tutorial opens it from %appdata%\Minecraft Bedrock\users\shared\games\com.mojang. Your pack is a folder inside it:
com.mojang/
development_resource_packs/
My_RESOURCE_Pack/
manifest.json
pack_icon.png (128x128 in Microsoft's sample pack)
textures/
blocks/
dirt.png (replaces the vanilla dirt texture)
items/
... (item textures, same filename rule)
The pack folder can have any name. The subfolders must be spelled exactly as above, because Minecraft looks for them by path. Microsoft's sample resource pack on GitHub has the same shape, and Mojang's bedrock-samples repository holds the vanilla resource pack, including textures/blocks, textures/items and the terrain_texture.json and item_texture.json files that map texture names to paths.
The manifest
The manifest tells Minecraft what the pack is. This is the shape from Microsoft's tutorial:
{
"format_version": 2,
"header": {
"description": "My dirt resource pack Add-On!",
"name": "My Resource Pack",
"uuid": "<FIRST GENERATED UUID>",
"version": [1, 0, 0],
"min_engine_version": [1, 16, 0]
},
"modules": [
{
"description": "My First Add-On!",
"type": "resources",
"uuid": "<SECOND GENERATED UUID>",
"version": [1, 0, 0]
}
]
}
The header and the module need two different UUIDs. Reusing one UUID is the most common reason a pack does not appear in the game; Microsoft's troubleshooting section lists it first.
Texture rules that matter
- 16x16 is the default resolution. Microsoft's tutorial creates the dirt texture as a 16 pixel by 16 pixel PNG.
- The filename is the link. A texture replaces vanilla content when it has the same name and path as the vanilla file. Your
dirt.pngapplies to every dirt block, and it does not touch grass blocks, because those use different texture names. - Pack order decides conflicts. Microsoft calls this pack stacking: when two active packs both provide
dirt.png, the one applied later wins. Move your pack above others while testing. - Blocks are opaque squares, items are cutouts. A block face fills all 256 pixels. An item icon is a shape on a transparent background.
Replacing items versus adding new ones
A resource pack changes how existing things look. To reskin a vanilla item, save your PNG under textures/items with the same filename the vanilla pack uses, exactly like the dirt example. The vanilla pack also includes item_texture.json and terrain_texture.json, which map short texture names to file paths; open them to find the file behind an item or block when the name is not obvious.
Brand new items and blocks are a different job. They need a behavior pack that defines them, plus resource pack entries for their textures. Start with reskins: they teach you the folder rules and give you a full palette test before you write any add-on logic.
Why palette consistency is the real job
At 16x16 every pixel is a decision, and the eye compares textures constantly because blocks sit next to each other by the thousand. A pack where stone uses cool grays, cobblestone uses warm grays and dirt has a different contrast curve looks broken even if each texture is good on its own. Pick the palette before the first texture, and keep every texture inside it.
A practical palette plan for a themed pack:
- Choose 16 to 32 colors in total, grouped into ramps: stone, earth, wood, foliage, metal, accent.
- Give each ramp 4 or 5 steps from shadow to highlight, with the same lightness spacing across ramps.
- Decide one light direction and use it on every texture.
- Keep noise density similar between materials that sit together, such as dirt, gravel and stone.
Generating the textures with Sprixen
- Create a project for the pack with the pixel art style, 16x16 resolution and your palette passed as a list of hex colors. Every texture generated in the project receives that palette as its color guide.
- Set pixel perfect to "on" for the project. That forces nearest neighbor resizing, which keeps hard pixel edges at 16x16.
- Generate block faces with background removal skipped. A block face should fill the whole square, so pass
skipBgRemoval: trueon the API or MCP call. Describe it as a texture: "mossy stone block face, flat, seamless, top-left light". - Generate items with background removal on. Item icons need transparency, which the default pipeline provides. Pack mode generates up to 8 named items in one request, which keeps a set of tools or ores visually related.
- Snap stray colors. Open the texture with your palette loaded as an indexed palette in your editor and convert to it, so a near-miss gray becomes the exact ramp color. The universal-modder CLI does the same with
um sprite palette --fromand a reference sprite. - Check seams in a 3x3 preview. Tile the block texture nine times. Any visible line or repeated blotch will be visible across a whole wall in game.
- Save with vanilla names into
textures/blocksandtextures/items. Use the vanilla resource pack from Mojang's samples to look up the exact filenames you are replacing.
Each sprite variant costs 2 credits, and an item pack of up to 8 items also costs 2. Twelve block faces plus one 8-item pack come to 26 credits, which fits in the $10 Pro plan's 200 monthly credits with plenty of room for revisions. New accounts start with 6 free credits, enough to test the palette on a few blocks first.
Seamless block faces
A block face has to tile on all four sides. Generators tend to darken edges or place a feature in the center, which repeats as a grid across a wall. Fixes that work at 16x16:
- Offset the texture by 8 pixels horizontally and vertically, repaint the seam that appears in the middle, and offset it back. GIMP has this under Layer, Transform, Offset; Photoshop has it under Filter, Other, Offset.
- Avoid single bright pixels near the edges; they pair up with their neighbor across the seam.
- Make two or three variants of common blocks and compare them in the 3x3 preview before choosing one.
Test the pack in game
Microsoft's activation steps:
- Launch Minecraft and select Play.
- Select Create New World.
- Under Settings, open Add-Ons, then Resource Packs.
- Open the My Packs list, select your pack and click Activate.
- Create the world and look at your blocks.
If the pack does not appear, check the two UUIDs and the JSON syntax. If it appears but nothing changes, check the folder spelling and that each filename matches the vanilla file it replaces.
For a deeper look at how detail and readability change with resolution, see the pixel art sprite sizes guide. To start a palette-locked pack, open the Sprixen generator.
FAQ
What resolution are Minecraft Bedrock textures?
The default is 16x16, and Microsoft's resource pack tutorial creates its example block texture at 16 by 16 pixels. Keep every texture in a pack at the same resolution so blocks match.
Why doesn't my Bedrock resource pack show up?
The most common cause is a malformed manifest.json. Check that the header and the module use two different UUIDs, that file extensions are really .json, and that the braces and brackets are valid JSON.
How do I replace a specific block texture?
Save your PNG with the same name and path as the vanilla texture, such as textures/blocks/dirt.png, and activate the pack. Look up exact filenames in the vanilla resource pack from Mojang's bedrock-samples repository.
Can AI keep a whole texture pack in one palette?
It gets close when the palette lives at the project level. In Sprixen you pass the palette as hex colors on the project and every texture generated there uses it as its color guide. Finish by snapping each texture to the exact palette in your editor and reviewing blocks side by side for matching contrast and noise.
Should block textures have a transparent background?
No. A block face fills the whole 16x16 square, so skip background removal for blocks. Item icons are the opposite and need transparency around the shape.
Generate sprites that actually match.
Style-locked sprite generation keeps every character, tile and animation in your project visually consistent. 6 free credits on signup, no credit card required.
Related Articles
How to Make Custom Terraria Item and NPC Sprites with AI (tModLoader Guide)
Make Terraria mod sprites with AI: tModLoader texture naming, right-facing item art, vertical NPC sheets, frame counts and a full workflow.
Stardew Valley Mod Sprites with AI: Items, Portraits and NPC Sheets for Content Patcher
Make Stardew Valley mod art with AI: 16x32 NPC frames, 64x64 portraits, item sprite indexes and the Content Patcher Load and EditData setup.
Modding PC Games with Claude Code: Give Your Agent Consistent Sprites
Use universal-modder and Claude Code to mod games you own, and add the Sprixen MCP server so the agent gets one-style sprites and animation sheets.