NPC Mannequin

Create a NPC Mannequin using Commands!

Supported Versions:

1.21.10+

Commands by Row:

Row 1

1. [impulse] /summon minecraft:mannequin ~ ~ ~ {Tags:["NPC"],data:{text:"none"}}

Row 2

2. [repeat] /execute as @e[tag=NPC] at @s unless entity @e[type=minecraft:interaction,distance=..1,sort=nearest] run summon minecraft:interaction ~ ~ ~ {height:2f,Tags:["NPCInteraction"]}
3. [chain] /execute as @e[tag=NPCInteraction] at @s if entity @e[tag=NPC,sort=nearest,limit=1,distance=1..1.1] run kill @s
4. [chain] /execute as @e[tag=NPC] at @s facing entity @p[distance=..10] feet run tp @s ~ ~ ~ ~ ~

Row 3

5. [repeat] /execute as @e[tag=NPC,nbt={data:{text:"none"}}] at @s unless entity @e[type=minecraft:text_display,distance=..2,sort=nearest] run summon minecraft:text_display ~ ~2 ~ {Tags:["NPCText"],text:[{"atlas":"minecraft:gui","sprite":"social_interactions/mute_button"},"\n[",{"atlas":"minecraft:gui","sprite":"toast/mouse"},"YES] [",{"atlas":"minecraft:gui","sprite":"toast/right_click"},"NO]"]}
6. [chain] /execute as @e[tag=del] at @s run scoreboard players add @s timer 1
7. [chain] /execute as @e[tag=del] at @s if score @s timer matches 100.. run data modify entity @e[tag=NPC,distance=..3,limit=1] data.text set value "none"
8. [chain] /execute as @e[tag=del] at @s if score @s timer matches 100.. run kill @s
9. [chain] /execute as @e[tag=NPCText] at @s facing entity @p[distance=..10] eyes run tp @s ~ ~ ~ ~ ~
10. [chain] /execute as @e[tag=NPCText] at @s if entity @e[tag=NPC,distance=3..3.1] run kill @s

Row 4

11. [repeat] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"none"}},distance=..1] on attacker run data modify entity @e[tag=NPCText,distance=..3,limit=1] text set value ["Do you like Minecraft?\n[",{"atlas":"minecraft:gui","sprite":"toast/mouse"},"YES] [",{"atlas":"minecraft:gui","sprite":"toast/right_click"},"NO]"]
12. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"none"}},distance=..1] on attacker run data modify entity @e[tag=NPC,nbt={data:{text:"none"}},distance=..3,limit=1] data.text set value "minecraft"
13. [chain conditional] /execute as @e[type=interaction,tag=NPCInteraction] run data remove entity @s attack
14. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"minecraft"}},distance=..1] on attacker run data merge entity @e[tag=NPCText,distance=..3,limit=1] {Tags:["NPCText","del"],text:["ME TOO!\n"]}
15. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"minecraft"}},distance=..1] on attacker at @s run give @p diamond
16. [chain conditional] /execute as @e[type=interaction,tag=NPCInteraction] run data remove entity @s attack
17. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"minecraft"}},distance=..1] on target run data modify entity @e[tag=NPCText,distance=..3,limit=1] text set value ["WHAT! Don't you LOVE me?\n[",{"atlas":"minecraft:gui","sprite":"toast/mouse"},"OF COURSE I LOVE YOU] [",{"atlas":"minecraft:gui","sprite":"toast/right_click"},"GET LOST]"]
18. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"minecraft"}},distance=..1] on target run data modify entity @e[tag=NPC,nbt={data:{text:"minecraft"}},distance=..3,limit=1] data.text set value "love"
19. [chain conditional] /execute as @e[type=interaction,tag=NPCInteraction] run data remove entity @s interaction
20. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"love"}},distance=..1] on attacker run data merge entity @e[tag=NPCText,distance=..3,limit=1] {Tags:["NPCText","del"],text:["Oh...\n"]}
21. [chain conditional] /execute as @e[type=interaction,tag=NPCInteraction] run data remove entity @s attack
22. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"love"}},distance=..1] on target run data merge entity @e[tag=NPCText,distance=..3,limit=1] {Tags:["NPCText","del"],text:["GO AWAY MEANIE!\n"]}
23. [chain] /execute as @e[type=interaction,tag=NPCInteraction] at @s if entity @e[tag=NPC,nbt={data:{text:"love"}},distance=..1] on target run tp @p[distance=..10] ~ ~10 ~
24. [chain conditional] /execute as @e[type=interaction,tag=NPCInteraction] run data remove entity @s interaction

Preview

impulse
repeat
chain
chain
repeat
chain
chain
chain
chain
chain
repeat
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain

Video

Too lazy to copy and paste each command?