All versions
1.1.0
Release
Stressmark 1.1.08 months ago 16
Compatibility
Minecraft: Java Edition
1.21.4
Platform
NeoForge
Supported environments
Dedicated servers only
Changes
New Features
- Rolling TPS/MSPT windows - Independent tick timing with 10s, 1m, and 5m rolling averages, replacing reliance on vanilla
getTickTimesNanos()buffer - Tick monitor with baseline - Auto-calibrates over 120 ticks during stress tests, reports tick ratio vs baseline for relative performance tracking
- Real-time GC monitoring - Listens to JVM garbage collection events via JMX, tracks Young/Old Gen separately with duration, frequency, and memory freed
- Colored metrics in chat - TPS, MSPT, CPU, memory, and scores are color-coded by severity thresholds (green/yellow/red)
- Unicode memory bar - Visual
[████████░░░░░░░░] 67%bar in benchmark and stress test output - GC section in reports - Both
/benchmark detailedand stress test final reports now include GC activity (collection counts, pause times, longest pause) - Sub-scores exposed -
/benchmark detailedshows individual TPS, Memory, CPU, and Stability scores alongside the overall grade - Bottleneck identification - Player capacity calculator now identifies the limiting factor (TPS, Memory, or CPU)
- Disk metrics -
/benchmark detailedincludes disk space and I/O stats - Contextual recommendations - Smart suggestions based on TPS, MSPT, memory, CPU, GC, and disk metrics
Bug Fixes
- Fixed TPS always showing 20.0 during lag - Replaced custom
calculateTps()withTpsMetricCollectorthat correctly reads vanilla tick times, and added MSPT spike detection
Improvements
- Stress test periodic updates now log to console only (reduced ops chat spam)
- Ops are only alerted for significant events: TPS drops >20% or memory usage >80%
- GC events during stress tests are logged to console only
- Stress test final report includes GC activity section and GC-based recommendations
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:DVtgDB7g"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:r0H1mAA1:DVtgDB7g"
}

