Lanscarlos / Vulpecula-Deprecated

已弃用,请查看最新版仓库 https://github.com/Lanscarlos/Vulpecula

Home Page:https://lanscarlos.gitbook.io/vulpecular/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vulpecular

Vulpecular 是免费的,但目前测试阶段暂不提供 jar 文件,你可以通过以下步骤自行构建插件。

Windows 平台

gradlew.bat clean build

macOS/Linux 平台

./gradlew clean build



目录




简介

Vulpecular 是一款基于 Kether 语法的拓展插件

我的初衷是将其开发成为一款可高度自定义的技能插件

并搭配 Zaphkiel 插件实现更多奇妙功能

但却不只用它来制作技能,我希望它将来能够做到更多的功能

未来我也会添加更多实用有趣的语句或功能

感谢您的支持!




计划


Target 语句

主要掌管与目标相关的功能

用于获取目标、筛选目标、遍历目标集合等

目前拥有以下三个子语句

Target Selector 目标选择器

写法

target sel {selector} [ {parameters} ]
target select {selector} [ {parameters} ]
target selector {selector} [ {parameters} ]

在释放技能时往往需要对目标实体进行释放
而目标选择器就是用来选取技能释放的目标实体
主要用于获取单个目标对象或多个目标对象的集合
单实体选择器返回 Any 对象
多实体选择器返回 Collection<Any> 集合对象


不同的选择器在参数以及简写方面有所区别,详见具体的实体选择器


单实体选择器

选择器 (selector) 简写 参数 (parameters) 备注
self @self 选择脚本执行者自身为目标
player @player name 根据给定的 name 选择指定 Player


实体选择器 Self

选取脚本执行者 sender 自身作为目标对象

target sel self

以上语句可直接简写为

@Self

实体选择器 Player

// 常规用法
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 内的所有生物


实体选择器 EntitiesInRadius

// 常规用法
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 目标过滤器

target filter {targets} {filter} {parameters}

参数:
targets 给定的目标集合 Colletion<Any>
filter 给定的过滤器

通常使用选择器获取到实体集合后
我们需要对里面的一些实体进行筛选
这个时候就需要用到目标过滤器来筛选出符合期望的实体

过滤器通常返回过滤后的实体集合 Colletion<Any>


与目标选择器 Target Selector 连用

过滤器可直接写在选择器后面,极大简化语句

// 常规写法 (与 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} ]...

下面以 instancetype 过滤器为例 进行链式调用
先筛选所有属于 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 类型过滤实体

目标过滤器 Foreach

// 常规用法
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
}

目标过滤器 Instance

// 常规用法
target filter {targets} inst *name

根据给定的 name 类/接口来遍历 targets 中的所有实体并筛选出继承此 类/接口 的实体
注意!这里的 name 是指程序包 org.bukkit.entity 下实体对应的 类/接口 的名字
大小写均可


例子
将所有属于 Animals 的实体筛选出来

@EIR &loc *10 filter inst *animals

目标过滤器 Type

// 常规用法
target filter {targets} type [ *type1 *type2... ]

根据给定的 type 筛选 targets 中的所有符合给定的类型的实体
注意!这里的 type 是指 实体的类型 EntityType


例子
将所有实体为 chicken 跟 cow 的实体筛选出来

@EIR &loc *10 filter inst *animals

About

已弃用,请查看最新版仓库 https://github.com/Lanscarlos/Vulpecula

https://lanscarlos.gitbook.io/vulpecular/

License:Creative Commons Zero v1.0 Universal


Languages

Language:Kotlin 100.0%