Skip to content

📡自定义MM光环

ScriptMechanic下

类型

技能类型描述需要重写的方法
SKILL普通技能见自定义MM技能机制
AURA光环技能见下例子

示例

javascript
- onTest{ol=[ - message{m=我在移动啊} @self ]} @self
javascript
//唯一技能名,不可重复
var mechanicName = "onTest"
/*
  技能类型
  SKILL 一般技能 重写cast...(utils, data, skillMetadata, abstractEntity)方法 *不写默认为此类型
  AURA 光环 重写auraStart(utils, data, tracker, skillMetadata, abstractEntity, skill, cancel)方法
 */
var mechanicType = "AURA"

/**
 * 加载时运行
 *
 * @param utils 脚本工具
 * @param data 脚本数据
 * @param manager MythicMobs5独有的 在4.x版本中 manager是一个字符串"manager"
 * @param line 技能配置
 * @param lineParse 解析器 其实就是MythicConfigLine
 */
function onLoad(utils, data, manager, line, lineParse) {

}

/**
 * @param utils 脚本工具
 * @param data 脚本数据
 * @param tracker 光环追踪器
 * @param skillMetadata 技能元数据
 * @param abstractEntity 抽象目标
 * @param skill 技能,技能配置中ol中的技能
 * @param cancel 是否取消,技能配置中的cancel
 */
function auraStart(utils, data, tracker, skillMetadata, abstractEntity, skill, cancel) {

    return Packages.io.lumine.xikage.mythicmobs.utils.Events.subscribe(Packages.org.bukkit.event.player.PlayerMoveEvent.class)
        .filter(function (event) {
            return event.getPlayer().getUniqueId().equals(abstractEntity.getUniqueId())
        })
        .handler(function (event) {
            var target = Packages.io.lumine.xikage.mythicmobs.adapters.bukkit.BukkitAdapter.adapt(event.getPlayer())
            skillMetadata.setEntityTarget(target)

            if (tracker.executeAuraSkill(skill, skillMetadata)) {
                tracker.consumeCharge()
                if (cancel) {
                    event.setCancelled(true)
                }
            }
        })

}