🔔自定义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>
