CommandBlock Résolu [1.13] Comment détecter que l'on appuie sur un bouton avec /execute ?

ewenadou

Cueilleur de roses
28 Octobre 2017
6
1
14
Bretagne !
Bonjour,

J'ai un problème je voudrais faire en sorte que quand j'appuie sur un bouton ( ou plusieurs ), cela soit détecté par un commande block, pour ensuite exécuter une fonction ( sans que le commande block soit dessous le bouton, si je veux ça c'est parce que je ne peux pas le faire sinon on le verras ) !
Vous savez comment faire ?
Tout ceci est en 1.13 donc plus de /testfor mais en revanche le /execute à repris les fonctionnalité de ce dernier je crois ?

Merci d'avance !
 

Daminator4113

Êtres humain (je crois)
15 Juin 2016
80
35
71
20
Il te faut minimum 2 commandes, celle(s) qui détecte(nt) lorsque le bouton est pressé, et celle qui remet le bouton en position désactivé, sinon ta commande sera répété le temps que le bouton soit désactivé.

Tu commences par mettre cette commande que tu complètes par ce que tu veux (tu peux la dupliquer autant de fois que tu en auras besoin) :
Code:
/execute if block <coordonnées> <type de bouton>_button[powered=true] run <ta commande>
Et tu finis par cette commande qui devra s'exécuter en dernier, et évité de répété toutes les commandes plusieurs fois :
Code:
/execute if block <coordonnées> <type de bouton>_button[powered=true] run setblock <coordonnées> <type de bouton>_button[facing=<orientation du bouton>,face=<la surface sur laquel il est posé>,powered=false]
pour les conditions entre [ ] tu peux les voir quand tu fais F3, en haut à droite de l'écran en dessous de "Targeted Block"
 
Dernière édition:

ewenadou

Cueilleur de roses
28 Octobre 2017
6
1
14
Bretagne !
Salut !

Merci de ton aide, mais quand j'essaye de faire la première commande il ne se passe absolument rien !

J'ai fait un test dont voici le screen :



La commande que j'ai faite :

Code:
execute if block 70 1 -71 stone_button[powered=true] run msg @a hello

ou

execute if block 70 1 -71 #minecraft:buttons[powered=true] run msg @a hello
Aucun des deux ne fonctionne ... Il y a-t-il une configuration à faire dans le commande block ( = toujours actif/par la redstone ... ) ?

Merci d'avance !
 

Daminator4113

Êtres humain (je crois)
15 Juin 2016
80
35
71
20
Tu dois mettre ces commandes à la chaine, avec un repeat_command_block et un chain_command_block, en toujours actif, ou avec la redstone, ça dépend de ce que tu fais avec ^^
Sans titre 1.png
 
Dernière édition:

ewenadou

Cueilleur de roses
28 Octobre 2017
6
1
14
Bretagne !
Merci, j'ai enfin réussi !!

Pour résumer il faut taper la commande :
Code:
/execute if block <coordonnées> <type de bouton>_button[powered=true] run <ta commande>
( qui détecte l'appuie sur le bouton et lance la commande souhaité ) ,dans un commande block en répétition et toujours actif . celui-ci tourné vers un deuxième commande bloc qui est en mode chaîne et toujours actif avec la commande :
Code:
/execute if block <coordonnées> <type de bouton>_button[powered=true] run setblock <coordonnées> <type de bouton>_button[facing=<orientation du bouton>,face=<la surface sur laquelle il est posé>,powered=false]
( qui remplace le bouton pour n'exécuter qu'une seule fois la commande )

Merci grandement de ton aide !!
Bonne continuation ;)
 
Dernière édition:
  • J'aime
Reactions: Daminator4113

Flymeth

Bucheron
16 Février 2020
1
0
6
20
Bonjour ! Je viens de tomber sur le forum, et j'aimerai savoir:
Comment puis-je, quand un joueur appui sur le bouton, lui ajouter un score (dans mon cas ce serait un score de mort=1).

En suivant les conseils de ce forum, j'ai mis cette commande dans un commande block (repeat + toujours actif), mais rien ne se passe lorsque j'appui sur le bouton en question:
/execute if block 276 128 213 minecraft:stone_button[powered=true] run scoreboard players set @s mort 1

Des solutions à ce problème ?
(Si possible m'ajouter discord: Flymeth#6242)
 

Daminator4113

Êtres humain (je crois)
15 Juin 2016
80
35
71
20
C'est parce que le "set @s" renvoie au command_bloc.
Le mieux c'est d'executer à la position du bouton, et de prendre le joueur le plus proche.
Ça donne ça : /execute positioned 276 128 213 if block ~ ~ ~ stone_button[powered=true] run scoreboard players set @p mort 1

Le seul problème avec ça, c'est que si un joueur est plus proche du bouton que celui qui appuie dessus, ça va prendre ce joueur là, et pas celui qui appuie.
 

Pour voir moins d'annonces créez un compte ou connectez-vous.