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;
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.
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?
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
|
show 8 more comments
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.
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?
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
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 withexecute positioned
, then you don't even needxyz
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
|
show 8 more comments
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.
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?
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
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.
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?
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
minecraft minecraft-commands
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 withexecute positioned
, then you don't even needxyz
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
|
show 8 more comments
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 withexecute positioned
, then you don't even needxyz
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
|
show 8 more comments
1 Answer
1
active
oldest
votes
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".
Additional hint: Never usescoreboard 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 swappingat
withas
or by leaving outas
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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".
Additional hint: Never usescoreboard 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 swappingat
withas
or by leaving outas
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
add a comment |
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".
Additional hint: Never usescoreboard 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 swappingat
withas
or by leaving outas
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
add a comment |
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".
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".
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 usescoreboard 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 swappingat
withas
or by leaving outas
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
add a comment |
Additional hint: Never usescoreboard 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 swappingat
withas
or by leaving outas
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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 needxyz
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