Class EventResultHolder<T>

java.lang.Object
net.ixdarklord.coolcatcore.api.event.v2.core.EventResultHolder<T>
Type Parameters:
T - holder value type

public final class EventResultHolder<T> extends Object
An extension to EventResult allowing to attach any kind of value to the result, null values are not permitted.

The implementation can be used similarly to Java's Optional class, allowing for functional patterns.

Implementation is also remotely similar to CompoundEventResult.java from Architectury API.

  • Method Details

    • pass

      public static <T> EventResultHolder<T> pass()
      Type Parameters:
      T - holder value type
      Returns:
      default passing value instance
    • interrupt

      public static <T> EventResultHolder<T> interrupt(@NotNull T value)
      Type Parameters:
      T - holder value type
      Parameters:
      value - held value instance, null are not permitted
      Returns:
      interrupt instance
    • allow

      public static <T> EventResultHolder<T> allow(@NotNull T value)
      Type Parameters:
      T - holder value type
      Parameters:
      value - held value instance, null are not permitted
      Returns:
      allow instance
    • deny

      public static <T> EventResultHolder<T> deny(@NotNull T value)
      Type Parameters:
      T - holder value type
      Parameters:
      value - held value instance, null are not permitted
      Returns:
      deny instance
    • isInterrupt

      public boolean isInterrupt()
      Returns:
      does this result prevent the vanilla behavior from running
    • isPass

      public boolean isPass()
      Returns:
      does this result allow for events to continue processing and for vanilla behavior to apply
    • ifInterrupt

      public EventResultHolder<T> ifInterrupt(Consumer<? super T> action)
      Parameters:
      action - action to run if result is EventResult.INTERRUPT
      Returns:
      this instance
    • ifAllow

      public EventResultHolder<T> ifAllow(Consumer<? super T> action)
      Parameters:
      action - action to run if result is EventResult.ALLOW
      Returns:
      this instance
    • ifDeny

      public EventResultHolder<T> ifDeny(Consumer<? super T> action)
      Parameters:
      action - action to run if result is EventResult.DENY
      Returns:
      this instance
    • filter

      public EventResultHolder<T> filter(Predicate<? super T> filter)
      Parameters:
      filter - tests the contained value
      Returns:
      this instance if filter succeeds, otherwise pass()
    • map

      public <U> EventResultHolder<U> map(Function<? super T, ? extends U> mapper)
      Type Parameters:
      U - data type for new value
      Parameters:
      mapper - mapping transformer for value
      Returns:
      new holder containing the mapped value, result is unchanged
    • flatMap

      public <U> EventResultHolder<U> flatMap(Function<? super T, ? extends EventResultHolder<? extends U>> mapper)
      Type Parameters:
      U - data type for new value
      Parameters:
      mapper - mapping transformer for value
      Returns:
      new holder containing the mapped value, result is unchanged
    • getInterrupt

      public Optional<T> getInterrupt()
      Returns:
      optional value if result is EventResult.INTERRUPT
    • getAllow

      public Optional<T> getAllow()
      Returns:
      optional value if result is EventResult.ALLOW
    • getDeny

      public Optional<T> getDeny()
      Returns:
      optional value if result is EventResult.DENY
    • result

      public EventResult result()
      Returns:
      the result this holder carries
    • getValue

      public Optional<T> getValue()
      Returns:
      the attached value whenever the result interrupts (allow, deny or interrupt), empty when it passes