Virtual Thread scheduler for Java 21+. Core module - platform-agnostic.
// Gradle
implementation("com.eternalcode:eternalcode-commons-loom:1.3.1")<!-- Maven -->
<dependency>
<groupId>com.eternalcode</groupId>
<artifactId>eternalcode-commons-loom</artifactId>
<version>1.3.1</version>
</dependency>Repository: https://repo.eternalcode.pl/releases
// Create with custom dispatcher
LoomScheduler scheduler = new LoomSchedulerImpl(myDispatcher);
// Async (VT) -> transform (VT) -> sync (main thread)
scheduler.supplyAsync(() -> database.load(id))
.thenApply(data -> transform(data))
.thenAcceptSync(result -> player.sendMessage(result))
.exceptionally(e -> logger.severe(e.getMessage()));runAsync,supplyAsync,thenApply→ Virtual ThreadrunSync,thenAcceptSync,thenApplySync→ Main Thread- Never call Bukkit API from async
- Never use
join()orget()on futures
- bukkit-loom - Bukkit integration
- folia-loom - Folia integration