Commit Graph

10 Commits

Author SHA1 Message Date
kayjaydee a0ad12b208 feat(binding): add AsyncPlugin as entry point for Async library
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.
2026-04-28 18:25:22 +02:00
kayjaydee 15e6b9692b release: bump version to 0.1.0 v0.1.0 2026-04-28 16:38:07 +02:00
kayjaydee fc0114e02c fix(ci): mark gradlew as executable
Linux runners refuse to invoke ./gradlew without the +x bit.
2026-04-28 16:32:48 +02:00
kayjaydee eb37c11e13 docs: top-level README 2026-04-28 16:30:48 +02:00
kayjaydee 5fc3bda1c5 feat(examples): four runnable plugin examples
- player-load: load-on-join (PlayerReadyEvent → IO → modify).
- async-moderation: IAsyncEvent → coroutine bridge for chat moderation.
- periodic-leaderboard: pluginScope loop with parallel reads.
- bounty-board: kitchen-sink demo exercising every v0.1 primitive.
2026-04-28 16:30:39 +02:00
kayjaydee ad1379c267 feat(dist): shaded jar aggregator
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.
2026-04-28 16:30:26 +02:00
kayjaydee f23bb2178f feat(binding): Hytale SDK glue
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.
2026-04-28 16:30:16 +02:00
kayjaydee 1870aeea12 feat(ecs): suspending component DSL
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.
2026-04-28 16:30:02 +02:00
kayjaydee a10294c01f feat(core): dispatchers, scopes, and exceptions
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.
2026-04-28 16:29:55 +02:00
kayjaydee e201a227ea chore: project scaffolding and CI
Gradle 9.4 multi-module setup with Kotlin DSL and version catalog.
GitHub Actions builds on push and PR with JDK 25 (Temurin).
2026-04-28 16:29:46 +02:00