первое что нам надо так это создать самого НПС (манекен)
/summon mannequin ~ ~ ~ {Invulnerable:1b,PersistenceRequired:1b,Tags:["chelik"]} (я сделал тег chelik, вы же можете поменять на свой или вообще убрать)
теперь делаем так чтобы он не мог двигаться
/tp @e[type=minecraft:mannequin,tag=chelik] ~ ~ ~ (вместо ~ пиши свои координаты X Y Z)
а теперь спауним сущность interaction
/summon interaction ~ ~ ~ {height:2f,Tags:["pkm"]} (вместо ~ пиши координаты манекена X Y Z)
делаем так что при нажатие ПКМ происходил диалог
/execute as @e[type=minecraft:interaction,tag=pkm] on target run dialog show @a {type:"minecraft:confirmation",title:"что ты хотел?",yes:{label:"просто поговорить",action:{type:"minecraft:run_command",command:"/tellraw @a \"<NPC> не хочу разговаривать\""}},no:{label:"ничего",action:{type:"minecraft:run_command",command:"/tellraw @a \"<NPC> ну и ладно\""}}}
(делать свои диалоги на этом сайте https://misode.github.io/dialog/)
ещё нужно сделать чтобы дата сущности interaction очищалась чтоб не было спама диалогами
/execute as @e[type=minecraft:interaction,tag=pkm] run data remove entity @s interaction
ну вот и всё! Осталось только подкорректировать вам под себя или так оставить
надеюсь было полезно :)