-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Start here first:
./gradlew hytaleDoctorhytaleDoctor prints a summary of:
- configured
hytaleVersionandpatchline - manifest path and run directory
- resolved asset wrapper path and effective
Assets.zippath (local override path whenhytaleHomeOverrideis set, otherwise the Gradle cache path - auth token cache path
- resolved
vineServerJarfiles - declared
vineImplementation,vineCompileOnly, andvineDecompileTargetsdependencies
Use it when:
- runServer fails
- assets are missing
- manifest values look wrong
- expected dependency sources are not showing up
If hytaleVersion is not set and no vineServerJar is declared,
tasks that require the server jar may fail.
Always configure:
hytaleTools {
hytaleVersion = '...'
}If you're using a dynamic selector like 0.+ and Gradle is picking the wrong version (or claims it can't find any matching version), check the following:
-
Use
+, not*. Gradle's dynamic version syntax is0.+, not0.*. The*form is treated as a literal version string and will fail to resolve. -
Confirm
patchlineis set correctly. Dynamic resolution is scoped to the active patchline. If you're tracking pre-release builds, setpatchline = 'pre-release'(orhytale_patchline=pre-releaseingradle.properties). -
Force a refresh. Dynamic versions are cached for 10 minutes. Run
./gradlew --refresh-dependenciesto bypass the cache and refetch the latest version listing. -
Check
hytaleDoctor. The diagnostic task prints the configured patchline and the resolved server jar files so you can confirm what was actually picked.
Run:
./gradlew prepareDecompiledSourcesForIdeThis allows IDEs to attach readable generated source code instead of showing only compiled classes.
Then refresh or reimport the Gradle project in your IDE.
Also verify the dependency is listed in vineDecompileTargets if you expect decompiled dependency sources.
The plugin injects hosted Hytale API docs into generated server sources during prepareDecompiledSourcesForIde. If source comments are missing:
- Confirm
injectServerJavadocsIntoSourcesis not disabled. - Confirm
serverJavadocsUrlpoints at the correct release or pre-release docs site. - Delete the generated source jars and Javadoc cache, then regenerate sources.
rm -rf build/vineflower/hytale-server
rm -rf build/generated-sources-jars/server
rm -rf build/generated-sources-m2
rm -rf build/generated-sources-ivy
rm -rf ~/.gradle/caches/hytale-javadocs/release
./gradlew prepareDecompiledSourcesForIde --rerun-tasksThe injector only adds comments where a matching hosted Javadoc page and member documentation can be found.
Run:
./gradlew downloadAssetsZipAlso verify:
-
hytale_versionis set correctly -
hytale_patchlinematches the artifact you expect - authentication cache under Gradle user home is valid
Run:
./gradlew updatePluginManifestThe build also wires manifest validation automatically, so this usually indicates missing configuration values.
Verify the configured values for:
manifestGroupmodIdmainClasshytaleVersion
Also review:
manifest_dependenciesmanifest_opt_dependenciesincludes_pack-
Authors, if present, must be an array of objects with a non-blankName; optionalEmailandUrlvalues must not be blank
Make sure the dependency is declared in:
vineDecompileTargets "group:module:version"Only dependencies in that configuration are decompiled for IDE attachment.
Verify that:
- the task name matches exactly
- the task is registered in the same project as
runServer -
preRunTaskis set to the task name as a string
Run:
./gradlew hytaleJvmDoctorUse it to verify:
- which Java executable
runServerwill use - whether JetBrains Runtime was detected
- whether enhanced class redefinition is supported
- whether bundled HotswapAgent support is available
If hot swap is not working as expected, this should be the first check.
If hotswapAgentPath or hytools.hotswap.agent.path is set, the file must exist and point directly to a HotswapAgent jar.
Example:
hytaleTools {
hotSwapEnabled = true
useHotswapAgent = true
hotswapAgentPath = '/absolute/path/to/hotswap-agent.jar'
}Or:
hytools.hotswap.agent.path=/absolute/path/to/hotswap-agent.jarIf the file does not exist, runServer fails early with a clear error instead of launching without the agent.
If you launch runServer from IntelliJ using Debug, IntelliJ may inject its own JDWP debugger agent.
The plugin checks for an existing JDWP argument before adding its own debug agent. This prevents JVM startup errors such as:
Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
For command-line debugging, use:
./gradlew runServer -Ddebug=trueFor IntelliJ debugging, using the IDE's Debug action is usually enough. Avoid manually adding another -agentlib:jdwp=... entry in serverJvmArgs unless you know IntelliJ is not already providing one.