Class FoliaSignals

java.lang.Object
me.tamkungz.signals.folia.FoliaSignals
All Implemented Interfaces:
me.tamkungz.signals.bukkit.event.EventSignalSource

public final class FoliaSignals extends Object implements me.tamkungz.signals.bukkit.event.EventSignalSource
BukkitSignals for Folia: the same signals, plus listeners that hop to the thread they need.

On Folia a Bukkit event is fired on the thread of the region that owns it, and a listener may only touch blocks, chunks and entities of that region. When a listener has to work on something owned by another region (the world around a location, another player, ...), connect it with connectRegion(Signal, Function, Consumer), connectEntity(Signal, Function, Consumer), connectGlobal(Signal, Consumer) or connectAsync(Signal, Consumer). Those run the listener inline when the current thread already is the right one and schedule it otherwise.

Signals and connections are thread-safe, so plain connect calls from any region thread are fine.

A listener that had to be scheduled runs after the event has already finished, so calls such as setCancelled or setMessage on that event no longer change the outcome. Use a plain connect on the signal when the listener has to decide the event.

  • Method Summary

    Modifier and Type
    Method
    Description
    me.tamkungz.signals.bukkit.event.BlockSignals
    Returns shortcuts for block events.
    me.tamkungz.signals.bukkit.BukkitSignals
    Returns the Bukkit bridge behind this one.
    me.tamkungz.signals.SignalBus
    bus()
    Returns the signal bus behind this bridge.
    <T> me.tamkungz.signals.connection.Connection
    connectAsync(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
    Connects a listener that always runs on an async thread and tracks it in a group.
    <T> me.tamkungz.signals.connection.Connection
    connectAsync(me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
    Connects a listener that always runs on an async thread, never on a region thread.
    <T> me.tamkungz.signals.connection.Connection
    connectEntity(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.entity.Entity> locator, Consumer<T> listener)
    Connects a listener that runs on the region thread of an entity taken from the payload and tracks it in a group.
    <T> me.tamkungz.signals.connection.Connection
    connectEntity(me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.entity.Entity> locator, Consumer<T> listener)
    Connects a listener that runs on the thread of the region that owns an entity taken from the payload.
    <T> me.tamkungz.signals.connection.Connection
    connectGlobal(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
    Connects a listener that runs on the global region thread and tracks it in a group.
    <T> me.tamkungz.signals.connection.Connection
    connectGlobal(me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
    Connects a listener that runs on the global region thread.
    <T> me.tamkungz.signals.connection.Connection
    connectRegion(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.Location> locator, Consumer<T> listener)
    Connects a listener that runs on the region thread of a location taken from the payload and tracks it in a group.
    <T> me.tamkungz.signals.connection.Connection
    connectRegion(me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.Location> locator, Consumer<T> listener)
    Connects a listener that runs on the thread of the region that owns a location taken from the payload.
    create(org.bukkit.plugin.Plugin plugin)
    Creates a bridge with its own signal bus.
    create(org.bukkit.plugin.Plugin plugin, me.tamkungz.signals.SignalBus bus)
    Creates a bridge on an existing signal bus.
    me.tamkungz.signals.bukkit.event.EntitySignals
    Returns shortcuts for entity events.
    me.tamkungz.signals.bukkit.event.InventorySignals
    Returns shortcuts for inventory events.
    me.tamkungz.signals.bukkit.event.PlayerSignals
    Returns shortcuts for player events.
    Returns the scheduler wrapper of this bridge.
    Returns a bridge over the one shared by every plugin through the installed SignalsLib plugin.
    <T extends org.bukkit.event.Event>
    me.tamkungz.signals.Signal<T>
    signal(Class<T> eventType, org.bukkit.event.EventPriority priority, boolean ignoreCancelled)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface me.tamkungz.signals.bukkit.event.EventSignalSource

    on, signal
  • Method Details

    • create

      public static FoliaSignals create(org.bukkit.plugin.Plugin plugin)
      Creates a bridge with its own signal bus.
      Parameters:
      plugin - plugin that owns the Bukkit listeners and the scheduled tasks
      Returns:
      a new bridge
    • create

      public static FoliaSignals create(org.bukkit.plugin.Plugin plugin, me.tamkungz.signals.SignalBus bus)
      Creates a bridge on an existing signal bus.
      Parameters:
      plugin - plugin that owns the Bukkit listeners and the scheduled tasks
      bus - bus the signals live on
      Returns:
      a new bridge
    • shared

      public static FoliaSignals shared()
      Returns a bridge over the one shared by every plugin through the installed SignalsLib plugin.

      Events and listeners are shared with BukkitSignals.shared(); scheduled tasks belong to SignalsLib.

      Returns:
      a bridge over the shared signals
    • bukkit

      public me.tamkungz.signals.bukkit.BukkitSignals bukkit()
      Returns the Bukkit bridge behind this one.
      Returns:
      the Bukkit bridge
    • bus

      public me.tamkungz.signals.SignalBus bus()
      Returns the signal bus behind this bridge.
      Returns:
      the signal bus
    • scheduler

      public FoliaScheduler scheduler()
      Returns the scheduler wrapper of this bridge.
      Returns:
      the scheduler
    • signal

      public <T extends org.bukkit.event.Event> me.tamkungz.signals.Signal<T> signal(Class<T> eventType, org.bukkit.event.EventPriority priority, boolean ignoreCancelled)
      Specified by:
      signal in interface me.tamkungz.signals.bukkit.event.EventSignalSource
    • players

      public me.tamkungz.signals.bukkit.event.PlayerSignals players()
      Returns shortcuts for player events.
      Returns:
      player signals
    • blocks

      public me.tamkungz.signals.bukkit.event.BlockSignals blocks()
      Returns shortcuts for block events.
      Returns:
      block signals
    • entities

      public me.tamkungz.signals.bukkit.event.EntitySignals entities()
      Returns shortcuts for entity events.
      Returns:
      entity signals
    • inventories

      public me.tamkungz.signals.bukkit.event.InventorySignals inventories()
      Returns shortcuts for inventory events.
      Returns:
      inventory signals
    • connectGlobal

      public <T> me.tamkungz.signals.connection.Connection connectGlobal(me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
      Connects a listener that runs on the global region thread.
      Type Parameters:
      T - payload type
      Parameters:
      signal - signal to listen to
      listener - listener to call
      Returns:
      the connection for this listener
    • connectGlobal

      public <T> me.tamkungz.signals.connection.Connection connectGlobal(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
      Connects a listener that runs on the global region thread and tracks it in a group.
      Type Parameters:
      T - payload type
      Parameters:
      group - group that will disconnect the listener
      signal - signal to listen to
      listener - listener to call
      Returns:
      the connection for this listener
    • connectAsync

      public <T> me.tamkungz.signals.connection.Connection connectAsync(me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
      Connects a listener that always runs on an async thread, never on a region thread.
      Type Parameters:
      T - payload type
      Parameters:
      signal - signal to listen to
      listener - listener to call
      Returns:
      the connection for this listener
    • connectAsync

      public <T> me.tamkungz.signals.connection.Connection connectAsync(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Consumer<T> listener)
      Connects a listener that always runs on an async thread and tracks it in a group.
      Type Parameters:
      T - payload type
      Parameters:
      group - group that will disconnect the listener
      signal - signal to listen to
      listener - listener to call
      Returns:
      the connection for this listener
    • connectRegion

      public <T> me.tamkungz.signals.connection.Connection connectRegion(me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.Location> locator, Consumer<T> listener)
      Connects a listener that runs on the thread of the region that owns a location taken from the payload.
      Type Parameters:
      T - payload type
      Parameters:
      signal - signal to listen to
      locator - picks the location from the payload, must not return null
      listener - listener to call
      Returns:
      the connection for this listener
    • connectRegion

      public <T> me.tamkungz.signals.connection.Connection connectRegion(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.Location> locator, Consumer<T> listener)
      Connects a listener that runs on the region thread of a location taken from the payload and tracks it in a group.
      Type Parameters:
      T - payload type
      Parameters:
      group - group that will disconnect the listener
      signal - signal to listen to
      locator - picks the location from the payload, must not return null
      listener - listener to call
      Returns:
      the connection for this listener
    • connectEntity

      public <T> me.tamkungz.signals.connection.Connection connectEntity(me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.entity.Entity> locator, Consumer<T> listener)
      Connects a listener that runs on the thread of the region that owns an entity taken from the payload.

      If the entity is removed before the listener gets to run, that call is dropped.

      Type Parameters:
      T - payload type
      Parameters:
      signal - signal to listen to
      locator - picks the entity from the payload, must not return null
      listener - listener to call
      Returns:
      the connection for this listener
    • connectEntity

      public <T> me.tamkungz.signals.connection.Connection connectEntity(me.tamkungz.signals.connection.ConnectionGroup group, me.tamkungz.signals.Signal<T> signal, Function<? super T, ? extends org.bukkit.entity.Entity> locator, Consumer<T> listener)
      Connects a listener that runs on the region thread of an entity taken from the payload and tracks it in a group.
      Type Parameters:
      T - payload type
      Parameters:
      group - group that will disconnect the listener
      signal - signal to listen to
      locator - picks the entity from the payload, must not return null
      listener - listener to call
      Returns:
      the connection for this listener