Creators
Details
1.0.3
Compatibility
Changes
[1.0.3] - 2025-01-11
๐ Performance Optimization Release
This release focuses on network performance improvements with connection pooling and smart polling to reduce server load and API traffic.
Added
Performance Features
-
HTTP Connection Pooling (Improvement 1.1) - New
HttpClientManager.javausing OkHttp for efficient connection reuse- Maintains pool of 5 idle connections with 5-minute keep-alive
- Eliminates connection setup overhead for repeated API calls
- Proper TLS 1.2+ enforcement built into the connection pool
- Configurable timeouts: 10s connect, 30s read, 10s write
-
Smart Polling with Exponential Backoff (Improvement 1.2) - Dynamic polling based on server activity
- Increases polling interval when no deliveries are found (up to 4x base interval)
- Automatically resets to base interval when deliveries are found
- Instantly checks for deliveries when players join
- Reduces API load during low-activity periods by up to 75%
Changed
- Replaced all
HttpURLConnectionusage with OkHttp client inVerificationAPI.java - Refactored
DeliveryTask.javawith backoff state management - Updated
WERMPlugin.javato properly shutdown HTTP client on disable - Updated API connectivity test to use connection pool
Technical Details
- New Dependency: OkHttp 4.12.0 (Java 8 compatible)
- Relocated Packages:
okhttp3,okio,kotlinโcom.werm.libs.* - Backoff Configuration:
- Max backoff multiplier: 4x
- Backoff triggers after 3 consecutive empty responses
- Backoff resets on delivery found or player join
Performance Impact
- ~50% reduction in connection overhead through reuse
- Up to 75% reduction in API calls during idle periods
- Faster response times due to keep-alive connections
- Lower memory footprint from connection reuse
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:JfqCmMXn:IePlfOYE"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:JfqCmMXn:IePlfOYE"
}

