Skip to content

消息类动作

用于向玩家发送各种类型的消息。

发送消息

向玩家发送聊天消息。

语法

javascript
action.message(选择器, 消息内容)

别名

  • action.message()
  • action.msg()
  • action.tell()

参数

参数类型说明
选择器String目标玩家选择器
消息内容String要发送的消息(支持颜色代码 & 和变量)

示例

javascript
// 基础用法
action.message('@所有玩家', '欢迎来到地牢!');
action.message('@触发者', '你触发了机关');

// 使用颜色代码
action.message('@所有玩家', '&a成功!&7你完成了任务');
action.message('@触发者', '&c警告!&7血量过低');

// 使用变量
action.message('@所有玩家', '玩家 ' + player.name + ' 触发了事件');
action.message('@所有玩家', '地牢运行时间: ' + dungeon.time + '秒');

// 使用内置变量
var kills = getVar('总击杀') || 0;
action.message('@所有玩家', '&e当前击杀: ' + kills);

发送标题

向玩家发送屏幕中央的大标题。

语法

javascript
action.title(选择器, 主标题, 副标题, [淡入时间], [停留时间], [淡出时间])

参数

参数类型必需默认值说明
选择器String-目标玩家选择器
主标题String-主标题文本
副标题String""副标题文本
淡入时间Int10淡入时间(刻,20刻=1秒)
停留时间Int70停留时间(刻)
淡出时间Int20淡出时间(刻)

示例

javascript
// 基础用法
action.title('@所有玩家', '&6地牢开始', '&7击败所有敌人');

// 完整参数
action.title('@所有玩家', '&c&lBoss战', '&7做好准备', 10, 70, 20);

// 只有主标题
action.title('@触发者', '&a&l恭喜通关');

// 使用变量
var wave = getVar('当前波次');
action.title('@所有玩家', '&c第' + wave + '波', '&7击败所有敌人');

// 倒计时标题
for (var i = 3; i > 0; i--) {
  action.title('@所有玩家', '&e' + i, '&7准备战斗');
  action.wait('1秒');
}
action.title('@所有玩家', '&a开始!', '');

发送动作栏

向玩家发送动作栏消息(物品栏上方的文本)。

语法

javascript
action.actionbar(选择器, 消息内容)

别名

  • action.actionbar()
  • action.actionbarmessage()

参数

参数类型说明
选择器String目标玩家选择器
消息内容String动作栏消息(支持颜色代码和变量)

示例

javascript
// 基础用法
action.actionbar('@所有玩家', '&e当前波次: 1');

// 实时信息显示
action.actionbar('@所有玩家', '&7时间: ' + dungeon.time + 's | 击杀: ' + (getVar('总击杀') || 0));

// 配合循环任务实时更新
// 在 tasks.yml 中
任务:
  实时进度:
    类型: "循环"
    间隔: 20  # 每秒更新
    脚本: |
      var time = dungeon.time;
      var kills = getVar('总击杀') || 0;
      action.actionbar('@所有玩家', '&7时间: &e' + time + 's &8| &7击杀: &a' + kills);

完整示例

示例1:波次进度提示

javascript
// monsters.yml - 第一波开始时
var wave = (getVar('当前波次') || 0) + 1;
setVar('当前波次', wave);

action.title('@所有玩家', '&c━━ 第' + wave + '波 ━━', '&7骷髅大军来袭');
action.message('@所有玩家', '&e[第' + wave + '波] &c骷髅大军来袭!');
action.sound('@所有玩家', 'ENTITY_ZOMBIE_AMBIENT', 2.0, 0.8);

// monsters.yml - 第一波完成时
action.title('@所有玩家', '&a━━ 完成 ━━', '&73秒后进入下一波');
action.message('@所有玩家', '&a[第' + wave + '波完成] 干得好!');

示例2:Boss 战提示

javascript
// Boss 波开始时
action.title('@所有玩家', '&c&l━━━ 最终Boss ━━━', '&4骷髅王苏醒了');
action.message('@所有玩家', '');
action.message('@所有玩家', '&c&l  ⚔ 骷髅王降临 ⚔');
action.message('@所有玩家', '');

// Boss 死亡时
action.title('@所有玩家', '&a&l━━━ 胜利 ━━━', '&e骷髅王已被击败');
action.message('@所有玩家', '');
action.message('@所有玩家', '&a&l  ★ 恭喜通关 ★');
action.message('@所有玩家', '');

示例3:完成统计

javascript
// scripts.yml - 完成脚本
var finalTime = dungeon.time;
var finalKills = getVar('总击杀') || 0;
var finalWave = getVar('当前波次') || 0;

action.title('@所有玩家', '&a&l地牢完成', '&7用时 ' + finalTime + ' 秒');

action.message('@所有玩家', '&6&l━━━━━━━━━━━━━━━━━━━━');
action.message('@所有玩家', '&e&l    地牢通关统计');
action.message('@所有玩家', '');
action.message('@所有玩家', '&7  完成波次: &e' + finalWave);
action.message('@所有玩家', '&7  总击杀数: &e' + finalKills);
action.message('@所有玩家', '&7  用时: &e' + finalTime + '秒');
action.message('@所有玩家', '');
action.message('@所有玩家', '&6&l━━━━━━━━━━━━━━━━━━━━');

示例4:实时进度条

javascript
// tasks.yml - 循环任务
任务:
  进度显示:
    类型: "循环"
    间隔: 10  # 每0.5秒更新
    脚本: |
      var kills = getVar('总击杀') || 0;
      var totalKills = 50;
      var progress = Math.floor((kills / totalKills) * 20);
      
      var bar = '&a';
      for (var i = 0; i < 20; i++) {
        bar += (i < progress) ? '█' : '&7█';
      }
      
      action.actionbar('@所有玩家', '&e击杀进度 ' + bar + ' &e' + kills + '/' + totalKills);

颜色代码参考

代码颜色代码颜色
&0黑色&8深灰色
&1深蓝色&9蓝色
&2深绿色&a绿色
&3深青色&b青色
&4深红色&c红色
&5深紫色&d粉色
&6金色&e黄色
&7灰色&f白色

格式代码

代码效果
&l粗体
&m删除线
&n下划线
&o斜体
&r重置格式

示例

javascript
action.message('@所有玩家', '&a&l[成功]&r &7任务已完成');
action.message('@所有玩家', '&c&l&n警告&r &7危险区域');
action.title('@所有玩家', '&6&l恭喜通关', '&7&o真厉害');

注意事项

  1. 性能考虑

    • 频繁发送消息可能造成刷屏
    • 使用动作栏适合实时更新的信息
    • 标题适合重要提示
  2. 颜色代码

    • 使用 & 而不是 §
    • 颜色代码会自动转换
  3. 变量替换

    • 消息中的变量会自动替换
    • 支持 JavaScript 表达式
  4. 多行消息

    • 使用多个 action.message() 调用
    • 或使用换行符(在某些情况下)

相关动作

基于 MIT 许可发布