Package cn.nukkit.command.selector.args
Class CachedSimpleSelectorArgument
java.lang.Object
cn.nukkit.command.selector.args.CachedSimpleSelectorArgument
- All Implemented Interfaces:
ISelectorArgument
,Comparable<ISelectorArgument>
@PowerNukkitXOnly
@Since("1.19.60-r1")
public abstract class CachedSimpleSelectorArgument
extends Object
implements ISelectorArgument
可缓存的目标选择器参数基类
若一个选择器的参数返回的
List<Predicate<Entity>>
不具有时效性,则可继承此类实现对解析结果的缓存,提高性能-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncache
(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) 当未在缓存中找到解析结果时,则调用此方法对参数进行解析getPredicate
(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) 根据给定的参数表返回特定的List<Predicate<Entity>>
初始化缓存时调用此方法Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface cn.nukkit.command.selector.args.ISelectorArgument
compareTo, getDefaultValue, getFilter, getKeyName, getPriority, isFilter
-
Constructor Details
-
CachedSimpleSelectorArgument
public CachedSimpleSelectorArgument()
-
-
Method Details
-
getPredicate
public Predicate<Entity> getPredicate(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) throws SelectorSyntaxException Description copied from interface:ISelectorArgument
根据给定的参数表返回特定的List<Predicate<Entity>>
- Specified by:
getPredicate
in interfaceISelectorArgument
- Parameters:
selectorType
- 选择器类型sender
- 命令发送者basePos
- 若此参数解析需要用到相对坐标,则应该以此坐标为依据 若此参数需要修改参照坐标(例如x,y,z参数),则应当在这个参数上修改 在一条解析链上的参数只会使用一个Location对象arguments
- 参数列表- Returns:
Predicate<Entity>
- Throws:
SelectorSyntaxException
- 当解析出错
-
cache
protected abstract Predicate<Entity> cache(SelectorType selectorType, CommandSender sender, Location basePos, String... arguments) throws SelectorSyntaxException 当未在缓存中找到解析结果时,则调用此方法对参数进行解析- Throws:
SelectorSyntaxException
-
provideCacheService
protected com.github.benmanes.caffeine.cache.Cache<Set<String>,Predicate<Entity>> provideCacheService()初始化缓存时调用此方法 若需要自己的缓存实现,则可覆写此方法- Returns:
Cache<Set<String>, Predicate<Entity>>
-