Résolu Comment mettre un délai dans une commande?

  • Auteur de la discussion Auteur de la discussion deblokc
  • Date de début Date de début

deblokc

noob professionel
30 Janvier 2017
196
48
85
21
trou du cul du monde
orig05.deviantart.net
Bonjour.

je suis actuellement en train de créer une map skywars en 1.12 uniquement avec des commandes blocks, et j'aimerais savoir s'il est possible de mettre un délai entre l'action de plusieurs commandes blocks.

exemple, un message qui apparaît au fur et à mesure.

est-ce possible juste avec des commandes blocks (sans redstone) ou me faut il de la redstone quand même?
 
Tu peux passer par un timer grâce à un scoreboard ;)
 
Si tu es allergique aux scoreboards, les répéteurs sont tes amis, à condition d'avoir un bon timing et que ton système ne soit pas trop gourmand, histoire de contourner les risques de lags.

Même avec "setblock", il est possible de faire apparaître un bloc de redstone connecté à plusieurs fils/répéteurs que tu peux retarder à ta guise. De cette manière, tu peux générer une série de commandes en chaîne avec le délai que tu veux.
 
Il a dit "sans redstone", la solution d'Oromis fonctionnera sans générer de lags.

Moi quand j'ai besoin de ça je fait comme ça...
Code:
# On crée un scoreboard pour commencer
/scoreboard objectives add Timer dummy
# On crée une entitée pour compter et éxécuter
/summon minecraft:armor_stand ~ ~ ~ {CustomName:timerCache}

# On mesure en tick, on ajoute donc un tick par seconde au timer cette commande doit être en mode répétition
/scoreboard players add @e[name=timerCache] Timer 1
# Dès que les 50 ticks sont atteints (objectif modifiable), on éxécute une commande ou plusieurs, doit être en mode chaine
/execute @e[name=timerCache,score_Timer_min=50] ~ ~ ~ /say Time Out :)
# Si il s'agit d'une boucle, il faut remettre le timer à 0 (en chaine juste après les actions a effectuer
/scoreboard players set @e[name=timerCache,score_Timer_min=50] Timer 0

# Il est possible d’exécuter des commandes à un endroit précis du timer et donc d'utiliser un seul timer pour plusieurs actions à des moments différents
/execute @e[name=timerCache,score_Timer_min=25,score_Timer=25] ~ ~ ~ /say Semi Time Out :)

Il aurait été possible d'utiliser un joueur pour compter les ticks, mais l'ennui c'est que tu a précisé "Skywars", donc une map multijoueurs rendant l'utilisation du joueur dangereuse dans le cas ou le joueur sur lequel on compte se déconnecte...

En espérant avoir été utile, oui j'ai testé sur la 1.12 au cas où...