Skip to content
Advertisement

Bukkit Chat Clickable Buttons

I’m actually coding a plugin, in a command it prompts a confirmation message and I want to click a button (on the chat text) for confirming and cancellating. I don’t like to copying and pasting code from others, and I don’t want to use classes from others too. I am trying to use TextComponents but I can’t make it work. Here is the command code

package myPackage;

import java.awt.TextComponent;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class InfoCommand implements CommandExecutor {

    public TextComponent TextComponent;
    @Override
    public boolean onCommand(CommandSender sender, Command cmnd, String alias, String[] args) {
        if (!(sender instanceof Player)) {
            return false;
        }
        Player player = (Player) sender;
        player.sendMessage(new String[] {
                            "Confirmation message.",
                            "Do you want to confirm?"});
        TextComponent message = new TextComponent ("Yes");
        message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/command"));
        return true;
    }            
}

It trows me 3 errors:

TextComponent(String) is not public in TextComponent; cannot be accesed from outside package (In the line where I define TextComponent)

Cannot find symbol (In the ClickEvent line)

Package ClickEvent does not exist (In the ClickEvent line)

How can I solve the errors? There is an easier way to do a clickable buttons (without other classes or copying/pasting)?

Advertisement

Answer

You have 2 problems.

  1. You’re missing a dependency. Add the following dependency to your pom.xml:
<dependency>
        <groupId>org.spigotmc</groupId>
        <artifactId>spigot-api</artifactId>
        <version>1.12.2-R0.1-SNAPSHOT</version><!--change this value depending on the version-->
        <type>jar</type>
        <scope>provided</scope>
</dependency>

  1. You have imported java.awt.TextComponent in your InfoCommand class, which is wrong. So remove that import and add these instead:
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;

Advertisement