联动、事件与外部系统
这一页覆盖“把脚本作用扩展到外部插件、外部事件或系统级流程”的动作。源码入口主要来自 IntegrationBuiltins。
相关页面:
- 当前成就 AST 进度语句见 成就、进度与任务
- 读取型集成函数见 成就、变量与集成读取 和 集成与外部能力
- 需要直接反射第三方类时,见 反射与导入类
DragonCore
设置龙核槽位物品
- 用法:
设置龙核槽位物品("槽位ID", 物品) - 别名:
DC设置槽位、setDragonSlotItem、龙核设置槽位 - 参数:DragonCore 槽位 ID、
ItemStack - 返回值:
Boolean - 补充说明:内部通过反射调用 DragonCore
SlotAPI,并同步等待回调。当前源码单次最多等待约500ms。
text
设置龙核槽位物品("ach_slot", item)清空龙核槽位
- 用法:
清空龙核槽位("槽位ID") - 别名:
DC清空槽位、clearDragonSlot、龙核清空槽位 - 参数:1 个槽位 ID
- 返回值:
Boolean - 补充说明:本质上是把该槽位写成
null。同样依赖 DragonCore 接口和回调。
text
清空龙核槽位("ach_slot")消息与命令桥
消息
- 用法:
消息("文本") - 别名:
sendMessage、msg、发送消息 - 参数:1 个字符串
- 返回值:
Boolean - 补充说明:它是兼容入口,行为接近 发送消息。没有玩家上下文时同样会返回
true,但不会真的发出去。
text
消息("&a外部联动完成")执行指令
- 用法:
执行指令("命令") - 别名:
runCommand、execCmd、执行命令 - 参数:不带
/的命令字符串 - 返回值:
Boolean - 补充说明:始终以控制台身份执行。如果当前上下文里有玩家,会先把命令里的
%player_name%替换成该玩家名。
text
执行指令("give %player_name% diamond 1")玩家执行指令
- 用法:
玩家执行指令("命令") - 别名:
playerCommand、playerCmd、玩家命令 - 参数:不带
/的命令字符串 - 返回值:
Boolean - 补充说明:当前实现即使没有玩家上下文也会返回
true,只是不会真正执行。
text
玩家执行指令("spawn")自定义事件
触发事件
- 用法:
触发事件("事件名"[, 数据Map]) - 别名:
fireEvent、emitEvent、发送事件、广播事件 - 参数:事件名,可选数据
Map - 返回值:
Boolean - 补充说明:必须有玩家上下文,没有玩家时返回
false。调用前会自动往事件数据里补三项: 触发者:玩家名触发玩家:Player对象eventPlayer:同一个Player对象
text
导入类 HashMap = java.util.HashMap
赋值 data = new HashMap()
data.put("boss", "SkeletonKing")
触发事件("boss_killed", data)触发全局事件
- 用法:
触发全局事件("事件名"[, 数据Map]) - 别名:
fireGlobalEvent、broadcastEvent、全局事件 - 参数:事件名,可选数据
Map - 返回值:
Boolean - 补充说明:会遍历所有在线玩家,对每个在线玩家都调用一次
TriggerManager.triggerCustomEvent(...)。如果当前脚本本身有源玩家,还会额外补两项: 来源玩家:源玩家名sourcePlayer:源玩家Player对象- 补充说明:这里传给触发器的“当前玩家”会换成每一个在线玩家自己,不是一直固定为源玩家。
text
导入类 HashMap = java.util.HashMap
赋值 data = new HashMap()
data.put("event", "double_exp")
触发全局事件("server_campaign_start", data)MythicMobs
禁用MM技能
- 用法:
禁用MM技能([秒数]) - 别名:
disableMMSkill、禁止MM技能、blockMMSkill - 参数:可选秒数,默认
5 - 返回值:
Boolean - 补充说明:没有玩家上下文时返回
false。内部实现不是直接改 MythicMobs 数据,而是把玩家UUID -> 过期时间存进 AchieveMaster 自己的静态表里,由监听逻辑决定是否拦截。
text
禁用MM技能(5)启用MM技能
- 用法:
启用MM技能() - 别名:
enableMMSkill、允许MM技能、unblockMMSkill - 参数:无
- 返回值:
Boolean - 补充说明:本质上是把当前玩家从禁用表里移除。
text
启用MM技能()AttributePlus
取消AP属性处理
- 用法:
取消AP属性处理() - 别名:
cancelAPAttribute、AP取消属性、stopAPDamage - 参数:无
- 返回值:
Boolean - 补充说明:依赖当前上下文变量
apEvent或AP事件。找不到 AP 事件对象时直接返回false。源码内部会尝试多种反射方式取消,包括Attr.setCancelled(...)、事件自身的setCancelled(...),以及把伤害改成0的兜底方案。
text
取消AP属性处理()设置AP伤害
- 用法:
设置AP伤害(伤害值) - 别名:
setAPDamage、AP设置伤害 - 参数:1 个数字
- 返回值:
Boolean - 补充说明:同样依赖
apEvent/AP事件。内部会依次尝试setDamage、setAttackDamage、setTargetDamage。
text
设置AP伤害(100.0)常见写法
触发自定义事件,交给别的成就监听
text
导入类 HashMap = java.util.HashMap
赋值 data = new HashMap()
data.put("boss", mm.id)
data.put("killer", 获取玩家名())
触发事件("boss_killed", data)成就完成后刷新 DragonCore 界面
text
设置龙核槽位物品("ach_slot", item)
消息("&a面板已更新")阶段中暂时禁用 MythicMobs 技能
text
禁用MM技能(8)
发送消息("&c技能已被压制 8 秒")在 AP 事件里改伤害
text
判断 (获取玩家名() == "BossTester") {
设置AP伤害(250.0)
}关键边界
设置龙核槽位物品和清空龙核槽位都依赖 DragonCore 反射接口。DragonCore 不可用时会返回false。- DragonCore 相关动作内部有同步等待回调,别在超高频触发器里反复轮询。
执行指令不要求玩家上下文;玩家执行指令名义上要求玩家,但当前实现没有玩家时也会返回true。触发事件必须有玩家;触发全局事件即使没有源玩家也能广播,只是不会补来源玩家/sourcePlayer。取消AP属性处理、设置AP伤害只在 AP 相关触发器里有意义。上下文里没有apEvent/AP事件时,它们不会生效。- MythicMobs 技能禁用是 AchieveMaster 自己维护的运行时状态,不是直接写进 MythicMobs 永久配置。