Sinon, voilà en gros le principe :
En fait, c'est une fonction qui se répète à des positions décalées jusqu'à ce qu'elles trouvent un truc valide
Exemple (je met les fonctions en majuscule, sans "path") :
-Exécuter la fonction "RAYCAST" (juste en dessous)
FONCTION "RAYCAST"
Exemple (je met les fonctions en majuscule, sans "path") :
-Exécuter la fonction "RAYCAST" (juste en dessous)
Code:
/execute as @p at @s anchored eyes positioned ^ ^ ^1 run function RAYCAST
FONCTION "RAYCAST"
Code:
execute if entity @e[type=cow,dy=0] run say JE MATE LES VACHES!
execute unless entity @e[type=cow,dy=0] if entity @s[distance=..30] positioned ^ ^ ^.5 run function RAYCAST
Tout d'abord, le processus entier se déroule en un seul tick.
C'est un peu casse-tête, j'ai mis du temps à comprendre ce système lol
C'est un peu casse-tête, j'ai mis du temps à comprendre ce système lol
La fonction est exécutée en tant que le joueur ciblé, à sa position (yeux), avec le ^ ^ ^1. La première commande de RAYCAST teste donc s'il y a une vache dont la hitbox touche la position susdite.
Ensuite, si aucune vache n'a été détectée, la seconde commande s'active! Celle-ci réexécute la fonction en ^ ^ ^.5.
Comme la fonction a été exécutée avec "as @p", il s'agit donc d'une position relative au regard du joueur.
Étant actuellement positionné en ^ ^ ^1, le prochain cicle sera exécuté en ^ ^ ^(1 + 0.5) par rapport au joueur.
Aucun "as" ou "at" n'est redéclaré : la fonction sera donc toujours réexecutée en tant que le même joueur, avec des positions décalées
Ensuite, si aucune vache n'a été détectée, la seconde commande s'active! Celle-ci réexécute la fonction en ^ ^ ^.5.
Comme la fonction a été exécutée avec "as @p", il s'agit donc d'une position relative au regard du joueur.
Étant actuellement positionné en ^ ^ ^1, le prochain cicle sera exécuté en ^ ^ ^(1 + 0.5) par rapport au joueur.
Aucun "as" ou "at" n'est redéclaré : la fonction sera donc toujours réexecutée en tant que le même joueur, avec des positions décalées
La fonction est donc réexécutée par elle même (aaargh), en tant que @s et positionnée en ^ ^ ^1.5 par rapport à celui-ci.
Si le test est toujours infructueux, le même processus que l'étape 1 se répète.
Toutefois, j'ai ajouté une limite : la deuxième commande ne se réactive pas si le joueur se trouve à plus de 30 blocs de la position actuelle de détection.
Sans cette limite, le jeu va répéter la fonction jusqu'à ses propres limites, un gros coup de lag...
Évidemment, pas de réexécution = processus fini pour le tick actuel.
Si le test est toujours infructueux, le même processus que l'étape 1 se répète.
Toutefois, j'ai ajouté une limite : la deuxième commande ne se réactive pas si le joueur se trouve à plus de 30 blocs de la position actuelle de détection.
Sans cette limite, le jeu va répéter la fonction jusqu'à ses propres limites, un gros coup de lag...
Évidemment, pas de réexécution = processus fini pour le tick actuel.