Introduces AsyncPlugin to serve as a standalone library-plugin entry point for the Async library. This allows other plugins to depend on Async without bundling it directly. The plugin installs a disconnect hook on start and ensures proper shutdown of tracked scopes.
Bundles core + ecs + binding into a single shaded JAR via
com.gradleup.shadow. Regular jar stays enabled so composite builds
in examples/ can consume project(":dist") directly.
The only module that imports com.hypixel.*. Provides World.asExecutor,
EntityHandle adapters for Ref/PlayerRef/Player, scope helpers
(playerScope, worldScope, pluginScope), and installAsync() which wires
PlayerDisconnectEvent to PlayerScopes.cancel.
read / readOrNull / modify primitives that take an EntityHandle,
switch to the entity's world dispatcher, run the block on the world
thread, and return to the caller's dispatcher. ComponentRegistry
maps KClass to opaque ComponentType keys for O(1) hot-path lookup.
HytaleDispatchers (World/HytaleIO/HytaleScheduled), per-key scope
registries (PlayerScopes, WorldScopes, PluginScopes) keyed by UUID
or plugin identity, and the sealed AsyncException hierarchy.
Includes unit tests against in-memory stubs.