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

deblokc

noob professionel
30 Janvier 2017
196
48
85
20
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?
 

Oromis

Command-blocker slimesque
Staff
Modérateur
Support
11 Février 2014
3 345
2
1 053
297
24
Bretagne
Tu peux passer par un timer grâce à un scoreboard ;)
 

Q-Jei

Pyromancien des Temps Anciens
31 Mai 2014
1 314
906
268
29
Sources Chaudes
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.
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
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ù...