NBT это формат хранения данных, в командах можно ставить и проверять любой NBT вообще.
Я в команде проверяю, что у сущности яйца есть тег Item, которым в яйце полностью описывается стек, из которого его запустили (не только у яйца такое есть, у любых бросаемых/стреляемых штук).
У итемов NBT структура состоит из id (строковое айди, типа minecraft:egg), Count (кол-во итемов в стеке, в яйце вроде всегда 1) и tag - дополнительный NBT объект, в котором можно хранить всё что угодно - игра в определенных (гуглибельных) структурах хранит там кастомное имя, энчанты, всякие дополнительные теги (типа что этим итемом можно ломать эти блоки в adventure режиме или там что предмет неломаемый).
В моём случае я проверяю что там есть значение SpecialEgg и оно равно 1 (и тип значения байт, он же булеан если мы только 1 и 0 используем).
Крч, tl;dr, просто сделай
/give @s minecraft:egg{SpecialEgg:1b}
)
Ну и в принципе SpecialEgg можно поменять на другой текст, чтобы тебе через месяц было понятно, шо оно такое было, и вообще использовать любую другую структуру, типа спец названия или энчанта к примеру)
Это ответ на вопрос почему SpecialEgg и почему 1b - потому что захотел
Надо как-то отличать спец-яйца от обычных и у ключа должно быть значение.
Кстати, можно по идее спавнить свой minecraft:egg у которого в нбт будет Item какой-то другой (типа что-то с текстурой крюка) и оно юудет отображать его, а не яйцо, это как с энтити падающего песка по идее