Skip to main content

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.

All notable changes to HRTK are documented here. The format follows Keep a Changelog.

[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 ClassHytale API Covered
HytaleAssertGeneral-purpose (equality, null, exceptions, collections)
EcsAssertStore, Ref, ComponentType, Archetype, entity queries
EventAssertEventRegistry, EventBus, event capture and cancellation
CommandAssertCommandManager, CommandSender, execution and permissions
CodecAssertCodec, BuilderCodec, BSON encode/decode
WorldAssertUniverse, World, blocks, ticking, paused state
UIAssertCustomUIPage, UICommandBuilder, event bindings
StatsAssertEntityStatMap, EntityStatValue, stat modifiers, percentage
CombatAssertDamageSystems, DeathComponent, damage causes, knockback
InventoryAssertInventory, ItemStack, ItemContainer
LootAssertItemDropList, ItemDrop, drop quantities
EffectAssertEffectControllerComponent, EntityEffect, duration, debuffs
NPCAssertNPCEntity, Role, role existence, despawn state
BlockAssertBlockType, materials, states, triggers
ItemAssertItemStack, durability, metadata, stackability
PhysicsAssertVelocity, speed, ground detection
PlayerAssertPlayer entity, game mode, world assignment
PermissionsAssertPermissionHolder, permission checks
CraftingAssertRecipe registry queries
WeatherAssertWeather state, forced weather
ProjectileAssertProjectileModule availability
ChunkAssertChunk loading state
PathfindingAssertAStar pathfinding availability
SchedulingAssertWorld alive state
PersistenceAssertSave paths, player storage
PluginAssertPlugin loading, plugin count
ChatAssertMessage content assertions
AIAssertStateEvaluator, AI active/inactive state
Contexts - TestContext, EcsTestContext, WorldTestContext, BenchmarkContext with tick-waiting, entity queries, position operations, mock players, and event capture with proper unregistration. Infrastructure - MockCommandSender, MockPlayerRef, EventCapture with automatic listener cleanup, UICommandCapture, isolation strategies (NONE, SNAPSHOT via TestEntityTracker, DEDICATED_WORLD).

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.