Class Cause

  • All Implemented Interfaces:
    Iterable<Object>

    @DoNotStore
    public final class Cause
    extends Object
    implements Iterable<Object>
    A cause represents the reason or initiator of an event.

    For example, if a block of sand is placed where it drops, the block of sand would create a falling sand entity, which then would place another block of sand. The block place event for the final block of sand would have the cause chain of the block of sand -> falling sand entity.

    It is not possible to accurately describe the chain of causes in all scenarios so a best effort approach is generally acceptable. For example, a player might press a lever, activating a complex Redstone circuit, which would then launch TNT and cause the destruction of some blocks, but tracing this event would be too complicated and thus may not be attempted.

    • Method Detail

      • of

        public static Cause of​(EventContext ctx,
                               Object cause)
        Constructs a new cause with the specified event context and cause.
        Parameters:
        ctx - The event context
        cause - The direct object cause
        Returns:
        The constructed cause
      • of

        public static Cause of​(EventContext ctx,
                               Object cause,
                               Object... causes)
        Constructs a new cause with the specified event context and causes.
        Parameters:
        ctx - The event context
        cause - The direct object cause
        causes - Other associated causes
        Returns:
        The built cause
      • of

        public static Cause of​(EventContext ctx,
                               Iterable<Object> iterable)
        Constructs a new cause with the specified event context and causes.
        Parameters:
        ctx - The event context
        iterable - The associated causes
        Returns:
        The built cause
      • context

        public EventContext context()
        Gets the event context relating to this cause.
        Returns:
        The event context
      • root

        public Object root()
        Gets the root Object of this cause.
        Returns:
        The root object cause for this cause
      • first

        public <T> Optional<T> first​(Class<T> target)
        Gets the first T object of this Cause, if available.
        Type Parameters:
        T - The type of object being queried for
        Parameters:
        target - The class of the target type
        Returns:
        The first element of the type, if available
      • last

        public <T> Optional<T> last​(Class<T> target)
        Gets the last object instance of the Class of type T.
        Type Parameters:
        T - The type of object being queried for
        Parameters:
        target - The class of the target type
        Returns:
        The last element of the type, if available
      • before

        public Optional<?> before​(Class<?> clazz)
        Gets the object immediately before the object that is an instance of the Class passed in.
        Parameters:
        clazz - The class of the object
        Returns:
        The object
      • after

        public Optional<?> after​(Class<?> clazz)
        Gets the object immediately after the object that is an instance of the Class passed in.
        Parameters:
        clazz - The class to type check
        Returns:
        The object after, if available
      • containsType

        public boolean containsType​(Class<?> target)
        Returns whether the target class matches any object of this Cause.
        Parameters:
        target - The class of the target type
        Returns:
        True if found, false otherwise
      • contains

        public boolean contains​(Object object)
        Checks if this cause contains of any of the provided Object. This is the equivalent to checking based on equals(Object) for each object in this cause.
        Parameters:
        object - The object to check if it is contained
        Returns:
        True if the object is contained within this cause
      • allOf

        public <T> List<T> allOf​(Class<T> target)
        Gets an ImmutableList of all objects that are instances of the given Class type T.
        Type Parameters:
        T - The type of objects to query for
        Parameters:
        target - The class of the target type
        Returns:
        An immutable list of the objects queried
      • noneOf

        public List<Object> noneOf​(Class<?> ignoredClass)
        Gets an immutable List with all object causes that are not instances of the provided Class.
        Parameters:
        ignoredClass - The class of object types to ignore
        Returns:
        The list of objects not an instance of the provided class
      • all

        public List<Object> all()
        Gets an List of all causes within this Cause.
        Returns:
        An immutable list of all the causes
      • with

        public Cause with​(Object additional)
        Creates a new Cause where the objects are added at the end of the cause array of objects.
        Parameters:
        additional - The additional object to add
        Returns:
        The new cause
      • with

        public Cause with​(Object additional,
                          Object... additionals)
        Creates a new Cause where the objects are added at the end of the cause array of objects.
        Parameters:
        additional - The additional object to add
        additionals - The remaining objects to add
        Returns:
        The new cause
      • with

        public Cause with​(Iterable<Object> iterable)
        Creates a new Cause where the objects are added at the end of the cause array of objects.
        Parameters:
        iterable - The additional objects
        Returns:
        The new cause
      • with

        public Cause with​(Cause cause)
        Merges this cause with the other cause.
        Parameters:
        cause - The cause to merge with this
        Returns:
        The new merged cause
      • equals

        public boolean equals​(@Nullable Object object)
        Overrides:
        equals in class Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object