What's wrong with my Minecraft command? [1.18+]
-
This is my Minecraft command and I want to give the deity sword a name but my command doesn't work. Can you fix it?
/give @p netherite_sword{Enchantments:[{id:sharpness,lvl:5},{id:knockback,lvl:2},{id:fire_aspect,lvl:2},{id:looting,lvl:2},{id:sweeping,lvl:3},{id:unbreaking,lvl:3},{id:mending,lvl:1}]}{display:{Name:'[{"text":"Wool's Deity Sword"}]'}} 1
-
Corrected version
/give @p netherite_sword{Enchantments:[{id:sharpness,lvl:5},{id:knockback,lvl:2},{id:fire_aspect,lvl:2},{id:looting,lvl:2},{id:sweeping,lvl:3},{id:unbreaking,lvl:3},{id:mending,lvl:1}],display:{Name:'[{"text":"Wool's Deity Sword"}]'}} 1
Like it has already been commented, always say what error you are getting, as your problem might not even be an error problem, but a "wrong" answer instead (for example, it gives you the item but no custom name).
Looking from the command, it looks like it has been parsed wrongfuly, meaning the amount of and/or order of
{
's and[
's are wrong, let us expand the command and take a look:///
By expaning, like @Fredy31 has mentioned in the comments, open this line of command in any text editor and:
Every time you find an opening
{
or[
you create a new line withenter
and ident it with blank spaces withtab
. Every time you have to tab, make sure to tab further than the last one.If you find
,
's, simply create a new line with same ident space as the last line.Every time you find a closing
}
or]
, also create a new line but, this time, reduce the identation by one.
////
/give @p netherite_sword{ 1
How to check if a nbt is right?
The idea begind these structures (Called https://en.wikipedia.org/wiki/JSON#Syntax ), is:
{ } Are dictionaries, meaning they expect a group of
key:value
where value can be another a data (integer, string...), dictionary or a list. Each item (key:values
) is separated by,
's. They start with a{
and end with}
[ ] are lists. They recive only a
value
separated by,
's. Value, again, can be any data, dictionaries or other lists.
So what does exactly the game expect? Let's ignore what is inside
Enchantments
anddisplay
:/give @p netherite_sword{ Enchantments:[], 1
Now, filling what is inside
display
andEnchantments
:/give @p netherite_sword{ Enchantments:[ {id:sharpness,lvl:5}, {id:knockback,lvl:2}, {id:fire_aspect,lvl:2}, {id:looting,lvl:2}, {id:sweeping,lvl:3}, {id:unbreaking,lvl:3}, {id:mending,lvl:1} ], display:{ Name:'[ {"text":"Wool's Deity Sword"} ]' } }
1
Ps.: Even if your json is well structured, you stil have to respect the https://minecraft.fandom.com/wiki/Player.dat_format#Item_structure . Here,
Name
must be insidedisplay
. BothEnchantments
anddisplay
stay close to the root.{ Enchantments:[], display:{Name:[]} }