Skip to content

消息、玩家与反馈

这一页覆盖最常见的即时反馈动作,以及直接修改玩家状态的动作。源码入口主要来自 ActionBuiltinsPlayerBuiltins

相关页面:

文本反馈

发送消息

  • 用法:发送消息("文本")
  • 别名:sendMsgmsg消息
  • 参数:1 个字符串,支持 & 颜色代码
  • 返回值:Boolean
  • 补充说明:源码当前即使没有玩家上下文也会返回 true,但不会真的发送。
text
发送消息("&a任务已接取")

发送标题

  • 用法:发送标题("主标题"[, "副标题", 淡入, 停留, 淡出])
  • 别名:sendTitletitle标题
  • 参数:主标题、可选副标题、可选时间参数,单位都是 tick
  • 返回值:Boolean
  • 补充说明:默认时间是 10 / 70 / 20。没有玩家上下文时同样会直接返回 true
text
发送标题("&6成就更新", "&7继续推进挑战", 10, 50, 10)

发送动作栏

  • 用法:发送动作栏("文本")
  • 别名:sendActionBaractionBar动作栏
  • 参数:1 个字符串
  • 返回值:Boolean
  • 补充说明:没有玩家上下文时会返回 true,但不会真正显示。
text
发送动作栏("&e当前进度: " + 获取成就进度("daily_sign"))

播放音效

  • 用法:播放音效("声音名"[, 音量, 音调])
  • 别名:playSoundsound音效
  • 参数:Bukkit Sound 枚举名,可选音量和音调
  • 返回值:Boolean
  • 补充说明:没有玩家上下文,或声音名不是有效枚举时,返回 false
text
播放音效("ENTITY_PLAYER_LEVELUP", 1.0, 1.2)

发送粒子

  • 用法:发送粒子("粒子名"[, 数量, 范围])
  • 别名:spawnParticleparticle粒子
  • 参数:Bukkit Particle 枚举名,可选数量,和以玩家脚下为中心的扩散范围
  • 返回值:Boolean
  • 补充说明:默认数量是 1,默认范围是 0.5。没有玩家上下文或粒子名非法时返回 false
text
发送粒子("HEART", 10, 0.5)

奖励与物品

给予经验

  • 用法:给予经验(数量)
  • 别名:giveExpaddExp经验
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:没有玩家上下文时返回 false
text
给予经验(50)

给予金币

  • 用法:给予金币(数量)
  • 别名:giveMoneyaddMoney金币
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:依赖 Vault。没有玩家上下文或 Vault 未就绪时返回 false
text
给予金币(100)

扣除金币

  • 用法:扣除金币(数量)
  • 别名:takeMoneyremoveMoney扣钱
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:同样依赖 Vault。返回 true 只表示已发起扣费调用。
text
扣除金币(25)

标记物品

  • 用法:标记物品("物品类型"[, "显示名"])
  • 别名:markItem物品标记
  • 参数:物品 Material 名,可选显示名
  • 返回值:Boolean
  • 补充说明:内部会把“当前成就 ID”交给 InventoryScanner 做标记,所以它默认假设你在成就脚本上下文里调用。
text
标记物品("DIAMOND", "神秘钻石")

消耗物品

  • 用法:消耗物品("物品类型"[, "显示名", 数量])
  • 别名:consumeItemuseItem物品消耗
  • 参数:物品 Material 名、可选显示名、可选数量
  • 返回值:Boolean
  • 补充说明:忽略显示名时写 null。源码会发起消耗调用,但不会把实际匹配数量作为返回值带回来。
text
消耗物品("DIAMOND", null, 5)

玩家状态

设置生命值

  • 用法:设置生命值(生命值)
  • 别名:setHealth血量设置
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:内部会自动夹到 [0, 玩家最大生命值]
text
设置生命值(20)

设置饥饿值

  • 用法:设置饥饿值(饥饿值)
  • 别名:setFoodLevel饥饿设置
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:内部会自动夹到 [0, 20]
text
设置饥饿值(20)

传送玩家

  • 用法:传送玩家(X, Y, Z)
  • 别名:teleporttp传送
  • 参数:3 个数字坐标
  • 返回值:Boolean
  • 补充说明:只会传送到当前玩家所在世界的目标坐标,不负责跨世界。
text
传送玩家(100, 64, 200)

踢出玩家

  • 用法:踢出玩家("原因")
  • 别名:kickPlayerkick踢出
  • 参数:1 个字符串
  • 返回值:Boolean
  • 补充说明:原因支持 & 颜色代码。
text
踢出玩家("&c挑战环境已关闭")

药水效果

给予药水效果

  • 用法:给予药水效果("效果名"[, 等级, 秒数])
  • 别名:givePotionaddPotion添加药水效果药水效果
  • 参数:效果名、可选等级、可选持续秒数
  • 返回值:Boolean
  • 补充说明:等级按人类习惯从 1 开始写,内部会换算成 Bukkit 的 amplifier = 等级 - 1。默认等级 1,默认持续 30 秒。
text
给予药水效果("力量", 2, 10)

移除药水效果

  • 用法:移除药水效果("效果名")
  • 别名:removePotionclearPotion清除药水效果
  • 参数:1 个效果名
  • 返回值:Boolean
  • 补充说明:效果名不合法或没有玩家上下文时返回 false
text
移除药水效果("隐身")

是否有药水效果

  • 用法:是否有药水效果("效果名")
  • 别名:hasPotionhasPotionEffect有药水效果
  • 参数:1 个效果名
  • 返回值:Boolean
  • 补充说明:它本质是读取动作,但通常会和本页其它反馈动作写在一起,所以放在这里一起讲。
text
判断 (是否有药水效果("夜视")) {
  发送消息("&b夜视效果仍然生效中")
}

清除所有药水效果

  • 用法:清除所有药水效果()
  • 别名:clearAllPotionsclearPotions移除所有药水效果
  • 参数:无
  • 返回值: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 处理,不会把“匹配到了几件”作为脚本返回值。

TQ Minecraft Server Plugin Docs