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

Kenda

Architecte en herbe
16 Juillet 2016
306
1
2
125
32
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
 
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
 
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 ?
 
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.
 
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.
 
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.