All notable changes to HRTK are documented here. The format follows Keep a Changelog.Documentation Index
Fetch the complete documentation index at: https://docs.hrtk.frotty27.com/llms.txt
Use this file to discover all available pages before exploring further.
[4.260326.0] - 2026-04-07
Initial release covering 27 Hytale Server API surfaces with 232 JUnit tests.hrtk-api
Annotations - 26 annotations for test definition, lifecycle, filtering, parameterization, context requirements, domain shortcuts, and benchmarking. Assertions - 29 assertion classes mapped to Hytale Server API surfaces:| Assert Class | Hytale API Covered |
|---|---|
HytaleAssert | General-purpose (equality, null, exceptions, collections) |
EcsAssert | Store, Ref, ComponentType, Archetype, entity queries |
EventAssert | EventRegistry, EventBus, event capture and cancellation |
CommandAssert | CommandManager, CommandSender, execution and permissions |
CodecAssert | Codec, BuilderCodec, BSON encode/decode |
WorldAssert | Universe, World, blocks, ticking, paused state |
UIAssert | CustomUIPage, UICommandBuilder, event bindings |
StatsAssert | EntityStatMap, EntityStatValue, stat modifiers, percentage |
CombatAssert | DamageSystems, DeathComponent, damage causes, knockback |
InventoryAssert | Inventory, ItemStack, ItemContainer |
LootAssert | ItemDropList, ItemDrop, drop quantities |
EffectAssert | EffectControllerComponent, EntityEffect, duration, debuffs |
NPCAssert | NPCEntity, Role, role existence, despawn state |
BlockAssert | BlockType, materials, states, triggers |
ItemAssert | ItemStack, durability, metadata, stackability |
PhysicsAssert | Velocity, speed, ground detection |
PlayerAssert | Player entity, game mode, world assignment |
PermissionsAssert | PermissionHolder, permission checks |
CraftingAssert | Recipe registry queries |
WeatherAssert | Weather state, forced weather |
ProjectileAssert | ProjectileModule availability |
ChunkAssert | Chunk loading state |
PathfindingAssert | AStar pathfinding availability |
SchedulingAssert | World alive state |
PersistenceAssert | Save paths, player storage |
PluginAssert | Plugin loading, plugin count |
ChatAssert | Message content assertions |
AIAssert | StateEvaluator, AI active/inactive state |
hrtk-server
Discovery - JAR scanning via PluginClassLoader, all 26 annotations recognized, nested class support, annotation indexing, auto re-scan on plugin reload. Execution - Suite/test runner with context injection, world-thread scheduling for entity operations, timeout enforcement on all test types including parameterized, crash protection (catches Throwable), async command execution. Thread Safety - ConcurrentHashMap-based PluginTestRegistry, synchronized ResultCollector, CopyOnWriteArrayList for listeners and event captures, volatile snapshot references, AtomicBoolean concurrent run guard. Lifecycle Correctness - @BeforeAll failure marks all tests ERRORED and still runs @AfterAll/cleanup. @BeforeEach failure marks the test ERRORED and still runs @AfterEach. @AfterEach failure reported as separate ERRORED result. Per-test context cleanup in finally blocks. Adapters - 27 server-side adapters wrapping Hytale internals: ECS, stats, combat, events, commands, inventory, loot, effects, UI, world, codecs, NPCs, blocks, items, physics, players, permissions, crafting, weather, projectiles, chunks, pathfinding, scheduling, persistence, plugins, chat, AI. Commands -/hrtk run (async), list, bench (async), results, scan, watch, export. Concurrent run protection. Flexible @RequiresPlugin matching.
Reporting - Console output, JSON file export, TestRunListener callbacks.
hrtk-example-mod
33 test suites demonstrating every HRTK feature across all 27 supported Hytale API surfaces.HRTK is in active development. The API may change between minor versions as Hytale’s server API evolves. Pin your
hrtk-api dependency version to avoid surprises.