Skip to content

联动、事件与外部系统

这一页覆盖“把脚本作用扩展到外部插件、外部事件或系统级流程”的动作。源码入口主要来自 IntegrationBuiltins

相关页面:

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")

消息与命令桥

消息

  • 用法:消息("文本")
  • 别名:sendMessagemsg发送消息
  • 参数:1 个字符串
  • 返回值:Boolean
  • 补充说明:它是兼容入口,行为接近 发送消息。没有玩家上下文时同样会返回 true,但不会真的发出去。
text
消息("&a外部联动完成")

执行指令

  • 用法:执行指令("命令")
  • 别名:runCommandexecCmd执行命令
  • 参数:不带 / 的命令字符串
  • 返回值:Boolean
  • 补充说明:始终以控制台身份执行。如果当前上下文里有玩家,会先把命令里的 %player_name% 替换成该玩家名。
text
执行指令("give %player_name% diamond 1")

玩家执行指令

  • 用法:玩家执行指令("命令")
  • 别名:playerCommandplayerCmd玩家命令
  • 参数:不带 / 的命令字符串
  • 返回值:Boolean
  • 补充说明:当前实现即使没有玩家上下文也会返回 true,只是不会真正执行。
text
玩家执行指令("spawn")

自定义事件

触发事件

  • 用法:触发事件("事件名"[, 数据Map])
  • 别名:fireEventemitEvent发送事件广播事件
  • 参数:事件名,可选数据 Map
  • 返回值:Boolean
  • 补充说明:必须有玩家上下文,没有玩家时返回 false。调用前会自动往事件数据里补三项:
  • 触发者:玩家名
  • 触发玩家Player 对象
  • eventPlayer:同一个 Player 对象
text
导入类 HashMap = java.util.HashMap
赋值 data = new HashMap()
data.put("boss", "SkeletonKing")
触发事件("boss_killed", data)

触发全局事件

  • 用法:触发全局事件("事件名"[, 数据Map])
  • 别名:fireGlobalEventbroadcastEvent全局事件
  • 参数:事件名,可选数据 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属性处理()
  • 别名:cancelAPAttributeAP取消属性stopAPDamage
  • 参数:无
  • 返回值:Boolean
  • 补充说明:依赖当前上下文变量 apEventAP事件。找不到 AP 事件对象时直接返回 false。源码内部会尝试多种反射方式取消,包括 Attr.setCancelled(...)、事件自身的 setCancelled(...),以及把伤害改成 0 的兜底方案。
text
取消AP属性处理()

设置AP伤害

  • 用法:设置AP伤害(伤害值)
  • 别名:setAPDamageAP设置伤害
  • 参数:1 个数字
  • 返回值:Boolean
  • 补充说明:同样依赖 apEvent / AP事件。内部会依次尝试 setDamagesetAttackDamagesetTargetDamage
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 永久配置。

TQ Minecraft Server Plugin Docs