0 votes

Détecter un compte-gouttes avec des objets dedans sans /testfor

J'utilisais cette commande pour utiliser une table d'artisanat personnalisée :

/execute @a ~ ~ ~ detect ~ ~-1 ~ dropper 1 {Items:[{id:minecraft:blaze_rod,Slot:1b,Count:1b,Damage:0s},{id:minecraft:blaze_rod,Slot:4b,Count:1b},{id:minecraft:stick,Slot:7b,Count:1b}]} /scoreboard players set @p LSC 1

Mais j'obtiens ce message d'erreur lorsque je me place sur un compte-gouttes avec ces éléments :

Impossible d'exécuter '{Items :[{id:Minecraft:blaze_rod,Slot:1b,Count:1b,Damage:0s},{id:Minecraft:blaze_rod,Slot:4b,Count:1b},{id:Minecraft:stick,Slot:7b,Count:1b}]} /scoreboard players set @p LSC 1' as TrevMCC38

Au fait, je suis dans 16w06a

4voto

Skylinerw Points 12529

El detect fonction de /execute n'accepte pas les données NBT, seulement un ID et une valeur de dommage.

Vous devrez plutôt utiliser /testforblock et si vous avez besoin d'une convivialité multijoueur, vous pouvez le mélanger avec CommandStats.

Conditions préalables :

Objectif pour contenir la valeur de CommandStats.

/scoreboard objectives add CraftSuccess dummy

L'application de la AffectedBlocks aux joueurs, qui déterminera le score du joueur en fonction de la réussite des commandes qui affectent spécifiquement les blocs, telles que /testforblock . Il peut être nécessaire de faire fonctionner une horloge dans le cas où de nouveaux joueurs peuvent se joindre à tout moment.

/stats entity @a set AffectedBlocks @a[c=1] CraftSuccess

Pour que CommandStats puisse modifier le score d'une cible, cette dernière doit être suivie au préalable sur le tableau d'affichage. Il peut également être nécessaire de faire fonctionner une horloge pour la même raison que précédemment.

/scoreboard players add @a CraftSuccess 0

Détection :

Les éléments suivants doivent être exécutés dans l'ordre numérique.

  1. Faire en sorte que les joueurs exécutent les /testforblock commandement.

    /execute @a ~ ~ ~ /testforblock ~ ~-1 ~ minecraft:dropper 1 {Items:[{id:"minecraft:blaze_rod",Slot:1b,Count:1b,Damage:0s},{id:"minecraft:blaze_rod",Slot:4b,Count:1b},{id:"minecraft:stick",Slot:7b,Count:1b}]}
  2. En conséquence, le joueur exécutant aura son propre score "CraftSuccess" égal au nombre de blocs trouvés par l'outil /testforblock commande. Si la commande échoue, leur score est fixé à 0. Si la commande réussit, leur score est fixé à 1. Vous ciblez ensuite les joueurs en fonction de leur score.

    /scoreboard players set @a[score_CraftSuccess_min=1] LSC 1

En passant, vous devriez jamais mélange @a en tant qu'exécuteur testamentaire et @p comme cible de la commande imbriquée si vous avez l'intention de cibler le même joueur. Alors que @a peut cibler les joueurs morts, @p ne peut pas. Cela signifie que si l'exécuteur peut exécuter /execute tant qu'ils sont morts, ils ne se cibleront pas eux-mêmes et viseront plutôt le joueur vivant le plus proche. Cela peut nuire gravement à la précision et éventuellement briser un mécanisme sensible à la cible.

La solution consiste à utiliser le même sélecteur lorsque cela est nécessaire. Pour cibler un joueur mort, vous utiliserez @a en tant qu'exécuteur avec @a[c=1] comme sélecteur imbriqué :

/execute @a ~ ~ ~ /say @a[c=1]

Pour les joueurs vivants uniquement, vous utiliseriez @e[type=Player] avec @p :

/execute @e[type=Player] ~ ~ ~ /say @p

C'est également pour cette raison que les cibles de CommandStat doivent utiliser @a[c=1] lorsque vous travaillez avec des joueurs, car cela permet d'éviter qu'une cible involontaire ne voie son score modifié.

-1voto

C.C. Points 298

Utilisez les comparateurs car ils détectent si quelque chose a des blocs dedans et envoie un signal de redstone.

-2voto

pppery Points 3211

Aucun hacks n'est nécessaire pour tester les blocs avec NBT dans Minecraft 1.13 et les versions plus récentes :

/execute as @a at @s if block ~ ~-1 ~ dropper{Items:[{id:"minecraft:blaze_rod",Slot:1b,Count:1b},{id:"minecraft:blaze_rod",Slot:4b,Count:1b},{id:"minecraft:stick",Slot:7b,Count:1b}]} run scoreboard players set @p LSC 1

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X