So when you do ConsoleSender#sendMessage(String message) , it will detect if there's any URL in the message, after that, the URL will become clickable text, but how do I disable that? Not only sendMessage method, but every message that player got. Checked PacketPlayOutChat, and it contains clickable URL already, so it's not client stuff ( I guess?). EDIT: Solve, after 20 minutes of research, there are three ways to solve this problem: First, my English is not good, so there might be some grammar errors. but anyway, here's how you do it: 1. Do a custom build of Spigot API If you are coding for a server, not a plugin, you will probably use this method. By building your own SpigotAPI, just run buildtools, it will prepare everything for you, and just go to the Spigot folder, and open pom.xml with your Java IDE as a project, then you can do custom builds. If you are using 1.17 or higher version of spigot, you'll probably want to remove Remap section in pom.xml, and you'll never want to decompile minecraft server cause I can't find any compiler that can decompile minecraft 1.17 correctly, I haven't try 1.16 yet, but I guess I'll use reflection + ASM to modify the minecraft server src. Back to topic, if you want to fix this issue, try and find sendRawMessage(String message_ method inside org.bukkit.craftbukkit.entity.CraftPlayer, there will be a for each loop inside the method. Remove that foreach loop, and add this line: getHandle().playerConnection.sendPacket(new PacketPlayOutChat(new ChatComponentText(message), ChatMessageType.SYSTEM, SystemUtils.b)); It should work correctly. 2. Modify PacketPlayOutChat packet You can do that by using ProtocolLib, or listen the packets by hooking player's packet channel (Using netty IO), it's not a big thing, just remove all clickable URLs inside the IChatBaseComponent, But it's harder than you thought, at least it's harder than I thought it is, you'll need around 5 minutes ~ 4 hours depends on how deep you understand NMS. 3. ASM It's the worst way to do it, what it does is it will edit the bytecodes during runtime, and it's unsafe, and not that easy, but you can do it if you really want to. For me, the first one is the best opinion, cuz I'm coding for specific server, and I'm already using a custom build (To fix some bugs without using reflection), and I already set the Spigot workspace up, so it will only take me around 2 minutes to finish it.