首页 > 解决方案 > Bukkit 聊天可点击按钮

问题描述

我实际上正在编写一个插件,在命令中它会提示一条确认消息,我想单击一个按钮(在聊天文本上)进行确认和取消。我不喜欢复制粘贴别人的代码,也不想使用别人的类。我正在尝试使用 TextComponents,但我无法使其工作。这是命令代码

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;
    }            
}

它给我带来了3个错误:

TextComponent(String) is not public in TextComponent; cannot be accesed from outside package(在我定义 TextComponent 的那一行)

Cannot find symbol(在 ClickEvent 行中)

Package ClickEvent does not exist(在 ClickEvent 行中)

我该如何解决这些错误?有更简单的方法来做一个可点击的按钮(没有其他类或复制/粘贴)?

标签: javachatminecraftbukkit

解决方案


你有2个问题。

  1. 您缺少依赖项。将以下依赖项添加到您的 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. java.awt.TextComponent您已在课堂上导入InfoCommand ,这是错误的。因此,删除该导入并添加以下内容:
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;

推荐阅读