Skip to content

Title 与 ActionBar ​

屏幕上的文字显示——居中大字标题(Title)和物品栏上方的提示条(ActionBar)。1.12.2 起 Bukkit 提供了直接 API,不必再像旧版那样靠 NMS 发包。

Title(大字标题) ​

Player.sendTitle 直接发,可分别设主标题、副标题、淡入/停留/淡出时间:

java
player.sendTitle(
    ChatColor.GOLD + "欢迎归来",      // 主标题
    ChatColor.YELLOW + "祝您游戏愉快",  // 副标题
    10,  // 淡入(tick)
    60,  // 停留
    10   // 淡出
);

时间单位是 tick

20 tick = 1 秒。10, 60, 10 即淡入 0.5 秒、停留 3 秒、淡出 0.5 秒。

只发主标题、不要副标题时,副标题传 null:

java
player.sendTitle(ChatColor.RED + "危险区域", null, 5, 40, 10);

ActionBar(物品栏上方提示) ​

ActionBar 是显示在物品栏上方的短文字,不挡视线、几秒后自动消失,适合做提示。

Spigot API ​

用 player.spigot().sendMessage,指定 ChatMessageType.ACTION_BAR:

java
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;

player.spigot().sendMessage(
    ChatMessageType.ACTION_BAR,
    TextComponent.fromLegacyText(ChatColor.GREEN + "+10 金币")
);

Paper API(更简洁) ​

Paper 提供了直接的 sendActionBar:

java
player.sendActionBar(ChatColor.GREEN + "+10 金币");

跨核心兼容

sendActionBar 是 Paper 独有方法,Spigot 没有。若你的插件要同时支持 Spigot,用上面的 spigot().sendMessage 方案。只跑 Paper 就用 sendActionBar,简洁。

实战:技能冷却提示 ​

玩家释放技能后用 ActionBar 显示冷却倒计时(配合调度器):

java
new BukkitRunnable() {
    int cd = 5;
    @Override
    public void run() {
        if (cd <= 0) {
            player.spigot().sendMessage(
                ChatMessageType.ACTION_BAR,
                TextComponent.fromLegacyText(ChatColor.GREEN + "技能就绪")
            );
            cancel();
            return;
        }
        player.spigot().sendMessage(
            ChatMessageType.ACTION_BAR,
            TextComponent.fromLegacyText(ChatColor.RED + "技能冷却:" + cd + "s")
        );
        cd--;
    }
}.runTaskTimer(this, 0L, 20L); // 每秒一次

Title vs ActionBar 怎么选 ​

类型位置时长适合
sendTitle屏幕中央手动控制重要提示、过场动画、区域标题
ActionBar物品栏上方自动消失实时反馈(金币、冷却、坐标)
sendMessage聊天框留存常规消息

别滥用 Title

Title 居中且挡视线,频繁弹出会打扰玩家。重要节点用 Title,日常反馈用 ActionBar 或聊天消息。

关于旧版本的 NMS 发包 ​

1.8~1.11 期间 Bukkit 还没有 Title API,开发者得自己用 NMS 发 PacketPlayOutTitle 数据包。现在高版本直接用 sendTitle 即可,不必再碰 NMS——这也呼应底层内容的忠告:能用 API 就别用 NMS。


进阶内容到此结束。接下来进入底层内容——NMS 与发包,那是最后的手段。