消息、玩家与反馈
这一页覆盖最常见的即时反馈动作,以及直接修改玩家状态的动作。源码入口主要来自 ActionBuiltins 和 PlayerBuiltins。
相关页面:
- 当前成就 AST 进度语句见 成就、进度与任务
- DragonCore、命令桥和外部事件见 联动、事件与外部系统
文本反馈
发送消息
- 用法:
发送消息("文本") - 别名:
sendMsg、msg、消息 - 参数:1 个字符串,支持
&颜色代码 - 返回值:
Boolean - 补充说明:源码当前即使没有玩家上下文也会返回
true,但不会真的发送。
text
发送消息("&a任务已接取")发送标题
- 用法:
发送标题("主标题"[, "副标题", 淡入, 停留, 淡出]) - 别名:
sendTitle、title、标题 - 参数:主标题、可选副标题、可选时间参数,单位都是
tick - 返回值:
Boolean - 补充说明:默认时间是
10 / 70 / 20。没有玩家上下文时同样会直接返回true。
text
发送标题("&6成就更新", "&7继续推进挑战", 10, 50, 10)发送动作栏
- 用法:
发送动作栏("文本") - 别名:
sendActionBar、actionBar、动作栏 - 参数:1 个字符串
- 返回值:
Boolean - 补充说明:没有玩家上下文时会返回
true,但不会真正显示。
text
发送动作栏("&e当前进度: " + 获取成就进度("daily_sign"))播放音效
- 用法:
播放音效("声音名"[, 音量, 音调]) - 别名:
playSound、sound、音效 - 参数:Bukkit
Sound枚举名,可选音量和音调 - 返回值:
Boolean - 补充说明:没有玩家上下文,或声音名不是有效枚举时,返回
false。
text
播放音效("ENTITY_PLAYER_LEVELUP", 1.0, 1.2)发送粒子
- 用法:
发送粒子("粒子名"[, 数量, 范围]) - 别名:
spawnParticle、particle、粒子 - 参数:Bukkit
Particle枚举名,可选数量,和以玩家脚下为中心的扩散范围 - 返回值:
Boolean - 补充说明:默认数量是
1,默认范围是0.5。没有玩家上下文或粒子名非法时返回false。
text
发送粒子("HEART", 10, 0.5)奖励与物品
给予经验
- 用法:
给予经验(数量) - 别名:
giveExp、addExp、经验 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:没有玩家上下文时返回
false。
text
给予经验(50)给予金币
- 用法:
给予金币(数量) - 别名:
giveMoney、addMoney、金币 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:依赖 Vault。没有玩家上下文或 Vault 未就绪时返回
false。
text
给予金币(100)扣除金币
- 用法:
扣除金币(数量) - 别名:
takeMoney、removeMoney、扣钱 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:同样依赖 Vault。返回
true只表示已发起扣费调用。
text
扣除金币(25)标记物品
- 用法:
标记物品("物品类型"[, "显示名"]) - 别名:
markItem、物品标记 - 参数:物品
Material名,可选显示名 - 返回值:
Boolean - 补充说明:内部会把“当前成就 ID”交给
InventoryScanner做标记,所以它默认假设你在成就脚本上下文里调用。
text
标记物品("DIAMOND", "神秘钻石")消耗物品
- 用法:
消耗物品("物品类型"[, "显示名", 数量]) - 别名:
consumeItem、useItem、物品消耗 - 参数:物品
Material名、可选显示名、可选数量 - 返回值:
Boolean - 补充说明:忽略显示名时写
null。源码会发起消耗调用,但不会把实际匹配数量作为返回值带回来。
text
消耗物品("DIAMOND", null, 5)玩家状态
设置生命值
- 用法:
设置生命值(生命值) - 别名:
setHealth、血量设置 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:内部会自动夹到
[0, 玩家最大生命值]。
text
设置生命值(20)设置饥饿值
- 用法:
设置饥饿值(饥饿值) - 别名:
setFoodLevel、饥饿设置 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:内部会自动夹到
[0, 20]。
text
设置饥饿值(20)传送玩家
- 用法:
传送玩家(X, Y, Z) - 别名:
teleport、tp、传送 - 参数:3 个数字坐标
- 返回值:
Boolean - 补充说明:只会传送到当前玩家所在世界的目标坐标,不负责跨世界。
text
传送玩家(100, 64, 200)踢出玩家
- 用法:
踢出玩家("原因") - 别名:
kickPlayer、kick、踢出 - 参数:1 个字符串
- 返回值:
Boolean - 补充说明:原因支持
&颜色代码。
text
踢出玩家("&c挑战环境已关闭")药水效果
给予药水效果
- 用法:
给予药水效果("效果名"[, 等级, 秒数]) - 别名:
givePotion、addPotion、添加药水效果、药水效果 - 参数:效果名、可选等级、可选持续秒数
- 返回值:
Boolean - 补充说明:等级按人类习惯从
1开始写,内部会换算成 Bukkit 的amplifier = 等级 - 1。默认等级1,默认持续30秒。
text
给予药水效果("力量", 2, 10)移除药水效果
- 用法:
移除药水效果("效果名") - 别名:
removePotion、clearPotion、清除药水效果 - 参数:1 个效果名
- 返回值:
Boolean - 补充说明:效果名不合法或没有玩家上下文时返回
false。
text
移除药水效果("隐身")是否有药水效果
- 用法:
是否有药水效果("效果名") - 别名:
hasPotion、hasPotionEffect、有药水效果 - 参数:1 个效果名
- 返回值:
Boolean - 补充说明:它本质是读取动作,但通常会和本页其它反馈动作写在一起,所以放在这里一起讲。
text
判断 (是否有药水效果("夜视")) {
发送消息("&b夜视效果仍然生效中")
}清除所有药水效果
- 用法:
清除所有药水效果() - 别名:
clearAllPotions、clearPotions、移除所有药水效果 - 参数:无
- 返回值:
Boolean - 补充说明:会遍历并移除当前玩家身上的全部激活效果。
text
清除所有药水效果()药水效果名称
给予药水效果、移除药水效果、是否有药水效果 这一组除了支持 Bukkit 英文名,也直接支持下面这些中文名:
速度力量生命恢复缓慢急迫挖掘疲劳瞬间治疗瞬间伤害跳跃提升反胃抗性提升防火水下呼吸隐身失明夜视饥饿虚弱中毒凋零生命提升伤害吸收饱和发光漂浮幸运霉运
常见写法
成就推进时给即时反馈
text
增加进度 1
发送动作栏("&a进度 +1")
播放音效("ENTITY_EXPERIENCE_ORB_PICKUP", 1.0, 1.2)完成后给奖励和表现
text
发送标题("&6已完成", "&7僵尸猎人", 10, 50, 10)
给予金币(100)
给予经验(50)
发送粒子("VILLAGER_HAPPY", 20, 0.6)检查状态再处理
text
判断 (是否有药水效果("虚弱")) {
移除药水效果("虚弱")
发送消息("&a负面效果已清除")
}关键边界
- 本页大多数动作依赖
ctx.getPlayer()。没有玩家上下文时,发送消息、发送标题、发送动作栏、集成页里的消息会直接返回true,但不会真的生效。 播放音效和发送粒子都要求枚举名正确;拼错时会直接返回false。给予金币、扣除金币明确依赖 Vault,正式服上线前先确认经济桥可用。传送玩家只负责当前世界坐标跳转;跨世界要走你自己的命令、反射或其它函数。标记物品和消耗物品都是委托给InventoryScanner处理,不会把“匹配到了几件”作为脚本返回值。