• 7/17/25 7:40 pm
- 1.5k views • 9 today
- 4
- 2
- 2
52
Demo Datapack:
https://www.mediafire.com/file/ssq4p7...
Demo Resource Pack:
https://www.mediafire.com/file/we3m5t...
The following text is just a text version of the video.
You want a pattern that will dazzle and beguile, but the vanilla Minecraft patterns aren’t up to the task.
There are six things you’re going to need to create your own custom banner patterns in Minecraft, and they’re all going to be in either your datapack or resource pack. I have included example packs in the description you can use as templates.
1. Texture.
The first is the texture of your banner pattern. It must go in your resource pack at this exact address. Usually minecraft is very good at letting you use as many subfolders are you like, but in this instance, it’s a firm rule that your textures must be in this folder with no sub folders being used.
Address:
resourcepacks\<resource_pack_name>\assets\<namespace>\textures\entity\banner
Let’s talk about the image itself. It must be mapped correctly, meaning every pixel is aligned to the texture called AAAmap.png in the resource pack I provided. Notice how the bottom rim is actually at the top. This is why when you look at the textures for the vanilla banner patterns, there’s this weird line at the top of some of them.
For the colors, you can use whatever colors you like and it would work, although it’s not going to look however you intended it if the player uses purple dye instead of white. For the vanilla textures, they only use two colors: #FFFFFF with the opacity set to fully opaque, and #F2F2F2 with the opacity set to 191/255. In keeping with the vanilla texture pack, I also only use these colors most of the time. I make some exceptions.
The last thing about the texture is that I want to warn you about an error you might get called Bad PNG Signature. I’m not an expert here, but as far as I can tell, if you have used multiple layers in whatever image manipulation software you’re using in this file, it will cause that error, even if the image has been flatten to one layer before saving. This is why I always create a fresh new file and paste my texture there when I’m ready to save, every time.
2. banner_pattern
The second thing you need is the banner_pattern in your datapack at this address. This is what lets the datapack recognize the banner pattern. This is an experimental feature, which means that the reload command isn’t going to reload banner pattern, you need to exit the world and re-enter every time.
Address:
datapacks\Custom_Banner_Patterns_Demo_Datapack\data\custom_banner_patterns\banner_pattern
The JSON here is very simple, this is the asset in your resource pack folder with the namespace and the file name, and a translation_key so the game knows what to name that layer. I like this naming format because it resembles how the Minecraft names their translation strings.
JSON:
{ "asset_id": "custom_banner_patterns:spiral", "translation_key": "block.custom_banner_patterns.banner.spiral"}
3. The lang file
That translation_key in the banner_pattern JSON file isn’t going to do anything unless we use it. Going back to the resource pack, you’re going to create a file in this address and name it en_us.json. I’m assuming you’re going to want to use the default English language, you can name your file other things for other languages if you like. If you’re using the UK English language and there’s no UK English translation, it’ll fallback to the default US English translation, so I’m using the US translation for everything.
Address:
\resourcepacks\<resource_pack_name>\assets\<namespace>\lang\en_us.json
In it, there is JSON for every color of your pattern, just like this. Now the game knows what to call this pattern when it’s dyed and won’t just display a translation_key.
JSON:
{ "block.custom_banner_patterns.banner.spiral.black": "Black Spiral", "block.custom_banner_patterns.banner.spiral.blue": "Blue Spiral", "block.custom_banner_patterns.banner.spiral.brown": "Brown Spiral", "block.custom_banner_patterns.banner.spiral.cyan": "Cyan Spiral", "block.custom_banner_patterns.banner.spiral.gray": "Gray Spiral", "block.custom_banner_patterns.banner.spiral.green": "Green Spiral", "block.custom_banner_patterns.banner.spiral.light_blue": "Light Blue Spiral", "block.custom_banner_patterns.banner.spiral.light_gray": "Light Gray Spiral", "block.custom_banner_patterns.banner.spiral.lime": "Lime Spiral", "block.custom_banner_patterns.banner.spiral.magenta": "Magenta Spiral", "block.custom_banner_patterns.banner.spiral.orange": "Orange Spiral", "block.custom_banner_patterns.banner.spiral.pink": "Pink Spiral", "block.custom_banner_patterns.banner.spiral.purple": "Purple Spiral", "block.custom_banner_patterns.banner.spiral.red": "Red Spiral", "block.custom_banner_patterns.banner.spiral.white": "White Spiral", "block.custom_banner_patterns.banner.spiral.yellow": "Yellow Spiral"}
4. tags/banner_pattern
Technically, you could use the give command to give yourself a banner with this pattern and it would work. If that’s all you ever wanted, then you’re done at this point. However, I’m going to assume you want players to be able to create banners with this pattern without using the give command. You want players to use the loom, and for that, we need to use the provides_banner_pattern item component.
Item components are things like durability damage and enchantments, things that distinguish items from other items with the same id. The ability to put an item into a loom and have it provide a banner pattern is another kind of component and we’re going to use that so players can use this pattern on their own.
But before we do that, we need a tag of banner patterns. Tags are groups of things, like a group of blocks, a group of items, a group of entity types. You can also create a group of banner patterns and we’re going to do that because the “provides_banner_pattern” component does not accept individual banner_patterns. It only accepts tags. I think it’s the only area of the game where you must provide a tag, and individual things are not accepted.
So the tag goes here, and here’s my example of a tag. It’s very simple, it’s just a list of banner patterns with their namespaces and ids. As far as I know, there’s no strict limit to how long a tag can be, so feel free to put hundreds in here if you feel like it.
Address:
datapacks\<datapack_name\data\<namespace>\tags\banner_pattern
JSON:
{ "values": [ "custom_banner_patterns:spiral", "custom_banner_patterns:pigstep" ]}
Tags are not experimental, so the reload command will reload all tags.
5. recipe and/or item_modifier
This next part depends on how you want players to acquire the item that has the provides_banner_pattern component. You can have them craft it with a recipe, or maybe they already have some item, and we’re modifying what components that item has after the player has already obtained it.
My example recipe is very simple, a shapeless recipe where the player has red_glazed_terracotta and a piece of paper, and they craft that together to get a red_glazed_terracotta with that component.
Address:
datapacks\<datapack_name>\data\<namespace>\recipe
JSON:
{ "type": "minecraft:crafting_shapeless", "ingredients": [ "minecraft:red_glazed_terracotta", "minecraft:paper" ], "result": { "id": "minecraft:red_glazed_terracotta", "components": { "minecraft:provides_banner_patterns": "#custom_banner_patterns:example_tag" }, "count": 1 }}
My example item_modifier uses the set_components function to add the provides_banner_pattern component, and we can use the /item command to modify the item, although we would have to know what inventory slot the player has the item in. That’s an exercise I leave to you.
Address:
datapacks\<datapack_name>\data\<namespace>\item_modifier
JSON:
[ { "function": "minecraft:set_components", "components": { "minecraft:provides_banner_patterns": "#custom_banner_patterns:example_tag" } }]
Recipes and item modifiers are not experimental, so the reload command works here too.
Recipes and item modifiers are not the only way to get players to obtain items with components. Perhaps you'd like to manipulate loot_table so they can find them in chests, or perhaps you'd like to change villager trades so they can trade for them, but these won't be covered in this tutorial.
The last thing to note with the item that has the component is that it will not stack with other items that are otherwise exactly the same. If you have an item component on a block and you place and mine that block, the component will vanish.
---
Ok, so we made the texture, the datapack recognizes the texture, it has a translation string, we have some way of letting players create that pattern on a loom, and we made a tag of banner patterns so that would work, but there’s still one thing missing.
As it stands right now, if the player were to put that banner on a shield, it would create a black void shield. We want to avoid that, so the sixth thing you need is a shield texture.
6. Shield Texture
Back in the resource pack, create a file at this address. Your texture must match this mapping.
Address:
resourcepacks\<resource_pack_name>\assets\<namespace>\textures\entity\shield
Now with our banner pattern on our shield we’re ready to strike fear and confusion in the hearts of our enemies. Huzzah!
And that’s everything you need to create your own banner patterns in Minecraft. I have provided both a datapack and resource pack in the description you can use as a template if you like.
And now YOU TOO can be a banner pattern artist. Bye.
https://www.mediafire.com/file/ssq4p7...
Demo Resource Pack:
https://www.mediafire.com/file/we3m5t...
The following text is just a text version of the video.
You want a pattern that will dazzle and beguile, but the vanilla Minecraft patterns aren’t up to the task.
There are six things you’re going to need to create your own custom banner patterns in Minecraft, and they’re all going to be in either your datapack or resource pack. I have included example packs in the description you can use as templates.
1. Texture.
The first is the texture of your banner pattern. It must go in your resource pack at this exact address. Usually minecraft is very good at letting you use as many subfolders are you like, but in this instance, it’s a firm rule that your textures must be in this folder with no sub folders being used.
Address:
resourcepacks\<resource_pack_name>\assets\<namespace>\textures\entity\banner
Let’s talk about the image itself. It must be mapped correctly, meaning every pixel is aligned to the texture called AAAmap.png in the resource pack I provided. Notice how the bottom rim is actually at the top. This is why when you look at the textures for the vanilla banner patterns, there’s this weird line at the top of some of them.
For the colors, you can use whatever colors you like and it would work, although it’s not going to look however you intended it if the player uses purple dye instead of white. For the vanilla textures, they only use two colors: #FFFFFF with the opacity set to fully opaque, and #F2F2F2 with the opacity set to 191/255. In keeping with the vanilla texture pack, I also only use these colors most of the time. I make some exceptions.
The last thing about the texture is that I want to warn you about an error you might get called Bad PNG Signature. I’m not an expert here, but as far as I can tell, if you have used multiple layers in whatever image manipulation software you’re using in this file, it will cause that error, even if the image has been flatten to one layer before saving. This is why I always create a fresh new file and paste my texture there when I’m ready to save, every time.
2. banner_pattern
The second thing you need is the banner_pattern in your datapack at this address. This is what lets the datapack recognize the banner pattern. This is an experimental feature, which means that the reload command isn’t going to reload banner pattern, you need to exit the world and re-enter every time.
Address:
datapacks\Custom_Banner_Patterns_Demo_Datapack\data\custom_banner_patterns\banner_pattern
The JSON here is very simple, this is the asset in your resource pack folder with the namespace and the file name, and a translation_key so the game knows what to name that layer. I like this naming format because it resembles how the Minecraft names their translation strings.
JSON:
{ "asset_id": "custom_banner_patterns:spiral", "translation_key": "block.custom_banner_patterns.banner.spiral"}
3. The lang file
That translation_key in the banner_pattern JSON file isn’t going to do anything unless we use it. Going back to the resource pack, you’re going to create a file in this address and name it en_us.json. I’m assuming you’re going to want to use the default English language, you can name your file other things for other languages if you like. If you’re using the UK English language and there’s no UK English translation, it’ll fallback to the default US English translation, so I’m using the US translation for everything.
Address:
\resourcepacks\<resource_pack_name>\assets\<namespace>\lang\en_us.json
In it, there is JSON for every color of your pattern, just like this. Now the game knows what to call this pattern when it’s dyed and won’t just display a translation_key.
JSON:
{ "block.custom_banner_patterns.banner.spiral.black": "Black Spiral", "block.custom_banner_patterns.banner.spiral.blue": "Blue Spiral", "block.custom_banner_patterns.banner.spiral.brown": "Brown Spiral", "block.custom_banner_patterns.banner.spiral.cyan": "Cyan Spiral", "block.custom_banner_patterns.banner.spiral.gray": "Gray Spiral", "block.custom_banner_patterns.banner.spiral.green": "Green Spiral", "block.custom_banner_patterns.banner.spiral.light_blue": "Light Blue Spiral", "block.custom_banner_patterns.banner.spiral.light_gray": "Light Gray Spiral", "block.custom_banner_patterns.banner.spiral.lime": "Lime Spiral", "block.custom_banner_patterns.banner.spiral.magenta": "Magenta Spiral", "block.custom_banner_patterns.banner.spiral.orange": "Orange Spiral", "block.custom_banner_patterns.banner.spiral.pink": "Pink Spiral", "block.custom_banner_patterns.banner.spiral.purple": "Purple Spiral", "block.custom_banner_patterns.banner.spiral.red": "Red Spiral", "block.custom_banner_patterns.banner.spiral.white": "White Spiral", "block.custom_banner_patterns.banner.spiral.yellow": "Yellow Spiral"}
4. tags/banner_pattern
Technically, you could use the give command to give yourself a banner with this pattern and it would work. If that’s all you ever wanted, then you’re done at this point. However, I’m going to assume you want players to be able to create banners with this pattern without using the give command. You want players to use the loom, and for that, we need to use the provides_banner_pattern item component.
Item components are things like durability damage and enchantments, things that distinguish items from other items with the same id. The ability to put an item into a loom and have it provide a banner pattern is another kind of component and we’re going to use that so players can use this pattern on their own.
But before we do that, we need a tag of banner patterns. Tags are groups of things, like a group of blocks, a group of items, a group of entity types. You can also create a group of banner patterns and we’re going to do that because the “provides_banner_pattern” component does not accept individual banner_patterns. It only accepts tags. I think it’s the only area of the game where you must provide a tag, and individual things are not accepted.
So the tag goes here, and here’s my example of a tag. It’s very simple, it’s just a list of banner patterns with their namespaces and ids. As far as I know, there’s no strict limit to how long a tag can be, so feel free to put hundreds in here if you feel like it.
Address:
datapacks\<datapack_name\data\<namespace>\tags\banner_pattern
JSON:
{ "values": [ "custom_banner_patterns:spiral", "custom_banner_patterns:pigstep" ]}
Tags are not experimental, so the reload command will reload all tags.
5. recipe and/or item_modifier
This next part depends on how you want players to acquire the item that has the provides_banner_pattern component. You can have them craft it with a recipe, or maybe they already have some item, and we’re modifying what components that item has after the player has already obtained it.
My example recipe is very simple, a shapeless recipe where the player has red_glazed_terracotta and a piece of paper, and they craft that together to get a red_glazed_terracotta with that component.
Address:
datapacks\<datapack_name>\data\<namespace>\recipe
JSON:
{ "type": "minecraft:crafting_shapeless", "ingredients": [ "minecraft:red_glazed_terracotta", "minecraft:paper" ], "result": { "id": "minecraft:red_glazed_terracotta", "components": { "minecraft:provides_banner_patterns": "#custom_banner_patterns:example_tag" }, "count": 1 }}
My example item_modifier uses the set_components function to add the provides_banner_pattern component, and we can use the /item command to modify the item, although we would have to know what inventory slot the player has the item in. That’s an exercise I leave to you.
Address:
datapacks\<datapack_name>\data\<namespace>\item_modifier
JSON:
[ { "function": "minecraft:set_components", "components": { "minecraft:provides_banner_patterns": "#custom_banner_patterns:example_tag" } }]
Recipes and item modifiers are not experimental, so the reload command works here too.
Recipes and item modifiers are not the only way to get players to obtain items with components. Perhaps you'd like to manipulate loot_table so they can find them in chests, or perhaps you'd like to change villager trades so they can trade for them, but these won't be covered in this tutorial.
The last thing to note with the item that has the component is that it will not stack with other items that are otherwise exactly the same. If you have an item component on a block and you place and mine that block, the component will vanish.
---
Ok, so we made the texture, the datapack recognizes the texture, it has a translation string, we have some way of letting players create that pattern on a loom, and we made a tag of banner patterns so that would work, but there’s still one thing missing.
As it stands right now, if the player were to put that banner on a shield, it would create a black void shield. We want to avoid that, so the sixth thing you need is a shield texture.
6. Shield Texture
Back in the resource pack, create a file at this address. Your texture must match this mapping.
Address:
resourcepacks\<resource_pack_name>\assets\<namespace>\textures\entity\shield
Now with our banner pattern on our shield we’re ready to strike fear and confusion in the hearts of our enemies. Huzzah!
And that’s everything you need to create your own banner patterns in Minecraft. I have provided both a datapack and resource pack in the description you can use as a template if you like.
And now YOU TOO can be a banner pattern artist. Bye.
More like this
6677540
6

Have something to say?
(Guessing it to be 1.20.5 and above)
Remember to Save & Exit to reload your banner_patterns in your datapack, and Ctrl + T refreshes resources, which needs to be done on top of saving & exiting.