mojira.dev
MC-69822

Command help strings and feedback say "player" when entities are applicable as well

The bug

Many commands which used to work with players only were changed to now work with all entities, however their help strings and feedback still uses the world "player".

Affected translations with suggested fix

Based on this comment

commands.effect.usage=/effect <entity> <effect> [seconds] [amplifier] [hideParticles] OR /effect <entity> clear
commands.enchant.usage=/enchant <entity> <enchantment ID> [level]
commands.kill.usage=/kill [entity]
commands.tp.usage=/tp [target entity] <destination entity> OR /tp [target entity] <x> <y> <z> [<yaw> <pitch>]
commands.tp.notSameDimension=Unable to teleport because entities are not in the same dimension
commands.scoreboard.players.set.usage=/scoreboard players set <entity> <objective> <score> [dataTag]
commands.scoreboard.players.add.usage=/scoreboard players add <entity> <objective> <count> [dataTag]
commands.scoreboard.players.remove.usage=/scoreboard players remove <entity> <objective> <count> [dataTag]
commands.scoreboard.players.reset.usage=/scoreboard players reset <entity> [objective]
commands.scoreboard.players.reset.success=Reset scores of entity %s
commands.scoreboard.players.resetscore.success=Reset score %s of entity %s
commands.scoreboard.players.list.count=Showing %s tracked entities on the scoreboard:
commands.scoreboard.players.list.empty=There are no tracked entities on the scoreboard
commands.scoreboard.players.list.player.empty=Entity %s has no scores recorded
commands.scoreboard.players.test.usage=/scoreboard players test <entity> <objective> <min> [max]
commands.scoreboard.players.tag.usage=/scoreboard players tag <entity> <add|remove|list> <tagName> [dataTag]
commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$s members
commands.scoreboard.teams.list.player.count=Showing %s member(s) in team %s:
commands.scoreboard.teams.list.player.empty=Team %s has no members
commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant members
commands.scoreboard.teams.empty.success=Removed all %s member(s) from team %s
commands.scoreboard.teams.join.usage=/scoreboard teams join <team> [entity]
commands.scoreboard.teams.join.success=Added %s member(s) to team %s: %s
commands.scoreboard.teams.join.failure=Could not add %s member(s) to team %s: %s
commands.scoreboard.teams.leave.usage=/scoreboard teams leave [entity]
commands.scoreboard.teams.leave.success=Removed %s member(s) from their teams: %s
commands.scoreboard.teams.leave.failure=Could not remove %s member(s) from their teams: %s
commands.testfor.usage=/testfor <entity> [dataTag]
commands.spreadplayers.usage=/spreadplayers <x> <z> <spreadDistance> <maxRange> <respectTeams true|false> <entity ...>
commands.spreadplayers.spreading.players=Spreading %s entities %s blocks around %s,%s (min %s blocks apart)
commands.spreadplayers.success.players=Successfully spread %s entities around %s,%s
commands.spreadplayers.info.players=(Average distance between entities is %s blocks apart after %s iterations)
commands.spreadplayers.failure.players=Could not spread %s entities around %s,%s (too many players for space - try using spread of at most %s)

Notes

The error message "You must specify which player you wish to perform this action on." (commands.generic.player.unspecified) which appears for example when you use only /kill without an entity argument in the command block does not fit always either.

Some commands like /effect or /enchant only work with entities being a subclass of EntityLivingBase. Therefor something like "mob" might fit better for those commands.

The selector @r now works with entities if you provide the type argument. Therefor the help text "Use "@r" to target random player" (advMode.randomPlayer) in the command block GUI is not correct anymore. Changing it to "entity" might however be misleading as well because the selector without the type argument will only pick random players.

As suggested the help for /kill should not use the pipe character to not cause confusion because for example /replaceitem <block|entity> acts differently when you provide "block" compared to when you provide "entity" as argument value.

Linked issues

Comments 7

Take a resourcepack and change the text string then! The rest of us don't care if it only says player!

I care. The solution "Use a resource pack" is not a valid solution, just like "Use a mod" isn't. It's still a bug. Confirmed in 1.8.3.

Confirmed for

  • 1.8.6

From MC-80769:

Affected commands:
/execute @p ~ ~ ~ /kill You must...which player... (see also MC-78779)
Command block GUI "@r to target random player" (might be wrong as you can add type=!Player)
/help spreadplayers
/help effect
/help testfor
/help tp
Note that it is also inconsistent, for example:
/help kill: /kill [player|entity] (It is a little bit irritating as commands like /replaceitem have <block|entity> as argument)
/help execute: /execute <entity>
/scoreboard teams join <team> [player]
/scoreboard players set <player> <objective> <score> [dataTag]

And all the other scoreboard commands

commands.effect.usage=/effect <entity> <effect> [seconds] [amplifier] [hideParticles] OR /effect <entity> clear
commands.enchant.usage=/enchant <entity> <enchantment ID> [level]
commands.kill.usage=/kill [entity]
commands.tp.usage=/tp [target entity] <destination entity> OR /tp [target entity] <x> <y> <z> [<yaw> <pitch>]
commands.tp.notSameDimension=Unable to teleport because entities are not in the same dimension
commands.scoreboard.players.set.usage=/scoreboard players set <entity> <objective> <score> [dataTag]
commands.scoreboard.players.add.usage=/scoreboard players add <entity> <objective> <count> [dataTag]
commands.scoreboard.players.remove.usage=/scoreboard players remove <entity> <objective> <count> [dataTag]
commands.scoreboard.players.reset.usage=/scoreboard players reset <entity> [objective]
commands.scoreboard.players.reset.success=Reset scores of entity %s
commands.scoreboard.players.resetscore.success=Reset score %s of entity %s
commands.scoreboard.players.list.count=Showing %s tracked entities on the scoreboard:
commands.scoreboard.players.list.empty=There are no tracked entities on the scoreboard
commands.scoreboard.players.list.player.empty=Entity %s has no scores recorded
ommands.scoreboard.players.test.usage=/scoreboard players test <entity> <objective> <min> [max]
commands.scoreboard.players.tag.usage=/scoreboard players tag <entity> <add|remove|list> <tagName> [dataTag]
commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$s members
commands.scoreboard.teams.list.player.count=Showing %s member(s) in team %s:
commands.scoreboard.teams.list.player.empty=Team %s has no members
commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant members
commands.scoreboard.teams.empty.success=Removed all %s member(s) from team %s
commands.scoreboard.teams.join.usage=/scoreboard teams join <team> [entity]
commands.scoreboard.teams.join.success=Added %s member(s) to team %s: %s
commands.scoreboard.teams.join.failure=Could not add %s member(s) to team %s: %s
commands.scoreboard.teams.leave.usage=/scoreboard teams leave [entity]
commands.scoreboard.teams.leave.success=Removed %s member(s) from their teams: %s
commands.scoreboard.teams.leave.failure=Could not remove %s member(s) from their teams: %s
commands.testfor.usage=/testfor <entity> [dataTag]
commands.spreadplayers.usage=/spreadplayers <x> <z> <spreadDistance> <maxRange> <respectTeams true|false> <entity ...>
commands.spreadplayers.spreading.players=Spreading %s entities %s blocks around %s,%s (min %s blocks apart)
commands.spreadplayers.success.players=Successfully spread %s entities around %s,%s
commands.spreadplayers.info.players=(Average distance between entities is %s blocks apart after %s iterations)
commands.spreadplayers.failure.players=Could not spread %s entities around %s,%s (too many players for space - try using spread of at most %s)

Here's the fixed language lines.

Small note: for team related feedback (like commands.scoreboard.teams.join.success) I changed it to members rather then entities.
Other note, there's a inconsistence looking at spreadplayers (always says playerS or teamS instead of player(s) or team(s), created a seperate ticket for that (MC-106675).

With that also fixed:

commands.spreadplayers.spreading.players=Spreading %s entity (entities) %s blocks around %s,%s (min %s blocks apart)
commands.spreadplayers.success.players=Successfully spread %s entity (entities) around %s,%s

Can confirm for MC 1.12.1.

Is this still an issue post-brigadier? (I don't have time to check myself unfortunately)

All of these seem to be fixed with the new command system in 1.13.

[Mod] redstonehelper

Erik Broes

Confirmed

command, entity, player, syntax

Minecraft 1.8-pre3, Minecraft 1.8, Minecraft 1.8.3, Minecraft 1.8.6, Minecraft 15w40b, Minecraft 1.10.2, Minecraft 16w33a, Minecraft 16w43a, Minecraft 1.12 Pre-Release 6, Minecraft 1.12.1

Minecraft 18w03b

Retrieved