CommandBlock Simuler le fait des pousser des caisses en bois.

Kococraft

Architecte en herbe
25 Août 2014
37
9
69
29
01440 Viriat
Avez-vous déjà joué à un jeu où l'on pouvait pousser des caisses afin de débloquer des passages secret en les mettant sur une plaque de pression ou des blocs de couleur ? Et aussi comment réaliser un escaliers avec plusieurs caisses ?
Ce que je vous propose sur ce tutorial, c'est de savoir comment pousser une caisse ou deux caisses (empiler l'un sur l'autre) afin de réaliser plusieurs petits jeux.

;) Je vous mais les couleurs correspondant au type de command_block :
repeating_command_block
chain_command_block
command_block
Et je vous mettrai un dièse (#) pour indiquer lorsque le command_block est en inconditionnel.
Puis les explications viendront ensuite.

ATTENTION : j'ai remplacer "planks" par "blanks" pour éviter les emoji : :p ( : p )

En toute première information, il faut savoir que l'on doit déplacer les caisses dans toute les directions (Nord/Sud/Est/Ouest soit x et z en valeur positif et négatif). Dans les commandes que je présenterai ci-dessous, je mettrai les valeurs dans la direction du z positif (normalement le Nord).

Commandes pour une caisse :

Tout d'abord créez un scoreboard pour différencier les joueurs qui peuvent pousser les caisses ou qui se trouve dans une zone où se trouve des caisses.

- /execute @a[score_VotreObjectif_min=1] ~ ~ ~ detect ~(x/-x) ~ ~0.4(z/-z) planks 3 /execute @p ~ ~ ~ detect ~(x/-x) ~ ~2(z/-z) air 0 /summon falling_block ~ ~0.1 ~2 {Block:planks,Data:3,Time:1,DropItem:0}

Sur cette commande, on veut savoir si :
- le joueur à un score de 1 à votre scoreboard choisi.
- le joueur se trouve à 0.4 blocs d'une planche d'acacia (planks 3) pour qu'il soit bien devant la "caisse".
- il y a aucun bloc derrière cette planche/caisse pour savoir si l'on peut la "pousser".

Si ces conditions sont respectés, alors on place le même type de planche derrière celle que l'on est censé "pousser", sous la forme d'une entité étant le FallingSand à 0.1 bloc de hauteur. On invoque un FallingSand car si vous êtes en hauteur cela permet de faire tomber la caisse et si il apparait à 0 bloc du sol alors il risque de ne pas avoir de bloc au final. C'est pour cela qu'il faut que l'entité ai de la gravité, sinon on aurait utilisé un /setblock.

Pendant que le bloc se place, on supprime celui qui se trouve devant nous.

- # /execute @a[score_VotreObjectif_min=1] ~ ~ ~ /setblock ~(x/-x) ~ ~1(z/-z) air 0

Et enfin, on supprime la planche devant le joueur. Et au final, vous venez de simuler l'action de "pousser une caisse" :D.

Commandes pour deux caisses :

Ici nous avons donc le même système mais pour deux planches l'un sur l'autre. Donc on doit vérifié plus de conditions que lorsque que l'on pousse une caisse : si les caisses on la place pour être pousser, si le joueur se trouve devant celle-ci...

- /execute @a[score_VotreObjectif_min=1] ~ ~ ~ detect ~(x/-x) ~ ~0.4(z/-z) planks 3 /execute @p ~ ~ ~ detect ~(x/-x) ~ ~2(z/-z) air 0 /execute @p ~ ~ ~ detect ~(x/-x) ~1 ~0.4(z/-z) planks 3 /execute @p ~ ~ ~ detect ~(x/-x) ~1 ~2(z/-z) air 0 /summon falling_block ~ ~0.1 ~2 {Block:blanks,Data:3,Time:1,DropItem:0,Passengers:[{id:"falling_block",Block:blanks,Data:3,Time:1,DropItem:0}]}
- # /execute @a[score_VotreObjectif_min=1] ~(x/-x) ~ ~2.5(z/-z) /testfor @e[type=falling_block,r=1]
- # /execute @a[score_VotreObjectif_min=1] ~ ~ ~ /fill ~ ~ ~1 ~ ~1 ~1 air 0

:mais:

ATTENTION :
Aux directions :
- En rappel, pour bien simuler l'action de "pousser une caisse" alors il faut faire une série de command_block pour les 4 directions (Nord/Sud/Est/Ouest), et c'est pour ça que dans les commandes que vous avez vu au-dessus je mets : (x/-x) et (z/-z) car les chiffres que vous voyez dans les coordonnées Z doivent être aussi préciser en X et également dans le négatifs sinon vous ne pourrez pas pousser de caisses dans toutes les directions. C'est-à-dire qu'il va vous falloir 4 série de command_block pour pousser une caisse.

Aux nombres de joueurs :
- Je n'ai pas vraiment essayé cette méthode avec plusieurs joueurs mais si vous pensez qu'il est mieux de n'avoir qu'un seul joueur alors pensez à mettre un scoreboard. Il y a énormément de façon pour pouvoir mettre un score au joueur. Vous pouvez tous simplement le faire avec un bouton.

- /scoreboard objectives add Caisse_Zone1 dummy

Derrière le bouton :

- /scoreboard players set @a Caisse_Zone1 0
- /scoreboard players set @p Caisse_Zone1 1


Création simple mais embêtant lors de la présence d'un troll... :diable:

Visionner ce système en cliquant ici.:svp: (tutorial en vidéo)

Vous pouvez aussi rejoindre MysteryCraft pour essayer se système dans mes donjons :

IP : mysterycraft.omgcraft.fr

:merci :rolleyes:<3
 
Dernière édition:
Expliquez pour chaque commande ? C'est vrai que se serait plus explicite ^^. Le prochain tutorial je ferai plus d'explication.
 
Est-ce mieux ?
Ok, maintenant je peux balancer mon commentaire !
Je n'ai pas encore testé ton système, mais en théorie c'est pas terrible...
En toute première information, il faut savoir que l'on doit déplacer les caisses dans toute les directions (Nord/Sud/Est/Ouest soit les coordonnées x et z en valeur positif et négatif).
C'est juste un détail, mais il ne faut pas confondre les directions et les coordonnées : +y est une direction et [3;10;5] sont des coordonnées.
execute @a[Votre score à 1] ~
Perso je mettrais @a[score_min_votreObjectif=1]
/summon falling_block ~ ~0.1 ~2 {Block:blanks,Data:3,Time:1,DropItem:0}
Avec ce Time de 1, le falling block ne despawnera pas avant quelques minutes, ce qui signifie qu'ils s'accumulent à un rythme de 20 par secondes...
édité : non, vu que la condition du cb violet ne sera pas remplie.
Perso j'invoquerait un falling block sans gravité, puis je le téléporterai.
Après que Si ces conditions sont respectés, alors on place
C'est toujours un détail, mais il est possible que les conditions ne soient pas respectées.
derrière celle que l'on aiest sensécensé "pousséer"
Coup critique ! C'est Super Efficace ! Clen23 est KO !
- # /execute @a[Votre score à 1] ~(x/-x) ~ ~-2.5(z/-z) /testfor @e[type=falling_block,r=1]
Maintenant on vérifie que l'entité soit bien apparue pour ensuite exécuter la commande suivante :
Ça reste à vérifier, mais normalement le cb vert-conditionnel s'active seulement lorsque le cb précédent succède. Du coup, tester l'apparition du falling block est inutile.

RAPPORT DE TEST : La 1ere commande fonctionne à merveille, en revanche la seconde ne produit pas le résultat espéré (aucun bloc d'air ne vient remplacer la caisse). Voici la commande et le message d'erreur :
/execute @a ~ ~ ~-2.5 /testfor @e[type=falling_block,r=1]
Impossible d'exécuter "/testfor @e[type=falling_block,r=1]" en tant que Clen23

Ma théorie est que l'entité falling-block disparaît trop vite pour être détecté.
Utilise la balise code.
Ou alors la balise plain
Exemple :
minecraft:planks
 
Dernière édition:
Le problème des "code" et de "plain" c'est que ça supprime les couleurs ce qui est dommage... Et en effet le /testfor ne servait à rien même dans le fait ou l'on déplace deux caisses en même temps (j'aime être dans la sécurité ^^ mais ça rajoute trop de commande au final, merci de me l'avoir fait remarquer). Et merci pour la correction de mon orthographe x) j'ai quand même du mal de temps en temps. Par contre je pense inutile de vouloir téléreporter un FallingSand au lieu de le laisser tomber ^^' surtout que lorsque je mais le Time à 0, je n'ai plus de FallingSand ou il n'apparait qu'un moment (1 tick quoi).
 
Le problème des "code" et de "plain" c'est que ça supprime les couleurs ce qui est dommage...
Si on pouvait mettre du BBCode dans la balise plain, elle ne servirait à rien !
Et si t'es pas content, je te conseille de demander le retrait des smileys auto. dans "suggestions".
surtout que lorsque je mais le Time à 0, je n'ai plus de FallingSand ou il n'apparait qu'un moment (1 tick quoi).
Pour le Time, je pensais plutôt à ~100 (en sachant que 128=0, étant donné que le tag est sur 8 bit), mais après réflexion, la condition du cb violet empêche l'accumulation.
Par contre je pense inutile de vouloir téléreporter un FallingSand au lieu de le laisser tomber ^^'
Ce que je voulais dire, c'est que le FallingSand est inutile : la commande /execute @a ~ ~ ~ detect ~ ~ ~0.4 planks 3 /execute @p ~ ~ ~ detect ~ ~ ~2 air 0 /setblock ~ ~ ~2 planks 3 fait littéralement la même chose.
Du coup, pour rentabiliser l'existence de cette entité, j'avais pensé à lui donner un joli mouvement.
Attendez...
...
/execute @a ~ ~ ~ detect ~ ~ ~0.4 log 3 execute @p ~ ~ ~ detect ~ ~ ~2 air 0 summon falling_block ~ ~0.01 ~0.4 {Block:log,Data:3,Time:1,DropItem:0,Motion:[0.0,0.1,0.4]
Le seul problème avec Motion, c'est que la caisse ira trop loin si elle tombe, dans ce cas il vaudra mieux faire un /tp je pense.
 
Dernière édition: