October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

Hytale Server Plugin Development Tutorial for Beginners (Java 25, 0.7.2)

A beginner-friendly, version-aware guide to creating, testing, building, and deploying Hytale server plugins with Java 25, plus the alternative HytaleJS workflow.
Length12 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The most reliable way to make a first Hytale server plugin is to use the maintained HytaleModding Java/Kotlin template, run it with Java 25, and test it against a local server. The template’s Gradle tasks prepare the development files and launch a server; your finished JAR is then copied to Hytale’s Mods directory. Java is the first-party route because Hytale publishes a Java server API reference. If you already work in web tooling, HytaleJS offers a separate JavaScript/TypeScript bridge, but it has different build and deployment steps.

What a Hytale server plugin is

A server plugin is code loaded by the dedicated Hytale server to add commands, react to events, or implement gameplay systems. It runs on the server rather than inside a player’s client, so a plugin can enforce rules, maintain server-side data, announce player activity, or expose administrative commands without requiring every player to install a matching client mod.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Hytale’s official documentation currently labels release 0.7.2 as current (Hypixel Studios, 2026). Treat that label and the Java API reference as the compatibility baseline. API names, manifest requirements, and startup behavior can change between releases, so check the documentation again before changing a dependency or upgrading a production server.

Choose your development route

Route Language and tooling Build result Where it is deployed Best fit
Official-aligned template Java or Kotlin with Gradle Plugin JAR Hytale server Mods directory Beginners who want the closest match to Hytale’s published Java API, strong IDE support, and conventional JVM debugging
HytaleJS JavaScript or TypeScript with Node.js, TypeScript, and esbuild Compiled dist/plugin.js hytale-server/mods/bmstefanski_HytaleJS/scripts/ Developers already comfortable with web tooling who accept a third-party bridge between scripts and the server API

The two routes are not interchangeable. A Java build produces a JAR for the normal plugin loader; HytaleJS produces a script that the HytaleJS bridge loads after a restart. Choose one route for a project rather than copying a JAR into the scripts directory or a JavaScript file into the regular Mods directory.

Requirements before you create a project

Requirement What the documented setup requires Why it matters
Java runtime Java 25 for the Hytale server and the Java/Kotlin template The Gradle build and local server must use the same supported Java generation. Verify that your terminal and IDE both select Java 25.
Operating system and CPU x64 or arm64 device These are the architectures identified by the official server manual.
Memory At least 4 GB RAM Hypixel Studios states that a Hytale server can run with at least 4 GB. A real development server may need more as player count, entities, view distance, and world loading increase.
Build tools Gradle wrapper supplied by the template; Git or an archive copy of the template Using the wrapper keeps task execution tied to the project’s expected Gradle configuration.
IDE An IDE with Java or Kotlin support; the template and CurseForge guide recommend IntelliJ IDEA Code navigation, Gradle integration, and debugger support are especially useful when API signatures change.
For HytaleJS Node.js 18 or newer, @hytalejs.com/core, TypeScript, and esbuild These packages compile the script before it is copied into the HytaleJS scripts directory.

Do not size a production machine from the 4 GB figure alone. It is a documented minimum, not a guarantee for a particular world or player population. Start with a small test world, watch memory use while loading chunks and entities, and increase the allocation when your workload requires it.

Set up the Java or Kotlin template

1. Install and verify Java 25

Install a Java 25 JDK, not only a browser plug-in or an older runtime. Open a new terminal and run:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
java -version

The reported major version must be 25. In your IDE, select the same JDK for the project and for Gradle. If the terminal reports 25 but the IDE uses another version, Gradle tasks can fail before your plugin code is compiled.

2. Copy the maintained template

Start with the maintained HytaleModding/plugin-template. It is described as a ready-to-use starting point for Hytale server plugins written in Java or Kotlin. Download or copy the repository, place it in a new project directory, and open that directory in your IDE. Keep the Gradle wrapper and the repository’s existing build files; they provide the tasks used by the Hytale development setup.

3. Set project identity in gradle.properties

Before writing gameplay code, edit gradle.properties and replace the template’s project metadata with your own values. Keep the identifiers consistent with the manifest you will create. Use a stable mod ID rather than changing it between local builds, because server logs and saved configuration often refer to that ID.

The exact property names come from the current template. Do not delete unknown properties merely because they look unused: some are consumed by Gradle tasks or manifest generation. If a new template revision changes a property, follow that revision rather than copying settings from an older tutorial.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

4. Prepare the development environment

From the project root, run the wrapper task:

./gradlew setupHytaleDev

On Windows, use the wrapper form supplied with the project (for example, the Windows batch wrapper) if your shell does not execute ./gradlew. The setup task retrieves or prepares the Hytale development files expected by the template. Let it finish before attempting to run the server; a failed setup usually means the project is not ready to resolve the server API.

5. Start a local server

Launch the development server with:

./gradlew runServer

The first run can take longer while Gradle resolves dependencies and creates the server layout. Read the console output instead of assuming a silent process has started. The official server manual documents device authentication; a local development server may ask you to complete that flow before it can start or access the required assets.

Keep the server console visible during development. It is where you will see plugin discovery, manifest errors, class-loading failures, command registration problems, and event exceptions. Stop the server cleanly before rebuilding or replacing a loaded plugin.

Understand the project layout

Path or file Purpose What belongs there
src/main/java Java source root Your plugin classes, command implementations, event handlers, and gameplay systems.
src/main/resources Runtime resources manifest.json and any other files your plugin must read at runtime.
gradle.properties Project metadata and Gradle properties The project identity values consumed by the template’s build configuration.
Gradle build files Repositories, dependencies, plugins, and tasks The configuration that resolves the Hytale API and creates the JAR.
Settings files Gradle project identity and included configuration The project name and settings expected by the template.

Keep Java packages aligned with their directory path. A class declared in a package that does not match its location can compile inconsistently across IDEs and command-line builds. Put non-code files under resources so Gradle includes them in the resulting artifact.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Write the manifest before adding features

The manifest tells the server what your plugin is and which class starts it. The template’s manifest format includes these fields:

  • Mod ID
  • Main class
  • Version
  • Author
  • Description
  • URL
  • Dependencies
  • Server-version metadata

Create or edit src/main/resources/manifest.json using the exact field names and nesting shown by the current template. The main-class value must match the fully qualified class that implements the plugin entry point. Keep the mod ID unique on the server, use a deliberate version such as an initial development version, and declare dependencies only when the plugin actually requires them.

Server-version metadata is not decorative. It gives you a place to state which Hytale server release the artifact targets and helps you notice an unsafe update. When Hytale moves beyond 0.7.2, review this metadata and the API reference together instead of changing only the version string.

Make a first feature: command or event handler

Start with a small observable behavior

A first plugin should do one thing that is easy to prove in the console or in-game. A custom command is a good first milestone because it has a clear input and output. An event handler is equally useful when you want to learn the server lifecycle: player connection and chat are natural first events.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use the Java API reference for the current 0.7.2 interfaces and registration method. The template is intended for custom commands, event handling, and broader gameplay systems, but API names can change; copying a class signature from an older example is a common cause of compile errors.

Implement the entry point

  1. Open the Java source directory and create the package and entry-point class named in your manifest.
  2. Use the lifecycle method required by the current Java API to obtain the server/plugin context.
  3. Register exactly one test command or one event listener during startup.
  4. Give the command a distinctive response, or make the listener log a connection/chat event, so you can distinguish your code from normal server output.
  5. Keep shutdown handling simple at first: unregister listeners or release resources if the API requires it.

Do not add several systems before the first one works. A single command that registers, executes, and logs correctly isolates manifest, classpath, and permission problems. After that, add argument parsing, permissions, persistent data, or gameplay state one piece at a time.

Test the feature locally

  1. Stop the running server cleanly.
  2. Build the project, or let the development task rebuild it according to the template instructions.
  3. Start the local server again with ./gradlew runServer.
  4. Watch for the plugin’s load message and any stack trace.
  5. Join the local server and execute the command, or trigger the event you registered.
  6. Confirm both the expected player-facing result and the server log entry.

If the server starts but the feature does not respond, first confirm that the artifact actually contains the updated class and manifest. Then check the exact command spelling, registration timing, permissions, and the server console for an exception.

Build and deploy the Java plugin

Build a release artifact

From the template root, run:

./gradlew build

Gradle places the resulting plugin JAR in the project’s build output. The exact subdirectory is determined by the template and Gradle version; use the newly modified JAR rather than an older file with a similar name. If the build fails, fix compilation or manifest errors before copying anything to a server.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install it on a Windows server

CurseForge’s plugin guide identifies the local Windows Mods directory as:

%appdata%/Hytale/UserData/Mods
  1. Stop the Hytale server.
  2. Copy the built JAR into the Mods directory.
  3. Remove or archive older copies of the same plugin so two versions cannot load together.
  4. Start the server and read the plugin-loading messages.
  5. Test the command or event before inviting players.

The path above is for Windows. Other operating systems use the equivalent Hytale user-data location described by the server manual; do not assume that a Windows environment variable exists elsewhere.

Server authentication, assets, and file layout

The official server manual documents device authentication and the --assets launch argument. Authentication is an operational prerequisite, not a plugin feature: complete it with the account and device flow requested by the server, and store credentials or tokens according to your server’s security practices.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep the required server files in the layout expected by the current manual. If the server cannot find assets, verify that the launch command points to the correct assets location and that the --assets argument is spelled exactly as documented. A plugin cannot load successfully if the server itself stops during asset discovery or authentication.

For production, stage updates rather than replacing a live JAR while the process is running. Build and test the new version on a separate instance, stop the production server, back up its world and configuration, replace the plugin, start the server, and inspect the complete startup log before reconnecting players. Keep the previous JAR available so you can roll back if the new API behavior causes errors.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

The HytaleJS JavaScript and TypeScript route

When it makes sense

HytaleJS is useful if you already know Node.js, TypeScript, and JavaScript build tools. Its maintainers document a /players command and examples for player-connect and chat events. This route is a third-party bridge, not the official Java API path, so its compatibility depends on the bridge and its maintained packages as well as on Hytale itself.

Install and build

  1. Install Node.js 18 or newer.
  2. Create or copy the HytaleJS project and install its documented dependencies, including @hytalejs.com/core, TypeScript, and esbuild.
  3. Implement a small command or event based on the current HytaleJS examples. Start with the documented /players command or a player-connect log so the result is easy to verify.
  4. Run the project’s build script:
npm run build

The build produces dist/plugin.js. Copy that file to:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
hytale-server/mods/bmstefanski_HytaleJS/scripts/

Restart the server to load the new script. HytaleJS scripts are loaded on restart, so editing the source file while the server is running does not by itself update the active plugin. Read the startup output for script compilation or bridge errors, then run the command or trigger the event in-game.

Java/Kotlin versus HytaleJS: a practical decision

Decision factor Java/Kotlin template HytaleJS
Language familiarity Best if you know Java or Kotlin, or want conventional JVM development. Best if you are comfortable with JavaScript or TypeScript and npm scripts.
API position Closest to Hytale’s published Java server API reference. Third-party bridge documented by its maintainers.
Build tooling Gradle wrapper and the template’s development tasks. Node.js, TypeScript, esbuild, and npm run build.
IDE and debugging JVM type checking, Gradle integration, and mature Java/Kotlin debugging. JavaScript/TypeScript editor tooling and Node-oriented debugging; bridge boundaries add another failure point.
Deployment target Compiled plugin JAR in the server’s Mods directory. dist/plugin.js in the HytaleJS scripts directory.
Version maintenance Follow Hytale’s Java API and update Gradle/template metadata when the server changes. Track Hytale changes and HytaleJS bridge releases; a break can occur in either layer.

For a first production plugin, prefer Java or Kotlin unless your team’s strongest skills are in TypeScript and the bridge supports the server version you intend to run. The Java route reduces the number of translation layers you must troubleshoot.

Common failures and recovery steps

Gradle says the Java version is unsupported

Run java -version in the same shell that launches Gradle, then inspect the IDE’s Gradle JDK setting. Install or select Java 25 in both places. Restart the IDE after changing the JDK so it does not retain a stale daemon.

setupHytaleDev cannot prepare the project

Check network access, the project’s repository configuration, and the exact template revision. Do not mix build files from different template versions. Delete only generated development output after consulting the template instructions; preserve your source, manifest, and Gradle configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The server starts but does not load the plugin

Check that the JAR is in the correct Mods directory, that only one copy exists, and that manifest.json is under src/main/resources in the project before building. Confirm that the manifest’s main class is fully qualified and that the JAR you copied has a newer build timestamp.

The plugin loads but the command is missing

Look for registration exceptions, a command-name mismatch, and permission requirements. Test with the smallest command implementation first. If you copied an example, compare every API type and registration call with the current 0.7.2 Java reference.

HytaleJS changes do not appear

Run npm run build again, verify that dist/plugin.js changed, copy that exact file into the HytaleJS scripts path, and restart the server. Editing TypeScript without rebuilding leaves the old JavaScript file in place.

The server fails before plugins are mentioned

Resolve authentication, asset, and launch-layout problems first. Confirm the required files and the --assets argument described by the official manual. Plugin debugging cannot begin until the server reaches its plugin-loading phase.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A safe beginner workflow

  1. Install Java 25 and verify the version in both terminal and IDE.
  2. Copy the current HytaleModding/plugin-template and edit its project metadata.
  3. Run ./gradlew setupHytaleDev.
  4. Launch with ./gradlew runServer and complete any requested device authentication.
  5. Create one command or one event handler using the current Java API reference.
  6. Build with ./gradlew build and test the generated JAR locally.
  7. Copy the tested JAR to the appropriate Mods directory only after stopping the server.
  8. Record the plugin version and target server release in your project and manifest metadata.
  9. For production updates, test on a separate instance, back up data, stage the replacement, and keep the previous build for rollback.

This sequence keeps environment, API, packaging, and deployment problems separate. It also gives you a repeatable checklist when Hytale releases a new server version.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.