HytaleIO

Scaffold your projects with our server & developer tools for plugin development.

Plugin & Mod Project Generator

Generate a complete Hytale plugin or mod project structure with all necessary files and configurations. Create your project skeleton in seconds.

Configuration
Configure your project settings
Project Structure
Folder layout for your project
MyHytalePlugin/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/myplugin/
│   │   │       ├── MyHytalePlugin.java
│   │   │       ├── commands/
│   │   │       │   └── ExampleCommand.java
│   │   │       ├── listeners/
│   │   │       │   └── PlayerListener.java
│   │   │       └── util/
│   │   │           └── ConfigManager.java
│   │   └── resources/
│   │       ├── manifest.json
│   │       └── config.yml
│   └── test/
│       └── java/
│           └── com/example/myplugin/
│               └── MyHytalePluginTest.java
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
└── README.md

Generated Files

build.gradle.kts
plugins {
    java
    id("com.github.johnrengelman.shadow") version "8.1.1"
}

group = "com.example.myplugin"
version = "1.0.0"

repositories {
    mavenCentral()
    maven {
        name = "hytale"
        url = uri("https://repo.hytale.com/releases")
    }
}

dependencies {
    compileOnly("com.hytale:server-api:1.0.0")

    implementation("com.google.guava:guava:32.1.3-jre")
    implementation("com.google.code.gson:gson:2.10.1")

    testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(25))
    }
}

tasks.test {
    useJUnitPlatform()
}

tasks.shadowJar {
    archiveClassifier.set("")
    relocate("com.google.gson", "com.example.myplugin.libs.gson")
}

tasks.build {
    dependsOn(tasks.shadowJar)
}

tasks.processResources {
    filesMatching("manifest.json") {
        expand(
            "version" to project.version,
            "name" to project.name
        )
    }
}
manifest.json
{
  "id": "my-hytale-plugin",
  "name": "MyHytalePlugin",
  "version": "1.0.0",
  "description": "A Hytale plugin",
  "authors": ["YourName"],
  "main": "com.example.myplugin.MyHytalePlugin",
  "api_version": "1.0",
  "dependencies": {
    "required": [],
    "optional": []
  },
  "load_order": "POSTWORLD",
  "permissions": {
    "my-hytale-plugin.admin": {
      "description": "Full admin access",
      "default": "op"
    },
    "my-hytale-plugin.use": {
      "description": "Basic usage permission",
      "default": true
    }
  }
}
MyHytalePlugin.java
package com.example.myplugin;

import com.hytale.api.plugin.Plugin;
import com.hytale.api.plugin.PluginInfo;
import com.hytale.api.event.EventManager;
import com.hytale.api.command.CommandManager;

@PluginInfo(
    id = "my-hytale-plugin",
    name = "MyHytalePlugin",
    version = "${version}"
)
public class MyHytalePlugin extends Plugin {

    private static MyHytalePlugin instance;

    @Override
    public void onLoad() {
        instance = this;
        getLogger().info("MyHytalePlugin is loading...");
    }

    @Override
    public void onEnable() {
        getLogger().info("MyHytalePlugin is enabling...");

        // Save default config
        saveDefaultConfig();

        // Register listeners
        // EventManager events = getServer().getEventManager();
        // events.registerListener(new YourListener(this));

        // Register commands
        // CommandManager commands = getServer().getCommandManager();
        // commands.registerCommand(new YourCommand(this));

        getLogger().info("MyHytalePlugin has been enabled!");
    }

    @Override
    public void onDisable() {
        getLogger().info("MyHytalePlugin is disabling...");
        getLogger().info("MyHytalePlugin has been disabled!");
    }

    public static MyHytalePlugin getInstance() {
        return instance;
    }
}

Technology Stack

Java

25

Gradle

9.2.0

Shadow Plugin

8.1.1

Hytale API

1.0.0

What is the Plugin & Mod Project Generator?

The Plugin & Mod Project Generator is a tool that helps Hytale developers quickly scaffold new plugin or mod projects. It generates the complete folder structure, build configuration files, and starter code templates needed to begin development. Whether you're creating a server plugin, a content mod, or a full-stack project combining both, this tool sets up everything you need to get started.

Understanding Hytale Development

Hytale supports two main types of extensions: Plugins (server-side Java code) and Mods (content packs with JSON definitions, textures, models, and animations). Plugins add functionality and server logic, while mods add new game content like blocks, items, and NPCs.

Plugin Projects

Java-based server plugins that extend server functionality:

  • Structure: Gradle project with Java source code
  • Files: build.gradle.kts, manifest.json, main plugin class
  • Use case: Adding commands, event handlers, server logic
Mod Projects

Content packs that add new game content:

  • Structure: Folders for packs, textures, models, animations
  • Files: pack.json, block/item/NPC JSON definitions
  • Use case: Adding custom blocks, items, NPCs, textures

How to use the Project Generator

Using the Project Generator is simple: configure your project settings, review the generated structure and files, then copy them to your development environment. The tool generates all necessary files with proper naming conventions and folder structures.

Step 1: Configure
Select your project type (Plugin, Mod, or Full), enter your project name, package name (for plugins), author, description, and version. The generator will use these values throughout the generated files.
Step 2: Review
Review the generated project structure and files. The structure shows the folder layout, and each file section displays the complete file content. All files are ready to copy and use.
Step 3: Copy & Use
Click the "Copy" button on any file or structure to copy it to your clipboard. Then paste it into your development environment. For plugins, import the project into your IDE and build with Gradle.
?

Frequently Asked Questions

You can generate three types of projects: Plugin (Java-based server plugins), Mod (content packs with blocks, items, NPCs, textures, models), or Full (combination of both plugin and mod in one project). Each type generates the appropriate folder structure and starter files.

Other server & dev tools

Pair this generator with other server tools to quickly configure, validate, and deploy your Hytale projects.

Plugin & Mod Project Generator - Generate Hytale Plugin & Mod Projects | HytaleIO