Package cn.nukkit.command.selector.args
Interface ISelectorArgument
- All Superinterfaces:
Comparable<ISelectorArgument>
- All Known Implementing Classes:
C
,CachedFilterSelectorArgument
,CachedSimpleSelectorArgument
,CoordinateArgument
,DX
,DY
,DZ
,L
,LM
,M
,Name
,R
,RM
,RX
,RXM
,RY
,RYM
,ScopeArgument
,Scores
,Tag
,Type
,X
,Y
,Z
@PowerNukkitXOnly
@Since("1.19.60-r1")
public interface ISelectorArgument
extends Comparable<ISelectorArgument>
此接口描述了一个选择器参数
-
Method Summary
Modifier and TypeMethodDescriptiondefault int
default String
getDefaultValue
(Map<String, List<String>> values, SelectorType selectorType, CommandSender sender) 若一个参数有默认值(即此方法返回非null值),则在解析时若给定参数表中没有此参数,会以此默认值参与解析getFilter
(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) 仅当方法isFilter()返回true时调用此方法获取此参数的名称getPredicate
(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) 根据给定的参数表返回特定的List<Predicate<Entity>>
int
解析优先级定义了各个参数的解析顺序default boolean
isFilter()
是否启用过滤器模式
-
Method Details
-
getPredicate
@Nullable default Predicate<Entity> getPredicate(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) throws SelectorSyntaxException 根据给定的参数表返回特定的List<Predicate<Entity>>
- Parameters:
arguments
- 参数列表selectorType
- 选择器类型sender
- 命令发送者basePos
- 若此参数解析需要用到相对坐标,则应该以此坐标为依据 若此参数需要修改参照坐标(例如x,y,z参数),则应当在这个参数上修改 在一条解析链上的参数只会使用一个Location对象- Returns:
Predicate<Entity>
- Throws:
SelectorSyntaxException
- 当解析出错
-
getFilter
default Function<List<Entity>,List<Entity>> getFilter(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) throws SelectorSyntaxException 仅当方法isFilter()返回true时调用此方法 方法返回的实体集合将传递到下一个参数- Parameters:
arguments
- 参数列表selectorType
- 选择器类型sender
- 命令发送者basePos
- 若此参数解析需要用到相对坐标,则应该以此坐标为依据 若此参数需要修改参照坐标(例如x,y,z参数),则应当在这个参数上修改 在一条解析链上的参数只会使用一个Location对象- Returns:
- 实体过滤器
- Throws:
SelectorSyntaxException
- 当解析出错
-
getKeyName
String getKeyName()获取此参数的名称- Returns:
- 参数名称
-
getPriority
int getPriority()解析优先级定义了各个参数的解析顺序 优先级越高(数字越小)的参数,其越先被解析,且其解析结果将会影响下个参数的解析- Returns:
- 此参数的解析优先级
-
isFilter
default boolean isFilter()是否启用过滤器模式 若一个参数为过滤器模式,解析器将不会调用getPredicate()方法而是调用filter()方法 这意味着参数将对到达此参数节点的所有实体进行检测,而不是相对于单个实体进行检测 对于部分参数(例如"c"),需要启用此功能- Returns:
- 是否启用过滤器模式
-
getDefaultValue
@Nullable default String getDefaultValue(Map<String, List<String>> values, SelectorType selectorType, CommandSender sender) 若一个参数有默认值(即此方法返回非null值),则在解析时若给定参数表中没有此参数,会以此默认值参与解析- Parameters:
values
- 参数列表selectorType
- 选择器类型sender
- 命令执行者- Returns:
- 此参数的默认值
-
compareTo
- Specified by:
compareTo
in interfaceComparable<ISelectorArgument>
-