Vulpecular 是免费的,但目前测试阶段暂不提供 jar 文件,你可以通过以下步骤自行构建插件。
Windows 平台
gradlew.bat clean build
macOS/Linux 平台
./gradlew clean build
- 简介
- 计划
- Target 语句
- Target Selector 目标选择器
- Target Filter 目标过滤器
- Target Foreach 目标迭代器
Vulpecular 是一款基于 Kether 语法的拓展插件
我的初衷是将其开发成为一款可高度自定义的技能插件
并搭配 Zaphkiel 插件实现更多奇妙功能
但却不只用它来制作技能,我希望它将来能够做到更多的功能
未来我也会添加更多实用有趣的语句或功能
感谢您的支持!
- entity 语句
- target 语句
- Target Selector 目标选择器
- Target Filter 目标过滤器
- Target Foreach 目标迭代器
- vector 语句
主要掌管与目标相关的功能
用于获取目标、筛选目标、遍历目标集合等
目前拥有以下三个子语句
- Target Selector 目标选择器
- Target Filter 目标过滤器
- Target Foreach 目标迭代器
写法
target sel {selector} [ {parameters} ]
target select {selector} [ {parameters} ]
target selector {selector} [ {parameters} ]
在释放技能时往往需要对目标实体进行释放
而目标选择器就是用来选取技能释放的目标实体
主要用于获取单个目标对象或多个目标对象的集合
单实体选择器返回 Any 对象
多实体选择器返回 Collection<Any> 集合对象
不同的选择器在参数以及简写方面有所区别,详见具体的实体选择器
选择器 (selector) | 简写 | 参数 (parameters) | 备注 |
---|---|---|---|
self | @self | 无 | 选择脚本执行者自身为目标 |
player | @player | name | 根据给定的 name 选择指定 Player |
选取脚本执行者 sender 自身作为目标对象
target sel self
以上语句可直接简写为
@Self
// 常规用法
target sel player *name
// 简写
@Player *name
根据给定的 name 选择对应的玩家作为目标
例子
// 选取名为 Lanscarlos 的玩家
target sel player *Lanscarlos
// 以上语句可直接简写为
@Player *Lanscarlos
选择器 | 简写 | 参数 | 备注 |
---|---|---|---|
EntitiesInRadius | eir,@EIR | location,radius | 根据给定的 location 坐标选取附近半径 radius 内的所有实体 |
LivingEntitiesInRadius | leir,@LEIR | location,radius | 根据给定的 location 坐标选取附近半径 radius 内的所有生物 |
// 常规用法
target sel eir *location *radius
// 简写
@EIR *location *radius
根据给定的 location 坐标选取其附近半径 radius 内的所有实体
location除了可以传入坐标对象外,还可以传入实体对象,插件会自动从实体对象中获取其坐标
例子
使用 location 语句构建坐标对象
// 定义坐标对象 并将其赋值给参数 loc
set loc to location *world *0 *0 *0
// 选取坐标 loc 附近 10 格内的所有实体(Entity)
target sel eir &loc *10
此外,语句可直接简写为
@EIR &loc *10
当脚本执行者为玩家时
可以传入 @self 实体对象充当坐标
此时坐标即为玩家对象当前的坐标
@EIR @self *10
target filter {targets} {filter} {parameters}
参数:
targets 给定的目标集合 Colletion<Any>
filter 给定的过滤器
通常使用选择器获取到实体集合后
我们需要对里面的一些实体进行筛选
这个时候就需要用到目标过滤器来筛选出符合期望的实体
过滤器通常返回过滤后的实体集合 Colletion<Any>
过滤器可直接写在选择器后面,极大简化语句
// 常规写法 (与 EntitiesInRadius 选择器连用)
target sel eir &loc *10 filter {filter} {parameters}
// 将选择器 EntitiesInRadius 简化后写法
@EIR &loc *10 filter {filter} {parameters}
过滤器可支持多个过滤器的链式调用,极大简化语句
若您在使用过程中需要用到多个过滤器
我们建议您使用链式调用来简化您的语句
// 常规写法
target filter {targets} {filter} {parameters} [ filter {filter} {parameters} ]...
与选择器 EntitiesInRadius 连用简化后写法
@EIR &loc *10 filter {filter} {parameters} [ filter {filter} {parameters} ]...
下面以 instance、type 过滤器为例 进行链式调用
先筛选所有属于 Animals 接口的实体,接着筛选所有实体类型为 cow 与 pig 的实体
// 先获取目标集合并赋值于参数 targets
set targets to @EIR &loc *10
// 常规写法
target filter &targets instance *animals filter type [ *cow *pig ]
与选择器 EntitiesInRadius 连用简化后写法
@EIR &loc *10 filter instance *animals filter type [ *cow *pig ]
过滤器 (filter) | 简写 | 参数 (parameters) | 备注 |
---|---|---|---|
foreach | none | condition | 遍历每一个实体并筛选出符合 condition 条件的实体 |
instance | inst | string | 根据给定的 类 过滤对应实体 |
type | 无 | array | 根据给定的 tpye 类型过滤实体 |
// 常规用法
target filter {targets} foreach *condition
target filter {targets} foreach by <key> *condition
// 与选择器连用写法
@EIR @self *10 filter foreach *condition
@EIR @self *10 filter foreach by <key> *condition
根据给定的 condition 条件遍历 targets 所有实体并筛选出符合条件的实体
在 condition 中,默认 it 参数为当前遍历的实体
当然你也可通过 by <key> 语句来定义参数 key 为当前遍历的实体的参数
例子 与选择器连用,遍历每一个实体
// 定义坐标并将其赋值给参数 loc
set loc to location *world *0 *0 *0
// 遍历每一个实体, 将所有 生命值>=10 的实体过滤出来
@EIR &loc *10 filter foreach {
// 默认 it 参数为当前遍历的个体
check entity &it health >= *10
}
定义 el 参数为当前遍历的个体
@EIR &loc *10 filter foreach by el {
check entity &el health >= *10
}
// 常规用法
target filter {targets} inst *name
根据给定的 name 类/接口来遍历 targets 中的所有实体并筛选出继承此 类/接口 的实体
注意!这里的 name 是指程序包 org.bukkit.entity 下实体对应的 类/接口 的名字
大小写均可
例子
将所有属于 Animals 的实体筛选出来
@EIR &loc *10 filter inst *animals
// 常规用法
target filter {targets} type [ *type1 *type2... ]
根据给定的 type 筛选 targets 中的所有符合给定的类型的实体
注意!这里的 type 是指 实体的类型 EntityType
例子
将所有实体为 chicken 跟 cow 的实体筛选出来
@EIR &loc *10 filter inst *animals