CommandBlock Résolu [1.14.4] Scoreboard avec des flèches affichant une direction !

LePtitRichard

Aventurier
3 Août 2019
1
0
1
26
Bonjour,

Je voudrais réaliser un scoreboard au-dessus de la hotbar contenant des flèches qui pointent chacune dans une direction.
upload_2019-8-3_12-16-56.png

Comme sur la photo ci dessus mais avec des flèches.

Merci
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Bôh rien de bien compliqué, c'est juste pas mal de commandes...
Déjà, tout ce que tu demandes est possible; les flèches, c'est des unicodes :
↗ etc.

Ici, je suppose que tu veux faire un traceur de base, alors je te met des explications adaptées à ça.

Avant tout, je suis sur mon tel donc toutes les commandes ci-dessous sont écrites de mémoire. Bien que je les connaisse, il se pourrait qu'il y aie des erreurs...
Finalement : si tu es sur un serveur, les commandes vanilla, ça vaut rien : les plugins font tout.



Déjà, il faut obtenir la distance entre la base et toi :
Pour commencer, il faut obtenir les coords xy de la base et du joueur (on peut faire la hauteur aussi, mais je pense que ça sera pas la peine).

Étape 1. Créer des scores pour stocker les coords (libre à toi de changer les noms)
Code:
/scoreboard objectives add PlayerPosX dummy
/scoreboard objectives add PlayerPosY dummy
/scoreboard objectives add BasePosX dummy
/scoreboard objectives add BasePosY dummy

Étape 2. Stocker les coords de la base (les explications te permettent des coords différentes pour chaque joueur)
Si tu fais un système de sethome, exécute ces deux commandes au moment du sethome (fixent les coords de la base à la position du joueur)
Code:
/execute as @#joueur_à_sethome# store result score @s BasePosX run data get entity @s Pos[0]
/execute as @#joueur_à_sethome# store result score @s BasePosY run data get entity @s Pos[2]
Ces commandes stockent les données Pos[0] et Pos[2] (coords xy) du joueur dans leurs scores respectifs sur ce joueur.

Étape 3 : actualiser les coords du joueur chaque tick (blocs de commande repeat ou pack de données suggérés)
Tu dois exécuter les deux commandes suivantes en boucle (inclut tous les joueurs) :
Code:
/execute as @a store result score @s PlayerPosX run data get entity @s Pos[0]
/execute as @a store result score @s PlayerPosY run data get entity @s Pos[2]
Similaires à celles de l'étape 2, mais actualisent constamment les coords sur les scores PlayerPos.

Étape 4 : calculer la distance entre le joueur et la base
Pour cette étape, j'utilise la distance de manhatan (taxicab); c'est la distance d'un point à un autre en déplacement vertical... ce n'est pas la distance à vol d'oiseau (il faut pythagore, possible mais galère, tu le feras si tu le veux), mais on peut s'en contenter...
Donc du coup ça affiche la distance à parcourir horizontalement et verticalement...
Pour cela, on fait :
Distance = (PlayerPosX - BasePosX) ^ 2 / (PlayerPosX - BasePosX) + (PlayerPosY - BasePosY) ^ 2 / (PlayerPosY - BasePosY)

En gros, c'est les différences de distance xy entre les deux points, mises en valeur absolue pour enlever le négatif.
Voici la suite de commande à exécuter chaque tick :
Code:
/scoreboard players operation @s PlayerPosX -= @s BasePosX
/scoreboard players operation @s PlayerPosY -= @s BasePosY
/scoreboard players operation @s BasePosX = @s PlayerPosX
/scoreboard players operation @s BasePosY = @s PlayerPosY
/scoreboard players operation @s PlayerPosX *= @s PlayerPosX
/scoreboard players operation @s PlayerPosY *= @s PlayerPosY
/scoreboard players operation @s PlayerPosX /= @s BasePosX
/scoreboard players operation @s PlayerPosY /= @s BasePosY
/scoreboard players operation @s PlayerPosX += @s PlayerPosY
/title @s actionbar [{"text":"distance : "}, {"score":{"name":"@s","objective":"PlayerPosX"}}]
Et la distance taxicab entre le joueur et sa base se trouve dans son PlayerPosX, affichée en actionbar.

Enfin c'est déjà gros et je vais me coucher, je reviendrai avec l'affichage de flèches quand j'aurai le temps...

En gros, pour le système de flèches, je pensais à un système qui prendrai en compte les différences de distance xy entre chaque joueur et sa base et qui déclencherait un tellraw avec une flèche différente dépendament de certaines conditions des deux distances...

C'est un peu galère et j'ai relativement peu de temps mais je ne vais pas te laisser tomber!


Sinon jusque là, ma première réponse te convient?
 
Dernière édition par un modérateur:
  • J'aime
Reactions: LePtitRichard

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Hé ho! Simple rappel, je suis toujours sur le système de flèches, je t'ai pas abandonné!

Enfin je sais toujours pas trop comment procéder pour afficher une direction parmi 8 à partir de deux points...
 
Dernière édition:
  • J'aime
Reactions: Franco99

Franco99

Aventurier
22 Mai 2021
1
0
1
27
Hé ho! Simple rappel, je suis toujours sur le système de flèches, je t'ai pas abandonné!

Enfin je sais toujours pas trop comment procéder pour afficher une direction parmi 8 à partir de deux points...
Hello Eglaios,

Cela fait longtemps mais est ce que tu aurais finalement trouvé une solution pour ce fameux système de flèches.
Je souhaite le faire de moi même grâce à des commandes, et je m'y met à peine donc je vais essayer de chercher aussi de mon côté.

Par ailleurs, ta première réponse m'a beaucoup aidé à comprendre le fonctionnement de tout ce processus même si je reste encore un peu perdu quant aux calculs et aux stockages de positions.

Merci d'avance