Je veux faire en sorte qu'une carotte sur bâton exécute des commandes, mais je veux que différentes carottes sur bâton aient des noms différents et exécutent des commandes différentes. Est-ce possible ?
Réponses
Trop de publicités?Pour les commandes d'exécution si vous tenez l'objet, vous pouvez utiliser as
o at
le lecteur, et utiliser le nbt
pour vérifier la présence de la SelectedItem
du joueur.
execute as @a[nbt = {SelectedItem: {id: "minecraft:carrot_on_a_stick", tag: {custom_tag: 1b}}}] at @s run say test
Voici un bref résumé :
-
as
change l'exécuteur de la commande comme l'entité, ce qui signifie que vous pouvez utiliser@s
pour cibler le soi de l'exécuteur juste après avoir déclaré en tant que qui l'exécuter. -
at
modifie le contexte positionnel de la commande, ce qui signifie qu'elle exécutera la commande par rapport à l'entité. - Il n'est pas nécessaire d'utiliser les deux, mais cela dépend vraiment de ce que vous faites.
-
@a[...]
indique des joueurs, ce qui signifie qu'il ne sélectionnera que des joueurs. -
nbt
vérifie la NBT de l'entité, qui dans ce cas, nous vérifions la NBT du joueur.SelectedItem
étiquette -
{SelectedItem: {id: "minecraft:carrot_on_a_stick", tag: {custom_tag: 1b}}}
fait référence à l'élément qui va être vérifié. Nous allons définir leid
à la chaîne"minecraft:carrot_on_a_stick"
puisque nous allons vérifier cet élément. Quant àtag
il s'agit de la NBT de l'élément. Dans ce cas, nous allons vérifier la présence de l'élémentcustom_tag: 1b
NBT dans l'article.
L'élément de l'exemple fourni peut être obtenu en exécutant cette commande :
give <player> minecraft:carrot_on_a_stick{custom_tag: 1b}
Maintenant, si vous voulez vérifier si un joueur a interagi avec cette carotte spécifique sur un bâton, vous aurez besoin d'un tableau d'affichage avec l'attribut minecraft.used:minecraft.carrot_on_a_stick
critère. Quant au pourquoi, c'est un bug qui serait utile dans notre cas.
Après avoir créé l'objectif, vous vérifierez si un joueur a un score dans l'objectif du tableau d'affichage, en utilisant la fonction scores
argument du sélecteur de cible. Ainsi, la commande entière ressemblerait à ceci :
execute as @a[nbt = {SelectedItem: {id: "minecraft:carrot_on_a_stick", tag: {custom_tag: 1b}}}, scores = {<objective> = 1..}] at @s run say test
-
<objective>
étant le nom de votre objectif de tableau d'affichage nouvellement créé. -
1..
est un intervalle qui vérifierait si le joueur a 1 ou plus de valeur dans le dit objectif
Ensuite, vous remettez à zéro le score du joueur dans l'objectif en exécutant un /scoreboard players
commandement :
scoreboard players reset @a[scores = {<objective> = 1..}] <objective>
Vous pourriez utiliser quelque chose comme /execute at @a[nbt={SelectedItem:{id:"minecraft:<id>",name:"<name>"}}] run <command>
afin d'exécuter la commande, en remplaçant tout ce qui est dans <> par l'option appropriée. Vous pouvez exécuter ceci autant de fois que vous le souhaitez, en changeant ces 3 sélecteurs, tant que ceux-ci sont dans des blocs de commande répétitifs, soit constamment alimentés, soit avec "toujours actif" activé.