Talking to moving NPCs in Minecraft 1.13Inventory Slot DetectionUsing spreadplayers to tp them to armorstand in unloaded chunkMinecraft block detection for a specific block/tp Relative CoordinatesMinecraft floor crafting deletes previous resultsMinecraft 1.13 /give command syntaxMinecraft 1.7.10 commands to 1.13?How to teleport players from one radius to the same relative locations in another?Need to make target selector only select one entityIs there any way to add a “wildcard” text to an execute command?

How do you deal with characters with multiple races?

Word for giving preference to the oldest child

How can I convert a linear narrative into a branching narrative?

Why did Windows 95 crash the whole system but newer Windows only crashed programs?

Narset, Parter of Veils interaction with Matter Reshaper

What is a good example for artistic ND filter applications?

Can I attune a Circlet of Human Perfection to my animated skeletons to allow them to blend in and speak?

How to have poached eggs in "sphere form"?

Scam? Checks via Email

Why does the Rust compiler not optimize code assuming that two mutable references cannot alias?

Why does one get the wrong value when printing counters together?

Bouncing map back into its bounds, after user dragged it out

Did Vladimir Lenin have a cat?

How did astronauts using rovers tell direction without compasses on the Moon?

Why don't short runways use ramps for takeoff?

Why would anyone ever invest in a cash-only etf?

Why are subdominants unstable?

Was the Psych theme song written for the show?

Circle symbol compatible with square and triangle

Is it okay for me to decline a project on ethical grounds?

Prepare a user to perform an action before proceeding to the next step

Is it possible for a particle to decay via gravity?

Embedded C - Most elegant way to insert a delay

How to prevent a single-element caster from being useless against immune foes?



Talking to moving NPCs in Minecraft 1.13


Inventory Slot DetectionUsing spreadplayers to tp them to armorstand in unloaded chunkMinecraft block detection for a specific block/tp Relative CoordinatesMinecraft floor crafting deletes previous resultsMinecraft 1.13 /give command syntaxMinecraft 1.7.10 commands to 1.13?How to teleport players from one radius to the same relative locations in another?Need to make target selector only select one entityIs there any way to add a “wildcard” text to an execute command?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















Context:



In order to trigger a chat message "from" NPCs - say villagers - when approaching them, I am using an always-active repeat-command block (A), a redstone-signal-sensitive impulse-command block (B) and a redstone comparator between them, pointing from A to B.



enter image description here



Since I want to let the NPCs run free, I can't use absolute coordinates, so what I'm currently doing is:



A: execute at @e[name=Gary] if entity @p[distance=..2]
B: execute at @e[name=Gary] run tellraw @a[distance=..2] "Hey!"


This results in the chat message "Hey!" to appear once for every player with distance 2 blocks or less to an entity named Gary as soon as a player is detected in that space.




Question:



Since it is odd that Gary talks to people in front of him as well as to people behind him, is it possible to alter the commands in a way that the center of the area in which players are detected (and in which players have to be to get the message) is not at exactly Gary's position, but 1 block in front of him?



enter image description here




Deliberations:




  • If Gary always stood in the same spot, it would be easy by using absolute coordinates like this:



    A: execute if entity @p[x=x_,y=y_,z=z_,distance=..2]
    B: tellraw @a[x=x_,y=y_,z=z_,distance=..2] "Hey!"


    x_, y_ and z_ being the desired coordinates 1 block in front of Gary.



  • Since version 1.13 it is possible to use caret notation for coordinates in some commands making them relative coordinates considering the command's executor's viewing direction, but it seems that target selector arguments only support absolute coordinates in Java edition.










share|improve this question


























  • See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

    – SpiceWeasel
    Jan 15 at 3:21











  • @SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

    – Maevur
    Jan 15 at 4:14











  • I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

    – Fabian Röling
    Jan 15 at 7:10











  • I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

    – Fabian Röling
    Jan 15 at 8:15











  • @Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

    – Maevur
    Jan 15 at 11:05

















2















Context:



In order to trigger a chat message "from" NPCs - say villagers - when approaching them, I am using an always-active repeat-command block (A), a redstone-signal-sensitive impulse-command block (B) and a redstone comparator between them, pointing from A to B.



enter image description here



Since I want to let the NPCs run free, I can't use absolute coordinates, so what I'm currently doing is:



A: execute at @e[name=Gary] if entity @p[distance=..2]
B: execute at @e[name=Gary] run tellraw @a[distance=..2] "Hey!"


This results in the chat message "Hey!" to appear once for every player with distance 2 blocks or less to an entity named Gary as soon as a player is detected in that space.




Question:



Since it is odd that Gary talks to people in front of him as well as to people behind him, is it possible to alter the commands in a way that the center of the area in which players are detected (and in which players have to be to get the message) is not at exactly Gary's position, but 1 block in front of him?



enter image description here




Deliberations:




  • If Gary always stood in the same spot, it would be easy by using absolute coordinates like this:



    A: execute if entity @p[x=x_,y=y_,z=z_,distance=..2]
    B: tellraw @a[x=x_,y=y_,z=z_,distance=..2] "Hey!"


    x_, y_ and z_ being the desired coordinates 1 block in front of Gary.



  • Since version 1.13 it is possible to use caret notation for coordinates in some commands making them relative coordinates considering the command's executor's viewing direction, but it seems that target selector arguments only support absolute coordinates in Java edition.










share|improve this question


























  • See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

    – SpiceWeasel
    Jan 15 at 3:21











  • @SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

    – Maevur
    Jan 15 at 4:14











  • I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

    – Fabian Röling
    Jan 15 at 7:10











  • I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

    – Fabian Röling
    Jan 15 at 8:15











  • @Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

    – Maevur
    Jan 15 at 11:05













2












2








2








Context:



In order to trigger a chat message "from" NPCs - say villagers - when approaching them, I am using an always-active repeat-command block (A), a redstone-signal-sensitive impulse-command block (B) and a redstone comparator between them, pointing from A to B.



enter image description here



Since I want to let the NPCs run free, I can't use absolute coordinates, so what I'm currently doing is:



A: execute at @e[name=Gary] if entity @p[distance=..2]
B: execute at @e[name=Gary] run tellraw @a[distance=..2] "Hey!"


This results in the chat message "Hey!" to appear once for every player with distance 2 blocks or less to an entity named Gary as soon as a player is detected in that space.




Question:



Since it is odd that Gary talks to people in front of him as well as to people behind him, is it possible to alter the commands in a way that the center of the area in which players are detected (and in which players have to be to get the message) is not at exactly Gary's position, but 1 block in front of him?



enter image description here




Deliberations:




  • If Gary always stood in the same spot, it would be easy by using absolute coordinates like this:



    A: execute if entity @p[x=x_,y=y_,z=z_,distance=..2]
    B: tellraw @a[x=x_,y=y_,z=z_,distance=..2] "Hey!"


    x_, y_ and z_ being the desired coordinates 1 block in front of Gary.



  • Since version 1.13 it is possible to use caret notation for coordinates in some commands making them relative coordinates considering the command's executor's viewing direction, but it seems that target selector arguments only support absolute coordinates in Java edition.










share|improve this question
















Context:



In order to trigger a chat message "from" NPCs - say villagers - when approaching them, I am using an always-active repeat-command block (A), a redstone-signal-sensitive impulse-command block (B) and a redstone comparator between them, pointing from A to B.



enter image description here



Since I want to let the NPCs run free, I can't use absolute coordinates, so what I'm currently doing is:



A: execute at @e[name=Gary] if entity @p[distance=..2]
B: execute at @e[name=Gary] run tellraw @a[distance=..2] "Hey!"


This results in the chat message "Hey!" to appear once for every player with distance 2 blocks or less to an entity named Gary as soon as a player is detected in that space.




Question:



Since it is odd that Gary talks to people in front of him as well as to people behind him, is it possible to alter the commands in a way that the center of the area in which players are detected (and in which players have to be to get the message) is not at exactly Gary's position, but 1 block in front of him?



enter image description here




Deliberations:




  • If Gary always stood in the same spot, it would be easy by using absolute coordinates like this:



    A: execute if entity @p[x=x_,y=y_,z=z_,distance=..2]
    B: tellraw @a[x=x_,y=y_,z=z_,distance=..2] "Hey!"


    x_, y_ and z_ being the desired coordinates 1 block in front of Gary.



  • Since version 1.13 it is possible to use caret notation for coordinates in some commands making them relative coordinates considering the command's executor's viewing direction, but it seems that target selector arguments only support absolute coordinates in Java edition.







minecraft minecraft-commands






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 28 mins ago









pppery

1,4351 gold badge7 silver badges20 bronze badges




1,4351 gold badge7 silver badges20 bronze badges










asked Jan 15 at 2:53









MaevurMaevur

134 bronze badges




134 bronze badges















  • See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

    – SpiceWeasel
    Jan 15 at 3:21











  • @SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

    – Maevur
    Jan 15 at 4:14











  • I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

    – Fabian Röling
    Jan 15 at 7:10











  • I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

    – Fabian Röling
    Jan 15 at 8:15











  • @Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

    – Maevur
    Jan 15 at 11:05

















  • See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

    – SpiceWeasel
    Jan 15 at 3:21











  • @SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

    – Maevur
    Jan 15 at 4:14











  • I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

    – Fabian Röling
    Jan 15 at 7:10











  • I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

    – Fabian Röling
    Jan 15 at 8:15











  • @Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

    – Maevur
    Jan 15 at 11:05
















See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

– SpiceWeasel
Jan 15 at 3:21





See if this works: /execute at @e[type=villager] as @s positioned ^ ^ ^2 run tellraw @a[distance=..2] "text":"Hey!"

– SpiceWeasel
Jan 15 at 3:21













@SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

– Maevur
Jan 15 at 4:14





@SpiceWeasel This seems to work if I paste it into the chat by myself standing in front of a villager (regardless of my viewing direction which is good), but running in a command block it does nothing. Isn't "at" the same as "positioned" with the difference that "at" uses all three, the position, the rotation and the dimension of the subject and "positioned" only uses the position? So "execute at @e[type=villager]" would be the same as "execute positioned as @e[type=villager] rotated as @e[type=villager] in minecraft:overworld" if the villager resides in the overworld?

– Maevur
Jan 15 at 4:14













I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

– Fabian Röling
Jan 15 at 7:10





I haven't read the entire question yet, but I'm wondering about your setup. When do you expect the comparator to activate? How I understand it, it would never do it.

– Fabian Röling
Jan 15 at 7:10













I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

– Fabian Röling
Jan 15 at 8:15





I can't access Minecraft currently, so my answer will have to wait some hours, but you can definitely use the caret notation with execute positioned, then you don't even need xyz in the selector anymore. Also, your two commands don't need to be two. Just make one, it does the same. Not sure what your comparator is supposed to do, but if you want to tell the player only once, just give him a tag and make the speaking command only target players without the tag.

– Fabian Röling
Jan 15 at 8:15













@Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

– Maevur
Jan 15 at 11:05





@Fabian: Why this setup? You guessed it: I want the message to only show up once instead of every tick the player is standing in the right area. (A) constantly checks if a player is standing in the area and if so, the comparator activates and stays activated as long as the player's position matches the condition. As a result, (B) gets only activated once, that is when the player enters the area and (A)'s output is true for the first time. Both of my example command pairs work perfectly.

– Maevur
Jan 15 at 11:05










1 Answer
1






active

oldest

votes


















0














You can use the caret notation (^) in execute positioned, which removes the need for the x, y and z target selectors entirely (except in some really niche cases). The command you need is this one:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2] "Hey!"



As a bonus, you can get rid of the comparator (and also prevent that players why enter the radius multiple times get the message multiple times) by putting this command after the first:



execute at @e[type=villager] positioned ^ ^ ^2 run tag @a[distance=..2] add heardVillagerTalk


and modifying the first command to:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2,tag=!heardVillagerTalk] "Hey!"


This will prevent the issue the comparator had that players could walk in and out of the area and get the message every time.




If you're using a state scoreboard in your map, you can of course do the same with that. Let's say that state 0 is before having "heard" the "villager" "talk" and state 1 is afterwards. Make this command the second command in the row:



execute at @e[type=villager] positioned ^ ^ ^2 if entity @a[distance=..2] run scoreboard players set $game state 1


And make both only activate in state 0. This assumes that your state scoreboard is called "state" and the holder "$game".






share|improve this answer

























  • Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

    – Fabian Röling
    Jan 15 at 17:23











  • Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

    – Maevur
    Jan 15 at 17:35













Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "41"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgaming.stackexchange.com%2fquestions%2f345056%2ftalking-to-moving-npcs-in-minecraft-1-13%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














You can use the caret notation (^) in execute positioned, which removes the need for the x, y and z target selectors entirely (except in some really niche cases). The command you need is this one:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2] "Hey!"



As a bonus, you can get rid of the comparator (and also prevent that players why enter the radius multiple times get the message multiple times) by putting this command after the first:



execute at @e[type=villager] positioned ^ ^ ^2 run tag @a[distance=..2] add heardVillagerTalk


and modifying the first command to:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2,tag=!heardVillagerTalk] "Hey!"


This will prevent the issue the comparator had that players could walk in and out of the area and get the message every time.




If you're using a state scoreboard in your map, you can of course do the same with that. Let's say that state 0 is before having "heard" the "villager" "talk" and state 1 is afterwards. Make this command the second command in the row:



execute at @e[type=villager] positioned ^ ^ ^2 if entity @a[distance=..2] run scoreboard players set $game state 1


And make both only activate in state 0. This assumes that your state scoreboard is called "state" and the holder "$game".






share|improve this answer

























  • Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

    – Fabian Röling
    Jan 15 at 17:23











  • Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

    – Maevur
    Jan 15 at 17:35















0














You can use the caret notation (^) in execute positioned, which removes the need for the x, y and z target selectors entirely (except in some really niche cases). The command you need is this one:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2] "Hey!"



As a bonus, you can get rid of the comparator (and also prevent that players why enter the radius multiple times get the message multiple times) by putting this command after the first:



execute at @e[type=villager] positioned ^ ^ ^2 run tag @a[distance=..2] add heardVillagerTalk


and modifying the first command to:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2,tag=!heardVillagerTalk] "Hey!"


This will prevent the issue the comparator had that players could walk in and out of the area and get the message every time.




If you're using a state scoreboard in your map, you can of course do the same with that. Let's say that state 0 is before having "heard" the "villager" "talk" and state 1 is afterwards. Make this command the second command in the row:



execute at @e[type=villager] positioned ^ ^ ^2 if entity @a[distance=..2] run scoreboard players set $game state 1


And make both only activate in state 0. This assumes that your state scoreboard is called "state" and the holder "$game".






share|improve this answer

























  • Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

    – Fabian Röling
    Jan 15 at 17:23











  • Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

    – Maevur
    Jan 15 at 17:35













0












0








0







You can use the caret notation (^) in execute positioned, which removes the need for the x, y and z target selectors entirely (except in some really niche cases). The command you need is this one:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2] "Hey!"



As a bonus, you can get rid of the comparator (and also prevent that players why enter the radius multiple times get the message multiple times) by putting this command after the first:



execute at @e[type=villager] positioned ^ ^ ^2 run tag @a[distance=..2] add heardVillagerTalk


and modifying the first command to:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2,tag=!heardVillagerTalk] "Hey!"


This will prevent the issue the comparator had that players could walk in and out of the area and get the message every time.




If you're using a state scoreboard in your map, you can of course do the same with that. Let's say that state 0 is before having "heard" the "villager" "talk" and state 1 is afterwards. Make this command the second command in the row:



execute at @e[type=villager] positioned ^ ^ ^2 if entity @a[distance=..2] run scoreboard players set $game state 1


And make both only activate in state 0. This assumes that your state scoreboard is called "state" and the holder "$game".






share|improve this answer













You can use the caret notation (^) in execute positioned, which removes the need for the x, y and z target selectors entirely (except in some really niche cases). The command you need is this one:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2] "Hey!"



As a bonus, you can get rid of the comparator (and also prevent that players why enter the radius multiple times get the message multiple times) by putting this command after the first:



execute at @e[type=villager] positioned ^ ^ ^2 run tag @a[distance=..2] add heardVillagerTalk


and modifying the first command to:



execute at @e[type=villager] positioned ^ ^ ^2 run tellraw @a[distance=..2,tag=!heardVillagerTalk] "Hey!"


This will prevent the issue the comparator had that players could walk in and out of the area and get the message every time.




If you're using a state scoreboard in your map, you can of course do the same with that. Let's say that state 0 is before having "heard" the "villager" "talk" and state 1 is afterwards. Make this command the second command in the row:



execute at @e[type=villager] positioned ^ ^ ^2 if entity @a[distance=..2] run scoreboard players set $game state 1


And make both only activate in state 0. This assumes that your state scoreboard is called "state" and the holder "$game".







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 15 at 17:22









Fabian RölingFabian Röling

10.9k3 gold badges18 silver badges50 bronze badges




10.9k3 gold badges18 silver badges50 bronze badges















  • Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

    – Fabian Röling
    Jan 15 at 17:23











  • Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

    – Maevur
    Jan 15 at 17:35

















  • Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

    – Fabian Röling
    Jan 15 at 17:23











  • Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

    – Maevur
    Jan 15 at 17:35
















Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

– Fabian Röling
Jan 15 at 17:23





Additional hint: Never use scoreboard players add for the game state, otherwise there might be bugs that increase it multiple times, skipping important states or even parts of the map. Credits warp!

– Fabian Röling
Jan 15 at 17:23













Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

– Maevur
Jan 15 at 17:35





Ah, so SpiceWeasel's code can either be fixed by swapping at with as or by leaving out as completely. Good to know! Also thanks for the instructions for tags and the game state (and the additional hint).

– Maevur
Jan 15 at 17:35

















draft saved

draft discarded
















































Thanks for contributing an answer to Arqade!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgaming.stackexchange.com%2fquestions%2f345056%2ftalking-to-moving-npcs-in-minecraft-1-13%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

Кастелфранко ди Сопра Становништво Референце Спољашње везе Мени за навигацију43°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.5588543°37′18″ СГШ; 11°33′32″ ИГД / 43.62156° СГШ; 11.55885° ИГД / 43.62156; 11.558853179688„The GeoNames geographical database”„Istituto Nazionale di Statistica”проширитиууWorldCat156923403n850174324558639-1cb14643287r(подаци)