Interface AudienceProvider.Builder<P extends AudienceProvider,​B extends AudienceProvider.Builder<P,​B>>

  • Type Parameters:
    P - provider type
    B - self type of the specific builder
    Enclosing interface:
    AudienceProvider

    public static interface AudienceProvider.Builder<P extends AudienceProvider,​B extends AudienceProvider.Builder<P,​B>>
    A builder for AudienceProvider.
    Since:
    4.0.0
    • Method Detail

      • partition

        @NotNull
        B partition​(@NotNull
                    @NotNull java.util.function.Function<Pointered,​?> partitionFunction)
        Set the partition function for the provider.

        The output of the function must have Object.equals(Object) and Object.hashCode() methods overridden to ensure efficient operation.

        The output of the partition function must also be something suitable for use as a map key and as such, for long-term storage. This excludes objects that may hold live game state like Entity or Level.

        The configured component renderer must produce the same result for two Pointered instances where this partition function provides the same output. If this condition is violated, caching issues are likely to occur, producing incorrect output for at least one of the inputs.

        A local record is a good way to produce a compound output value for this function.

        Parameters:
        partitionFunction - the partition function to apply
        Returns:
        this builder
        Since:
        4.0.0
        See Also:
        componentRenderer(Function, ComponentRenderer)
      • componentRenderer

        @NotNull
        default <T> B componentRenderer​(@NotNull
                                        @NotNull java.util.function.Function<Pointered,​T> partition,
                                        @NotNull
                                        @NotNull ComponentRenderer<T> componentRenderer)
        Sets the component renderer and partition function for the provider.

        This variant validates that the component renderer only depends on information included in the partition.

        Type Parameters:
        T - element type
        Parameters:
        partition - the partition function to extract information from audiences
        componentRenderer - a component renderer
        Returns:
        this builder
        Since:
        4.0.0
      • build

        @NotNull
        P build()
        Builds the provider.
        Returns:
        the built provider
        Since:
        4.0.0