主题
消息类动作
用于向玩家发送各种类型的消息。
发送消息
向玩家发送聊天消息。
语法
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 | 否 | "" | 副标题文本 |
| 淡入时间 | Int | 否 | 10 | 淡入时间(刻,20刻=1秒) |
| 停留时间 | Int | 否 | 70 | 停留时间(刻) |
| 淡出时间 | Int | 否 | 20 | 淡出时间(刻) |
示例
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真厉害');注意事项
性能考虑
- 频繁发送消息可能造成刷屏
- 使用动作栏适合实时更新的信息
- 标题适合重要提示
颜色代码
- 使用
&而不是§ - 颜色代码会自动转换
- 使用
变量替换
- 消息中的变量会自动替换
- 支持 JavaScript 表达式
多行消息
- 使用多个
action.message()调用 - 或使用换行符(在某些情况下)
- 使用多个
