Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
A tiny Java signal/event library with optional Bukkit/Spigot integration, backed by GEB
0.2.0-SNAPSHOT
This release reorganizes packages and renames parts of the API. Behavior is unchanged, but source compatibility with 0.1.x is not kept; see the migration table below.
Changed (packages)
signals-coreis split intome.tamkungz.signals(SignalBus,Signal,SignalKey),me.tamkungz.signals.connection(Connection,ConnectionGroup),me.tamkungz.signals.geb(GebBridge) andme.tamkungz.signals.internal(not API).signals-bukkitis split intome.tamkungz.signals.bukkit(BukkitSignals,SignalsPlugin),me.tamkungz.signals.bukkit.event(fluent builder and per-domain shortcuts) andme.tamkungz.signals.bukkit.internal(not API).package-info.javaadded to every package.
Changed (split and renamed)
SignalBus: the GEB passthrough (custom events,@Listenlisteners, sub-buses) moved to the newGebBridge, reached withSignalBus.geb().SignalBusnow only deals with typed signals.BukkitSignals: the 15 per-event shortcuts moved toPlayerSignals,BlockSignals,EntitySignalsandInventorySignals; the listener registration and its cache moved toEventSignalRegistry.SignalRouterno longer contains its subscription type; it is now the package-privateSubscription.SignalEventis nowSignalEnvelope, andSignalRouteris public so the dispatcher GEB generates for the envelope can reach it. Both live inme.tamkungz.signals.internaland are not API.SignalKey.castis now public (the router needs it from another package).SignalTestis split by feature intoSignalTest,SignalKeyTest,SignalConcurrencyTestandConnectionGroupTest.
Changed (build)
distand thedistMaven repository no longer delete older versions; each build adds its own version and only files of the same version are overwritten.- Removed
Task.projectcalls at execution time (deprecated in Gradle 8, an error in Gradle 10).
Removed
- Unused
Class-based overloads inSignalRouter.
Added
GebBridgeTest: listener and sub-bus connections, groups,post, and null checks.EventSignalSource: whatBukkitSignalsimplements and what the builder and shortcuts depend on, sobukkit.eventdoes not depend onBukkitSignals.
Migration from 0.1.x
| 0.1.x | 0.2.0 |
|---|---|
me.tamkungz.signals.Connection |
me.tamkungz.signals.connection.Connection |
me.tamkungz.signals.ConnectionGroup |
me.tamkungz.signals.connection.ConnectionGroup |
bus.geb() (raw IBus) |
bus.geb().bus() |
bus.post(event) |
bus.geb().post(event) |
bus.listen(listener) |
bus.geb().listen(listener) |
bus.registerListener(l), unregisterListener(l), isRegistered(l) |
same methods on bus.geb() |
bus.subBus(subBus, priority), registerSubBus, unregisterSubBus |
same methods on bus.geb() |
me.tamkungz.signals.bukkit.BukkitEventSignal |
me.tamkungz.signals.bukkit.event.EventSignalBuilder |
signals.event(type, priority, ignoreCancelled) |
signals.signal(type, priority, ignoreCancelled) |
signals.event(type) |
signals.signal(type) |
BukkitSignals.from(plugin, type, ...) |
BukkitSignals.standaloneSignal(plugin, type, ...) |
signals.playerJoin() |
signals.players().join() |
signals.playerQuit() |
signals.players().quit() |
signals.playerKick() |
signals.players().kick() |
signals.playerMove() |
signals.players().move() |
signals.playerTeleport() |
signals.players().teleport() |
signals.playerInteract() |
signals.players().interact() |
signals.playerDeath() |
signals.players().death() |
signals.playerRespawn() |
signals.players().respawn() |
signals.playerCommand() |
signals.players().command() |
signals.blockBreak() |
signals.blocks().breakBlock() |
signals.blockPlace() |
signals.blocks().placeBlock() |
signals.entityDamage() |
signals.entities().damage() |
signals.entityDeath() |
signals.entities().death() |
signals.inventoryClick() |
signals.inventories().click() |
signals.inventoryClose() |
signals.inventories().close() |
Platforms
Paper
1.16–26.2