Class FoliaSignals
- All Implemented Interfaces:
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 TypeMethodDescriptionme.tamkungz.signals.bukkit.event.BlockSignalsblocks()Returns shortcuts for block events.me.tamkungz.signals.bukkit.BukkitSignalsbukkit()Returns the Bukkit bridge behind this one.me.tamkungz.signals.SignalBusbus()Returns the signal bus behind this bridge.<T> me.tamkungz.signals.connection.ConnectionconnectAsync(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.ConnectionconnectAsync(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.ConnectionconnectEntity(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.ConnectionconnectEntity(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.ConnectionconnectGlobal(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.ConnectionconnectGlobal(me.tamkungz.signals.Signal<T> signal, Consumer<T> listener) Connects a listener that runs on the global region thread.<T> me.tamkungz.signals.connection.ConnectionconnectRegion(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.ConnectionconnectRegion(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.static FoliaSignalscreate(org.bukkit.plugin.Plugin plugin) Creates a bridge with its own signal bus.static FoliaSignalscreate(org.bukkit.plugin.Plugin plugin, me.tamkungz.signals.SignalBus bus) Creates a bridge on an existing signal bus.me.tamkungz.signals.bukkit.event.EntitySignalsentities()Returns shortcuts for entity events.me.tamkungz.signals.bukkit.event.InventorySignalsReturns shortcuts for inventory events.me.tamkungz.signals.bukkit.event.PlayerSignalsplayers()Returns shortcuts for player events.Returns the scheduler wrapper of this bridge.static FoliaSignalsshared()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> Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface me.tamkungz.signals.bukkit.event.EventSignalSource
on, signal
-
Method Details
-
create
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 tasksbus- bus the signals live on- Returns:
- a new bridge
-
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
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:
signalin interfaceme.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 tolistener- 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 listenersignal- signal to listen tolistener- 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 tolistener- 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 listenersignal- signal to listen tolistener- 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 tolocator- picks the location from the payload, must not returnnulllistener- 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 listenersignal- signal to listen tolocator- picks the location from the payload, must not returnnulllistener- 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 tolocator- picks the entity from the payload, must not returnnulllistener- 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 listenersignal- signal to listen tolocator- picks the entity from the payload, must not returnnulllistener- listener to call- Returns:
- the connection for this listener
-