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:
  • TagResolver
  • 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 Type
    Method
    Description
    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
    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
    boolean
    has(@NonNull String name)
     
    @NonNull net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
    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.Tag
    resolve(@NonNull String name, @NonNull net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue arguments, @NonNull net.kyori.adventure.text.minimessage.Context ctx)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 far
      resolver - 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 far
      resolvers - 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:
      resolve in interface net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
      Throws:
      net.kyori.adventure.text.minimessage.ParsingException
    • has

      public boolean has(@NonNull String name)
      Specified by:
      has in interface net.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