Résolu [JAVA] Faire un message cliquable sous bungeecord

Kenda

Massacreur de zombies
16 Juillet 2016
259
1
2
125
30
www.youtube.com
Bonjour/Bonsoir,

Je cherche à faire un système d'authentification avec un token unique que les admins donnent, et j'aimerai faire en sorte de le copier en cliquant sur le token.

Genre comme sa : "Voici votre token (avec un message hover)" et lors du clic, le token serais copier sur le presse papier etc...
Je cherche à le faire sous bungee, vu que sa serai inter-serveur, sauf que, j'ai trouver ceci https://www.spigotmc.org/wiki/the-chat-component-api/ sauf que je comprend pas tout, et j'ai l'impression que ma version est sous trop récente, sois trop vieille (qui pourtant est la dernière en date de bungee), et donc il me manque des choses.
Ducoup, je suis un peu perdu, possible de m'aider ?

Merci :D
 

ShE3py

Développeur en autodidacte
Support
26 Septembre 2015
2 475
56
351
247
19
Mìlhüsa
Bonsoir,

Avec des variables locales :
Java:
TextComponent message = new TextComponent("Voici votre ");
message.setColor(ChatColor.WHITE);

TextComponent tokenComponent = new TextComponent("jeton");
tokenComponent.setBold(true);
tokenComponent.setUnderlined(true);
tokenComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent("Cliquez pour le copier vers votre presse-papier")));
tokenComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, "0UsnLvKbfhZSrVg1D6Psb6"));

message.addExtra(tokenComponent);
message.addExtra(" d'authentification.");

Player player = ...;
player.sendMessage(ChatMessageType.CHAT, message);

En cascade :
Java:
BaseComponent[] components = new ComponentBuilder()
    .append("Voici votre ")
    .color(ChatColor.WHITE)
    
    .append("jeton")
    .bold(true)
    .underlined(true)
    .event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent("Cliquez pour le copier vers votre presse-papier")))
    .event(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, "5yFYNBm6iaE4YPKY2mvYaV"))
    
    .append(" d'authentification.")
    .retain(ComponentBuilder.FormatRetention.NONE)
    .color(ChatColor.WHITE)
    
    .create();

Player player = ...;
player.sendMessage(ChatMessageType.CHAT, components);

Pas testé, les deux manières sont pas très lisibles et je n'ai aucune idée de si c'est possible de faire mieux en BungeeCord pure, mais bon si les messages sont courts ça devrait quand même aller.

Cordialement,
ShE3py
 

Kenda

Massacreur de zombies
16 Juillet 2016
259
1
2
125
30
www.youtube.com
Bonjour,

Je viens d'essayer avec les deux méthodes, mais malheureusement le ClickEvent.Action.COPY_TO_CLIPBOARD n'est pas reconnu.
C'est un problème avec ma version de bungee ?
 

ShE3py

Développeur en autodidacte
Support
26 Septembre 2015
2 475
56
351
247
19
Mìlhüsa
Lequel des trois mots n'est pas reconnu ?
Sinon tu peux simplement faire CTRL + B lorsque ton curseur est sur Action pour ouvrir le code source de l'énumération sur IntelliJ.
 

Kenda

Massacreur de zombies
16 Juillet 2016
259
1
2
125
30
www.youtube.com
Lequel des trois mots n'est pas reconnu ?
Sinon tu peux simplement faire CTRL + B lorsque ton curseur est sur Action pour ouvrir le code source de l'énumération sur IntelliJ.
C'est le COPY_TO_CLIPBOARD, et il n'est pas dans le code source. Je vais essayer avec une version plus récente de bungee ce soir.
 

ShE3py

Développeur en autodidacte
Support
26 Septembre 2015
2 475
56
351
247
19
Mìlhüsa
L'action copy_to_clipboard a été ajoutée en 1.15, donc si tu veux viser une version antérieure tu dois utiliser une autre action telle qu'ouvrir une page web pour contourner le problème.