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 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

      default int compareTo(@NotNull ISelectorArgument o)
      Specified by:
      compareTo in interface Comparable<ISelectorArgument>