Skip to content

🔔自定义MM变量

ScriptPlaceholder下

类型

类型描述需要重写的方法
TRIGGER触发者parseTrigger(meta, arg)
CASTER释放者parseCaster(meta, arg)
TARGET目标parseTarget(meta, target, arg)
ENTITY实体parseEntity(entity, arg)
PARENT目标的主人parseParent(parent, arg)
WORLD世界parseWorld(world, arg)
GENERAL一般的parseGeneral(arg)
LOCATION坐标parseLocation(location, arg)
SPAWNER刷怪点parseSpawner(spawner, arg)

示例

这个js不再生效,因为这个变量被内置在插件里了,此js仅做例子参考

javascript
/**
 * 仅仅是一个例子,现在已经内置了这个变量
 * 唯一变量前名
 * 使用<类型.ap3.属性.random/min/max>调用
 */
var placeholderName = "ap3"
/**
 * 类型 使用 , 分割 所有使用的类型都需要重写对应的方法
 * TRIGGER 触发者 需要重写parseTrigger(meta, arg)
 * CASTER 释放者 需要重写parseCaster(meta, arg)
 * TARGET 目标 需要重写parseTarget(meta, target, arg)
 * ENTITY 实体 需要重写parseEntity(entity, arg)
 * PARENT 父系 需要重写parseParent(parent, arg)
 * WORLD 世界 需要重写parseWorld(world, arg)
 * GENERAL 一般 需要重写parseGeneral(arg)
 * LOCATION 坐标 需要重写parseLocation(location, arg)
 * SPAWNER 刷怪点 需要重写parseSpawner(spawner, arg)
 */
var placeholderType = "CASTER,TARGET,ENTITY,PARENT"

//重写parseCaster
function parseCaster(meta, arg) {
  return parse(meta.getCaster().getEntity(), arg)
}

//重写parseTarget
function parseTarget(meta, target, arg) {
  return parse(target, arg)
}

//重写parseEntity
function parseEntity(entity, arg) {
  return parse(entity, arg)
}

//重写parseParent
function parseParent(entity, arg) {
  return parse(entity, arg)
}

/**
 * 解析变量
 *
 * @param abstractEntity 抽象目标 被解析的实体
 * @param arg 变量字符串 这里为 ".属性.random/min/max>"
 */
function parse(abstractEntity, arg) {
  //不是AttributePlus能解析的实体就不去解析
  if (!abstractEntity.isLiving()) return false
  //需要解析的目标
  var entity = abstractEntity.getBukkitEntity()
  //通过 . 分割
  var args = arg.split(".")
  //判断 并通过AttributePlus获取属性值
  if (args[1].equalsIgnoreCase("min")) {
    return AttributeAPI.getAttrData(entity).getAttributeValue(args[0])[0]
  } else if (args[1].equalsIgnoreCase("max")) {
    return AttributeAPI.getAttrData(entity).getAttributeValue(args[0])[1]
  } else if (args[1].equalsIgnoreCase("random")) {
    return AttributeAPI.getAttrData(entity).getRandomValue(args[0])
  }
  //必须返回一个字符串
  return "null->" + args[0]
}

使用时应在变量前加一个目标,比如<caster.ap3.物理攻击.max>