How do you enchant and name items with /give using command blocks?
-
4Possible duplicate What are the basics of commands in Minecraft Java Edition?– ppperyCommented May 2 at 20:17
-
1This exact example happens to be used in the basic question. Duping there to reduce the amount of maintenance needed here as the answers are all outdated as of Minecraft 1.20.5– ppperyCommented May 2 at 20:18
5 Answers
Add this to your command
{display:{Name:"Test Name"},ench:[{id:19,lvl:1}]}
It will give you a Item with the name "Test Name" with knockback 1.
You use this:
ench[{id:(enchantment_id,lvl:enchantment_level)}]
like that for enchantments. For names, use this:
display:{Name="Name of item"}
Remember to use curly brackets and colons inbetweeen.
If you just need the template for whatever reason, here it is pieced together:
/give @p (item id or minecraft:name) 1 0 {display:{Name:"(Name of item)"}, ench:[{id:(enchant id),lvl(1-sideways 8)},[{id:(enchant id),lvl(1-sideways 8)}, repeat enchant block...]}
-
-
Enchantment 19 is Knockback, Sharpness is 16. Although I think
minecraft:sharpness
also works, if you don't want to remember numbers.– MrLemonCommented Sep 29, 2014 at 21:28 -
-
I think you mean:
display:{Name:"Name of item"}
Note the colon.– JSiderisCommented Jan 16, 2017 at 15:45 -
As of 1.13,
ench
is calledEnchantments
andid
s are now strings instead of numbers.– ppperyCommented Aug 10, 2018 at 0:36
To add on to 3dsboy08's answer, you can find a list that tells you which id corresponds to which enchantment here. Also, in order to add multiple enchantments at once, you need to use the following syntax inside the "ench" part:
ench:[{id:0,lvl:4},{id:8,lvl:3}]
As a "full" example, the following command would give you a stick called "Irritating Stick" with Sharpness V and Knockback II:
/give excalibur223 stick 1 0 {display:{Name:"Irritating Stick"},ench:[{id:16,lvl:5},{id:19,lvl:2}]}
If you are interested, you can find a table of other NBT tags you can add to items here.
Updated answer as of Java 1.16:
/give @p minecraft:bow{display:Name:{'[{"text":"chuck mc norris"}]'}}
or
/give @p minecraft:bow{display:{Name:"{\"text\":\"chuck mc norris\"}"}}
Mojang updated some of their JSON sequencing for the give command, and now the old name argument doesn't work like it used to. This is the updated command, giving you a bow whose name is "chuck mc norris".
-
In 1.14+, you can actually use single quoted strings instead of double quoted strings. So instead of:
Name:"{\"text\":\"This is ExpertCoder14's computer\"}"
try this instead:Name:'[{"text":"This is ExpertCoder14\'s computer."}]'
Commented Jul 28, 2020 at 17:42 -
hmm, so strings don't work the same way in minecraft as in programming (i.e. java)? that's interesting. I had never noticed because I'm used to using double quotes.– naisuu42Commented Jul 28, 2020 at 17:45
-
Yes, they've changed it to be more like Python, accepting both single and double quoted strings. With all NBT JSON text string tags, they are now converted into single quoted
'
format, no matter how you type them. So typingName:"\"hello world\""
would automatically be converted intoName:'"hello world"'
. Commented Jul 28, 2020 at 17:47 -
I don't really see why though, the answer would remain completely unchanged in that value is not added with the edit.– naisuu42Commented Jul 28, 2020 at 20:17
-
ah i see, i'll put that as the first option and the original as the second. i didn't realize that it replaces the backslashes, sorry. big brainfart.– naisuu42Commented Jul 28, 2020 at 20:36
The following command would give the nearest player a bow called Chuck Norris' Gun
with the enchantments 48 (Power), 51 (Infinity), 50 (Flame) and 34 (Unbreaking). These enchantments are all level 10000.
/give @p bow 1 0 {display:{Name:"Chuck Norris' Gun"},ench:[{id:48,lvl:10000},{id:51,lvl:10000},{id:50,lvl:10000},{id:34,lvl:10000}]}
This command would give the nearest player a book called Death Note
with the enchantment 16 (Sharpness) level 100.
/give @p book 1 0 {display:{Name:"Death Note"},ench:[{id:16,lvl:100}]}