Nous allons animer un bateau afin qu'il nous transporte dans les airs, sur un trajet défini que vous pourrez programmer. (L'astuce a été testée en 1.14.2 ! Si vous rencontrez des problèmes dans des versions antérieures ou plus récentes merci de venir tester cette astuces en version 1.14.2)
Vous aurez besoin de
et de
.
Pour obtenir un command block aisément, entrez la commande ci-dessous dans le tchat :
/give @s minecraft:command_block
Commencez par placer 2 blocs de commande à impulsion, puis une chaîne de commande :
Étape 1 - Création du bateau :
Dans le premier bloc de commande à impulsion (orange), nous allons entrer la commande suivante :
/execute unless entity @e[type=minecraft:armor_stand,name=Airship] run summon armor_stand ~ ~1 ~ {Marker:1b,Invulnerable:1b,Invisible:1b,Passengers:[{id:"minecraft:boat",Type:"spruce",CustomName:"{\"text\":\"Airship\"}"}],CustomName:"{\"text\":\"Airship\"}"}
Cela créera un porte-armure nommé "Airship" avec le tag marker, et chevauché par un bateau lui aussi nommé "Airship", tourné vers l'ouest. Cette commande s'activera seulement si il n'y a aucun autre porte-armure nommé Airship afin d'éviter que que plusieurs bateaux ne volent en même temps, ce qui fonctionne moins bien.
Étape 2 - Création d'un objectif :
Pour programmer le bateau, nous allons utiliser un objectif (scoreboard). Pour ce faire, nous allons entrer la commande suivante dans le tchat :
/scoreboard objectives add anim dummy
Cet objectif "anim" n'est modifiable que par des commandes.
Étape 3 - Assigner l'objectif au bateau :
Dans le deuxième bloc de commande à impulsion, nous allons executer cette commande :
/scoreboard players set @e[name=Airship,type=minecraft:armor_stand] anim 1
Elle ajoutera un score de 1 à notre porte-armure "Airship", ce qui permettra grâce au commandes suivantes de le déplacer selon nos envies.
Étape 4 - Augmenter le score à chaque tick :
Dans le premier commande de la chaîne, qui doit être un bloc de commande à répétition en mode
inconditionnel et
toujours, nous allons placer cette commande :
/scoreboard players add @e[name=Airship,type=minecraft:armor_stand,scores={anim=1..}] anim 1
A chaque tick de jeu, le score "anim" de notre porte-armure "Airship" s'incrémentera de 1 pour nous servir d'indicateur de temps, une fois que vous l'aurez mis en route (grâce au second bloc de commande à impulsion).
Étape 5 - Programmer le trajet du bateau :
Enfin la partie la plus intéressante : nous allons faire bouger notre porte-armure et donc notre bateau, en utilisant le /tp.
Entrons le texte suivant dans le 2ème bloc de commande de la chaîne, qui est un bloc de commande
chaîne en mode
inconditionnel et
toujours actif.
/execute as @e[name=Airship,type=minecraft:armor_stand,limit=1,scores={anim=1..50}] at @s run tp @s ~-.5 ~.5 ~
Grace à cette commande, notre porte-armure bougera de -0.5 bloc vers l'ouest (soit 0.5 vers l'est) et 0.5 bloc vers le haut à chaque tick, tant que son score pour l'objectif "anim" est compris entre 1 et 50.
L'étape suivante permet de programmer la route de notre bateau : n'hésitez pas à rajouter plus de bloc de commande à la suite de celui-ci, en changeant la valeur du score pour modifier la durée du mouvement, et en changeant les valeurs du /tp pour accélérer ou changer la direction.
Vous pouvez donc rajouter un autre bloc de commande avec les mêmes réglages, avec par exemple la commande suivante :
/execute as @e[name=Airship,type=minecraft:armor_stand,limit=1,scores={anim=50..100}] at @s run tp @s ~.5 ~ ~.5 -45 0
Dernière étape - Destruction du bateau :
Une fois le trajet effectué, il nous faut détruire le bateau afin de relancer la première commande pour faire apparaître un autre bateau.
Rajoutez la commande suivante dans le dernier bloc de commande de la chaîne :
/execute if entity @e[name=Airship,type=minecraft:armor_stand,scores={anim=100..}] run kill @e[name=Airship]
Ici, le bateau et le porte-armure seront détruis lorsque le porte-armure atteindra un score de 100 pour l'objectif "anim".
(Insérez dans cette commande une valeur de score différent en fonction de la durée de votre trajet. Par exemple si la durée de votre trajet est de 0 à 506 ticks, alors vous remplacerez le 100 par 506, même si je conseil de laisser un petit délai de 20 à 40 ticks pour que cela ne soit pas trop violent.)
Et voilà ! Il ne nous reste plus qu'à prendre place dans le bateau invoqué et appuyer sur le bouton du deuxième bloc de commande pour le lancer !
Vous pourrez donc au final avoir un rendu comme celui-ci !
Informations supplémentaires :
1 - L'utilisation du porte-armure est ici nécessaire : bien que le tag
motion s'applique aussi au bateau, l'utilisation de ce tag ne fonctionne plus sur le bateau si un joueur est dedans. Il faut donc utiliser un bateau qui sera le
passenger d'un porte-armure et faire bouger ce dernier pour entraîner le bateau dans lequel un joueur se trouve.
2 - L'utilisation d'un scoreboard (objectif) vous facilite la tâche pour écrire ces commandes dans une fonction. On peut utiliser des blocs de commande à impulsion et des répéteurs de redstone à la place d'un scoreboard, simplifiant alors le système, mais prenant beaucoup plus de place (surtout si le trajet est long), et pouvant rendre le déplacement moins fluide.
Programmer un bateau volant :