Skip to content

Hytale Server Dependency

AzureDoom edited this page Jun 8, 2026 · 1 revision

Hytale Server Dependency

The plugin automatically adds the Hytale server dependency based on:

hytaleTools {
    hytaleVersion = '0.+'
}

This injects:

vineServerJar "com.hypixel.hytale:Server:${hytaleVersion}"

and makes it available on compileOnly. You do not need to declare this manually.

Dynamic versions

hytaleVersion accepts Gradle's dynamic version selectors, which is the easiest way to track the latest server build for a patchline:

hytaleTools {
    hytaleVersion = '0.+'   // latest 0.x build on the configured patchline
    patchline     = 'release'
}

Supported selectors:

  • 0.+ — latest version starting with 0.
  • 0.5.+ — latest version starting with 0.5.
  • latest.release — same as +

By default, the generated manifest.json contains the resolved concrete version (e.g. 0.5.0-pre.9 or 2026.1.22-6f8bdbdc4), not the dynamic selector. For example, hytaleVersion = '0.+' resolves the server dependency normally, and the manifest ServerVersion is written as the resolved full version.

If you want the manifest to use a semver range instead, set manifestServerVersion explicitly:

hytaleTools {
  hytaleVersion = '0.+'

  // Written directly to manifest.json as ServerVersion
  manifestServerVersion = '>=0.5.0-pre.9 <0.6.0'
}

When manifestServerVersion is set, it only affects the manifest ServerVersion field. hytaleVersion is still used to resolve the Hytale server dependency for development, compilation, and local runs.

Manifest server version ranges

hytaleVersion controls which Hytale server artifact Gradle resolves for compilation, IDE setup, and local server runs.

manifestServerVersion controls the ServerVersion field written to manifest.json.

If manifestServerVersion is unset, the plugin resolves the configured Hytale version selector, such as 0.+ or 2026.+, to the full concrete server version and writes it to the manifest as a minimum supported version range.

hytaleTools {
  hytaleVersion = '0.+'
}

This writes a concrete resolved version, for example:

{
  "ServerVersion": ">=0.5.0-pre.9"
}

Set manifestServerVersion when you want the manifest itself to accept a semver range:

hytaleTools {
  hytaleVersion = '0.+'
  manifestServerVersion = '>=0.5.0-pre.9 <0.6.0'
}

This writes:

{
  "ServerVersion": ">=0.5.0-pre.9 <0.6.0"
}

In this setup, hytaleVersion still resolves the development server dependency, while manifestServerVersion is written directly to the manifest.

Patchline scoping

When using a dynamic selector, the plugin scopes resolution to the configured patchline:

  • patchline = 'release' resolves only against the Hytale Server Release repo
  • patchline = 'pre-release' resolves only against the Hytale Server Pre-Release repo

This prevents 0.+ from accidentally selecting a pre-release build when you're targeting release, or vice versa. Static versions are unaffected and continue to resolve from whichever repo serves them.

Cache behavior

Gradle caches dynamic version resolutions. The plugin configures the vineServerJar configuration with a 10-minute cache window, so a freshly published server build is picked up within that interval. To force an immediate refetch:

./gradlew runServer --refresh-dependencies

The Hytale server dependency is also marked as changing = true, so the same flag will refetch the artifact bytes if Hytale ever republishes a coordinate.

Overriding the server dependency

If you want to use a different version of the Hytale server:

dependencies {
    vineServerJar 'com.example:custom-server:1.0.0'
}

Auto-injection is skipped when a dependency is already declared.


Home | Task Reference | Troubleshooting

Clone this wiki locally