Kronos is HCF core from server games.
README
A production-ready Hardcore Factions plugin for Spigot 1.13.2 servers, built with a clean Domain-Driven Design architecture and full async I/O.

| Component | Technology | |---|---| | Minecraft server | Spigot 1.13.2 | | Dependency injection | Google Guice 5 | | Primary persistence | MongoDB (via MongoDB Java Driver) | | Timer / deathban cache | Redis (via Lettuce async client) | | Economy bridge | Vault | | Event bus | Guava EventBus | | Build system | Gradle 8 + Shadow plugin 8.3.5 | | Java target | Java 11 |
| Module | Artifact | Description |
|---|---|---|
| kronos-common | library | Shared utilities: command framework, DB factories, SOTW/EOTW service, config helpers, exception hierarchy |
| kronos-api | library | Public read-only API exposed to external plugins via Bukkit ServicesManager |
| kronos-economy | library | Vault economy wrapper with async CompletableFuture API |
| kronos-players | library | HCF player profiles, deathban (Redis-backed), crate locations |
| kronos-timers | library | Per-player timers (combat tag, PvP, enderpearl, etc.) stored in Redis with TTL |
| kronos-factions | library | Faction domain: members, roles, DTK, ally/enemy relations, faction bank |
| kronos-claims | library | Chunk-based territory system with SafeZone, WarZone, KOTH, and Faction claim types |
| kronos-koth | library | King of the Hill event zones, creation sessions, capture lifecycle |
| kronos-classes | library | HCF combat classes (Archer, Bard, Rogue, Miner, Knight, Diamond) |
| kronos-spawn | library | Protected spawn zone with wand-based setup |
| kronos-scoreboard | library | Sidebar scoreboard with 1-second timer updates and 5-second async stat refresh |
| kronos-plugin | plugin jar | Bootstrap module: Guice wiring, command and listener registration, API exposure |
kronos-plugin
āāā kronos-api
ā āāā (all domain modules)
āāā kronos-scoreboard
ā āāā kronos-timers
ā āāā kronos-factions
ā āāā kronos-economy
ā āāā kronos-koth
āāā kronos-factions
ā āāā kronos-players
ā āāā kronos-economy
ā āāā kronos-common
āāā kronos-claims
ā āāā kronos-factions
āāā kronos-koth
ā āāā kronos-common
āāā kronos-players
ā āāā kronos-common
āāā kronos-timers
ā āāā kronos-common
āāā kronos-spawn
ā āāā kronos-common
āāā kronos-classes
ā āāā kronos-players
āāā kronos-economy
āāā kronos-common
All cross-module communication uses domain events posted on a shared EventBus singleton bound by RootModule. The flow is:
FactionDtkDecrementedDomainEvent).@Subscribe-annotated listener in any module receives the event synchronously.Examples of domain events:
| Event | Source module | Typical consumer |
|---|---|---|
| PlayerTimerStartedDomainEvent | kronos-timers | ScoreboardManager, TimerListener |
| PlayerTimerExpiredDomainEvent | kronos-timers | ScoreboardManager, TimerListener |
| FactionCreatedDomainEvent | kronos-factions | Logging, tab-list |
| FactionRaidableDomainEvent | kronos-factions | PvpListener, announcements |
| FactionDtkDecrementedDomainEvent | kronos-factions | ScoreboardManager |
| FactionClaimedDomainEvent | kronos-claims | ClaimListener cache invalidation |
| KothStartedDomainEvent | kronos-koth | ScoreboardManager |
| KothCapturedDomainEvent | kronos-koth | ScoreboardManager, crate delivery |
All I/O operations return CompletableFuture<T>. The rule is:
VaultEconomyService uses a custom mainThreadExecutor that dispatches via BukkitScheduler.runTask when called from async context..thenAccept / .thenCompose callbacks.RootModule is the composition root. It installs each domain module (TimersModule, FactionsModule, ClaimsModule, etc.) and binds configuration values from config.yml as @Named constants. All service singletons are wired here.
./gradlew)mongodb://localhost:27017)localhost:6379)./gradlew :kronos-plugin:shadowJar
The output jar is generated at kronos-plugin/build/libs/. Copy it to your server's plugins/ folder.
kronos/
āāā build.gradle.kts # Root build: plugins, repos, Java 11 target
āāā settings.gradle.kts # Lists all subproject includes
āāā kronos-api/ # Public read-only API for external plugins
āāā kronos-common/ # Shared utilities, DB connections, commands
āāā kronos-economy/ # Vault economy wrapper
āāā kronos-players/ # Player profiles, deathban, crates
āāā kronos-timers/ # Player timers backed by Redis TTL
āāā kronos-factions/ # Faction domain (members, DTK, bank, relations)
āāā kronos-claims/ # Chunk territory system
āāā kronos-koth/ # KOTH event zones
āāā kronos-classes/ # HCF combat classes
āāā kronos-spawn/ # Spawn zone protection
āāā kronos-scoreboard/ # Sidebar scoreboard
āāā kronos-plugin/ # Bootstrap: Guice wiring, commands, listeners
āāā docs/ # Developer documentation (this folder)
| Module | Doc file | |---|---| | kronos-api | docs/api.md | | kronos-timers | docs/timers.md | | kronos-factions | docs/factions.md | | kronos-claims | docs/claims.md | | kronos-koth | docs/koth.md | | kronos-players | docs/players.md | | kronos-spawn | docs/spawn.md | | kronos-economy | docs/economy.md | | kronos-classes | docs/classes.md | | kronos-scoreboard | docs/scoreboard.md | | kronos-common | docs/common.md | | kronos-plugin | docs/plugin.md |