Ah, donc c’est sur la bonne voie ?
Sinon j’avais pensé à une solution, je vais quand même la partager...
Je n’aurais jamais cru trouver une solution à ton problème, quel défi xD
Désolé pour le pavé mais je me suis bien amusé, la solution parait compliquée mais c’est faisable je pense.
Tout d’abord il faudra préciser aux joueurs d’installer le command_block pour ton one command à une position définie d’un chunk (par exemple 0 0), n’importe quel chunk car il me semble qu’un /setworldspawn le fera charger constamment.
Je n’ai pas testé si tout ça marchera vraiment, normalement oui...
Cela consiste à amener le "bloc posé par l’utilisateur", "aux pied de l’ArmorStand", avec un système de pathfinding.
problème tordu ---> solution tordue
Tout d’abord il faut faire en sorte qu’un ArmorStand soit à la position XYZ du "bloc posé par l’utilisateur" (genre un œuf "piédestal", l’utilisateur éclot l’œuf, ce qui place une structure, il ne restera plus qu’à l’utilisateur de poser le bloc qu’il souhaite dessus) l’ArmorStand du "bloc posé par l’utilisateur" fera /clone le "bloc posé par l’utilisateur" aux coordonnées ~0 0 ~0 au niveau de la bedrock, se sera une sorte de copie mémoire du "bloc posé par l’utilisateur".
Il faudra /summon 5 ArmorStand (ayant comme name : nord, sud, est, ouest, et centre) en forme de "+" vu du dessus, se trouvant à la couche 0 au niveau de la bedrock centrés aux coordonnées XZ du "bloc posé par l’utilisateur".
Maintenant, vérifier lequel des 5 ArmorStand du "+" est plus proche de "l’ArmorStand aux pieds".
Si c’est par exemple le bras ouest du "+" qui est plus proche de "l’ArmorStand aux pieds", alors l’Armorstand au centre du "+" /clone la copie mémoire du "bloc posé par l’utilisateur" d’une distance d’1 bloc à l’ouest (et remet facultativement un bloc de bedrock à la position précédente au centre).
Puis les 5 ArmorStand du "+" se /tp d’1 bloc à l’ouest depuis leur position. Puis le cycle recommence...
C’est quasi pareil pour le bras est, nord, et sud du "+"... faut juste changer les coordonnées...
Au bout d’un petit moment, l’ArmorStand au centre du "+" sera le plus proche de "l’ArmorStand aux pieds". Et cela voudra dire que la copie mémoire du "bloc posé par l’utilisateur" est aux mêmes coordonnées XZ que "l’ArmorStand aux pieds", il est juste en dessous !
Il ne reste plus qu’à faire faire à "l’ArmorStand aux pieds" un /clone ~ 0 ~ ~ 0 ~ ~ ~ ~
Et voilà
Je ne sais pas combien de temps prendra le système pour amener le bloc aux pieds de l’ArmorStand, tout dépendra de la distance entre eux, peut-être 10 blocs/seconde...
Mais je viens d’avoir une nouvelle idée pour accélérer tout ça :
Au lieu de déplacer le bloc mémoire et le "+", d’1 bloc à la fois, déplacer le tout de 64 blocs, puis avec des scoreboards, si par exemple le tout se déplaçait à l’ouest, et qu’après il se déplace à l’est (une direction opposée donc), cela voudra dire que "l’ArmorStand aux pieds" est entre cette distance, donc à partir de là déplacer le tout de 32 blocs, puis 16, etc... pour arriver à des déplacements de 1 bloc de distance, pour ainsi trouver "l’ArmorStand aux pieds". J’imagine que ça accélèrera la recherche...
Comme ça tu n’auras pas à faire tous les blocs possibles du jeu, et tout ce fera avec un /clone.
Après... il y aura toujours le gros problème de chunk non chargé si le "+" est trop éloigné de "l’ArmorStand aux pieds"
Mais, il y a un espoir... Étant donné que le génialissime Chunk Loader de test137E29 ne marche malheureusement qu’en 1.8... Il ne reste plus que le Chunk Loader de SimplySarc avec les hoppers !
Mais ça va être plus compliqué, d’ailleurs je ne sais même pas si c’est possible, je pense que si...
Étant donné qu’il est inimaginable, et peut-être même impossible, de faire charger une zone de 1000 chunks sur 1000 chunks...
J'ai pensé à un système qui génèrerait en temps réel comme une espèce de "fil d’Ariane" de chunks constamment chargés avec des chunk loader cachés en couche 0, qui relierait le spawn jusqu’au joueur, et qui élimine même les nœuds formé par le joueur.
/summon 5 ArmorStand en forme de "+" (nord, sud, est, ouest, centre) au centre du chunk du spawn. Atribuer à l'ArmorStand du centre un score "Ariane" de 0. Le joueur, lui, aura la valeur du plus gros score "Ariane" atteint.
Ensuite rechercher si le joueur est à minimum 32 blocs d’un ArmorStand, nord, ou sud, ou est, ou ouest, si oui, si c’est par exemple l’ArmorStand ouest qui est plus proche du joueur, faire faire apparaitre à l’ArmorStand centre un chunk loader 32 blocs à l'ouest, de même lui faire /tp aussi les 4 ArmorStand (nord, sud, est, ouest) 32 blocs à l’ouest, lui faire /summon un ArmorStand centre 32 blocs à l’ouest aussi, l’ArmorStand centre précédent reste et reçoit le score Ariane = au joueur + 1, ensuite le joueur reçoit + 1 à son score Ariane. Programmer cela pour les 4 directions (nord, sud, est, ouest), et le système créera tout seul le fil d’Ariane du spawn au joueur
Le scoreboard Ariane sert à éliminer les nœuds, si par exemple le joueur a un score Ariane de 27, et qu’il arrive par exemple sur un chunk qui vaut 18, donc inférieur à 27, un procédé éliminera le nœud, et le joueur aura son score Ariane = à l’ArmorStand le plus proche qui gère le score Ariane, donc 18. Les ArmorStands et les chunk loader correspondant aux chunks chargés de 19 à 27 n'existent alors plus.
Mais je me demande vraiment s’il est possible de tester le score d’une entité et voir s’il est inférieur à une autre entité, sans mettre de nombre... ?
Au pire les nœuds resteront... xD
Dans ce cas, le scoreboard Ariane est à supprimer, de même que les ArmorStand stockant la longueur du fil d'Ariane en chunk...
Une fois le bloc posé par l'utilisateur, le fil d'Ariane du spawn au joueur se transforme en fil d'Ariane du spawn au "bloc posé par l'utilisateur", de même pour "l'ArmorStand aux pieds" posé par l'utilisateur. Ces fils d'Ariane resteront sauvegardés jusqu'à ce que l’utilisateur change de place le "bloc posé par l'utilisateur" ou "l'ArmorStand aux pieds". Le fil d'Ariane du joueur est à part et fonctionne tout le temps.
Mais maintenant les chunks entre les deux lieux ne sont peut-être pas chargés... Soit l'utilisateur fait le trajet à vol d'oiseau (ou en angle droit, je ne sais pas comment le pathfinding va se comporter), mais bon c'est pas raisonnable s'il faut faire un aller-retour pour charger le chemin entre le "bloc posé par l'utilisateur" et "l'ArmorStand aux pieds", donc, si ces deux lieux sont bien présent, un fil d'Ariane de chunks chargés supplémentaire va se créer et va ouvrir le passage au "+" de la copie mémoire du "bloc posé par l'utilisateur" jusqu'aux pieds de l'ArmorStand.
Ça parait complexe mais je crois que c'est faisable en fin de compte...
Après faut tester, je ne l’ai pas fait de mon côté, je n'ai fait QUE la théorie... xD
Après si t’es déjà bien avancé dans le livre clickevent laisse tomber ma solution xD