0

I'm working on an adventure map. I have characters that when you click on a sign that says: (Character name here) Click to talk. I used this command:

/give @p sign 1 0 {
    BlockEntityTag: {
        Text1: "{\"text\":\"Wounded Man\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"say Wounded man: Who are you? Doesn't matter. There's a storm coming I suggest You find Shelter.\"}}",
        Text2: "{\"text\":\"Click to talk\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"say New Quest: Find Shelter\"}}",
        Text3: "{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"particle fireworksSpark\"}}"
    },
    display: {
        Name: "Custom Sign"
    }
}

I wanted it to say: (@) Wounded Man: A storm's coming I suggest you find shelter..., but instead it says: (LordSockingham) Wounded man: A storm's coming and I suggest you find shelter.... Any ideas?

  • I think this might be a result of the fact that it's the player that is performing the /say command. There might be some magic you could work with a /tellraw, but I'm not certain – Unionhawk Mar 27 '16 at 15:30
1

The problem is that the player is the one who is running the command with JSON commands. One possible workaround is the /trigger command:

Before anything else, once:

/scoreboard objectives add TalkToWoundedGuy trigger
/summon ArmorStand ~ ~ ~ {CustomName:"O"}

On a repeatingCommandBlock/chainCommandBlock loop, in order:

/scoreboard players enable @a TalkToWoundedGuy
/execute @p[score_TalkToWoundedGuy_min=1] ~ ~ ~ execute @e[name=O] ~ ~ ~ [all the 'say' commands you want, on different command blocks]
/execute @p[score_TalkToWoundedGuy_min=1] ~ ~ ~ [all the other commands you want, on different command blocks]
/scoreboard players set @a TalkToWoundedGuy 0

On the sign:

{Text1:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger TalkToWoundedGuy set 1\"}}"
1

You should use the /tellraw command instead of /say for greater control of content.

For example, you would cause the player to run the following command:

/tellraw @a {"text":"[Wounded Man]: A storm's coming I suggest you find shelter..."}

Output:

[Wounded Man]: A storm's coming I suggest you find shelter...

You /give command would instead become:

/give @p sign 1 0 {BlockEntityTag: {Text1: "{\"text\":\"Wounded Man\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"tellraw @a {\\\"text\\\":\\\"[Wounded Man]: A storm's coming I suggest you find shelter...\\\"}\"}}",Text2: "{\"text\":\"Click to talk\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"say New Quest: Find Shelter\"}}",Text3: "{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"particle fireworksSpark\"}}"},display: {Name: "Custom Sign"}}
-2

Tellraw runs from the console I believe. That should work if you're able to implement it into your script. 😀

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.