Vous devez utiliser une combinaison de coordonnées de rotation relatives et un objectif de tableau d'affichage. Ce dernier consiste à s'assurer que les joueurs ne sont tournés qu'une fois par pas au-dessus d'un bloc de charbon.
Solution à objectif unique fantaisiste
Définissez votre objectif comme suit :
/scoreboard objectives add overCoal dummy
Sur une horloge 20Hz., exécutez les commandes suivantes pour régler le score :
/execute @a[r=10000] ~ ~ ~ detect ~ ~-2 ~ minecraft:coal_block 0 scoreboard players add @a[c=1] overCoal 3
/scoreboard players remove @a[score_overCoal_min=1] overCoal 2
/scoreboard players set @a[score_overCoal_min=3] overCoal 2
/scoreboard players set @a[score_overCoal=-1] overCoal 0
Cela peut sembler déroutant au premier abord, avec l'addition de 3 et la soustraction de 2, mais cela fonctionne. En gros, chaque fois que le joueur se trouve au-dessus d'un bloc de charbon, son score est incrémenté de +3-2=+1, mais seulement jusqu'à un maximum de 2 (3ème commandement). Au moment où le joueur descend, le score diminue de 2 (évitant ainsi la valeur de 1), jusqu'à un minimum de 0 (4ème commande).
Cela signifie qu'après l'exécution de ces 4 commandes, le score est de :
-
0 si le joueur n'est pas au-dessus d'un bloc de charbon.
-
1 si le joueur a été au-dessus d'un bloc de charbon pour exactement 1 tic.
-
2 si le joueur est resté plus longtemps au-dessus du bloc de charbon.
Il ne reste plus qu'à mettre une commande pour faire tourner les joueurs ayant un score d'exactement 1 :
/tp @a[score_overCoal=1,score_overCoal_min=1] ~ ~ ~ ~<R> ~
donde <R>
est le nombre de degrés que vous souhaitez faire pivoter le lecteur.
Solution plus simple à 2 objectifs
Si la solution ci-dessus était trop confuse à votre goût, une manière plus intuitive consiste à utiliser 2 objectifs :
/scoreboard objectives add overCoal dummy
/scoreboard objectives add overCoalTime dummy
Sur une horloge 20Hz., exécutez les commandes suivantes pour régler le score :
/scoreboard players set @a overCoal 0
/execute @a[r=10000] ~ ~ ~ detect ~ ~-2 ~ minecraft:coal_block 0 scoreboard players set @a[c=1] overCoal 1
/scoreboard players set @a[score_overCoal=0] overCoalTime 0
/scoreboard players add @a[score_overCoal_min=1] overCoalTime 1
Cette méthode permet d'obtenir les mêmes résultats que ci-dessus, mais pour overCoalTime
à la place.
0 votes
~360
1 votes
Tu sais que 360 est un cercle complet, n'est-ce pas ? Donc
~360
sera le même que~
. Vous devrez le configurer pour qu'il se répète x fois et les fasse pivoter de 360/x degrés à chaque fois.0 votes
Ahha, c'est vrai :P Pourriez-vous me donner un exemple de la commande ? Désolé
0 votes
Je ne sais pas vraiment, vous devez mettre en place la partie tp dans une boucle d'une manière ou d'une autre, je ne connais pas beaucoup Minecraft, donc je ne peux pas être plus précis que cela.
0 votes
Ah, ok, merci pour l'aide quand même ! Et je l'ai déjà mis en boucle, la commande a peut-être quelque chose à voir avec ça :D
0 votes
Vous voulez dire que la commande de la question tourne en boucle ?
0 votes
Oui, ce qui signifie qu'il exécutera la commande chaque fois que la boucle l'alimente, ce qui consiste à détecter si un joueur se trouve à 2 blocs au-dessus d'un bloc de charbon.
0 votes
Donc si vous changez le
360
dans votre commande pour~10
ou autre, il continuera à les faire tourner, je ne sais pas comment l'arrêter après 360 fois. J'espère que quelqu'un d'autre a une solution