Class LazyTagResolver
java.lang.Object
net.flectone.pulse.util.tag.LazyTagResolver
- All Implemented Interfaces:
net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
public final class LazyTagResolver
extends Object
implements net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
Stack of tag resolvers that is merged into a single resolver only when a tag is first looked up.
TagResolver.resolver(TagResolver...) merges every resolver it is given into a new map and
a new array, so merging on each addition copies the whole stack again and again, which is
quadratic in the number of formatting modules a message goes through- Since:
- 1.13.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
net.kyori.adventure.text.minimessage.tag.resolver.TagResolver.Builder, net.kyori.adventure.text.minimessage.tag.resolver.TagResolver.Single, net.kyori.adventure.text.minimessage.tag.resolver.TagResolver.WithoutArguments -
Method Summary
Modifier and TypeMethodDescriptionstatic @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolverappend(@Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver current, @Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver resolver) Stacks a resolver on top of the current onesstatic @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolverappendAll(@Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver current, net.kyori.adventure.text.minimessage.tag.resolver.TagResolver @NonNull ... resolvers) Stacks several resolvers on top of the current onesboolean@NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolvermerged()Merges the whole stack into a single resolver on first use and keeps it for the calls after that.@Nullable net.kyori.adventure.text.minimessage.tag.Tagresolve(@NonNull String name, @NonNull net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue arguments, @NonNull net.kyori.adventure.text.minimessage.Context ctx)
-
Method Details
-
append
public static @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolver append(@Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver current, @Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver resolver) Stacks a resolver on top of the current ones- Parameters:
current- the resolvers stacked so farresolver- the resolver to add- Returns:
- the stacked resolver, or an empty resolver if there is nothing to stack
-
appendAll
public static @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolver appendAll(@Nullable net.kyori.adventure.text.minimessage.tag.resolver.TagResolver current, net.kyori.adventure.text.minimessage.tag.resolver.TagResolver @NonNull ... resolvers) Stacks several resolvers on top of the current ones- Parameters:
current- the resolvers stacked so farresolvers- the resolvers to add- Returns:
- the stacked resolver, or an empty resolver if there is nothing to stack
-
resolve
public @Nullable net.kyori.adventure.text.minimessage.tag.Tag resolve(@NonNull String name, @NonNull net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue arguments, @NonNull net.kyori.adventure.text.minimessage.Context ctx) throws net.kyori.adventure.text.minimessage.ParsingException - Specified by:
resolvein interfacenet.kyori.adventure.text.minimessage.tag.resolver.TagResolver- Throws:
net.kyori.adventure.text.minimessage.ParsingException
-
has
- Specified by:
hasin interfacenet.kyori.adventure.text.minimessage.tag.resolver.TagResolver
-
merged
public @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolver merged()Merges the whole stack into a single resolver on first use and keeps it for the calls after that.- Returns:
- the merged resolver
-