All versions
1.4.0
Release
Stressmark 1.4.02 months ago 86
Compatibility
Minecraft: Java Edition
1.21.11
Platform
Fabric
Supported environments
Dedicated servers only
Changes
New Features
- Intelligent stress test report - When a stress test ends, the recap now opens with a clear verdict (
PASS/WARN/FAIL), a 0-100 score, and an answer to the question that actually matters - how many players can this server handle - instead of only raw min/max TPS and memory numbers. The console report, the in-game ops summary, and a saved file all share the same analysis. - Honest player-capacity estimate - Reports an equivalent real-player range (e.g.
~9-17 real players) derived from the measured per-bot tick cost and the 50 ms tick budget, with an explicit caveat: stress bots only exercise chunk loading, so real players - who also add networking and entity-tracking load this test does not measure - may lower that figure. No more reading "5 bots were fine" as "5 players is my limit". - Bottleneck diagnosis - Identifies the real limiting resource - the single-threaded main loop, overall CPU, or memory - so the advice fits the actual wall. Because Minecraft's tick loop is mostly single-threaded, it tells apart "one core maxed out" from "the whole machine is maxed out", and won't tell you to add RAM when the main thread is the bottleneck.
- Trend & memory-leak detection - Samples performance every ~10 s during the run and reports whether TPS held stable, degraded, or collapsed over time, rather than only the worst instant. Memory is judged by the post-GC live-set, so a healthy sawtooth heap (which briefly spikes near 100% before each GC) is no longer mistaken for trouble, while a steadily climbing live-set is flagged as a suspected leak.
- Prioritized, hardware-aware recommendations - Advice is now ranked by impact, de-duplicated, and quantified against your actual hardware (cores, max heap, GC type) - for example
view-distance 10→8 ≈ -18 ms/tickorincrease -Xmx to ~6G, rather than fixed, generic threshold messages. - Saved Markdown report - Every run also writes a timestamped report to
<world>/stressmark-reports/with TPS/MSPT sparklines, the full per-sample time-series table, and a playbook for each recommendation (probable cause, remedy, exact flag/command) - so results survive the console scrollback and can be kept or shared.
Bug Fixes
- Fixed misleading Young-Gen GC time in reports - The "Young Gen total ms" figure was a fabricated proportional estimate (
total pause × young / (young + old)) because young and old GC pause times were never tracked separately. Reports now sum the real per-collection pause time for each generation.
Improvements
- Verified analysis engine - The new report logic (trend, memory, bottleneck, capacity, grading, recommendations) lives in a self-contained, Minecraft-independent module covered by unit tests, so its verdicts are checked against synthetic scenarios rather than only observed in passing.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:r0H1mAA1:1PlT9xpV"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:r0H1mAA1:1PlT9xpV"
}

