From 6263fe283b00e29f0f919963e168b563575d5ec8 Mon Sep 17 00:00:00 2001 From: Outfluencer <48880402+Outfluencer@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:03:02 +0200 Subject: [PATCH] #3426: Made find command output hover and clickable --- .../bungee/module/cmd/find/CommandFind.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/module/cmd-find/src/main/java/net/md_5/bungee/module/cmd/find/CommandFind.java b/module/cmd-find/src/main/java/net/md_5/bungee/module/cmd/find/CommandFind.java index 7ea239ac..912cb0c2 100644 --- a/module/cmd-find/src/main/java/net/md_5/bungee/module/cmd/find/CommandFind.java +++ b/module/cmd-find/src/main/java/net/md_5/bungee/module/cmd/find/CommandFind.java @@ -1,7 +1,12 @@ package net.md_5.bungee.module.cmd.find; +import java.util.Collections; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.command.PlayerCommand; @@ -27,8 +32,27 @@ public class CommandFind extends PlayerCommand sender.sendMessage( ProxyServer.getInstance().getTranslation( "user_not_online" ) ); } else { - sender.sendMessage( ProxyServer.getInstance().getTranslation( "user_online_at", player.getName(), player.getServer().getInfo().getName() ) ); + boolean moduleLoaded = ProxyServer.getInstance().getPluginManager().getPlugin( "cmd_server" ) != null; + ServerInfo server = player.getServer().getInfo(); + ComponentBuilder componentBuilder = new ComponentBuilder().appendLegacy( ProxyServer.getInstance().getTranslation( "user_online_at", player.getName(), server.getName() ) ); + + if ( moduleLoaded && server.canAccess( sender ) ) + { + componentBuilder.event( new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder().appendLegacy( ProxyServer.getInstance().getTranslation( "click_to_connect" ) ).create() ) + ); + componentBuilder.event( new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/server " + server.getName() ) ); + } + + sender.sendMessage( componentBuilder.create() ); } } } + + @Override + public Iterable onTabComplete(CommandSender sender, String[] args) + { + return args.length == 1 ? super.onTabComplete( sender, args ) : Collections.emptyList(); + } }