Loading...
Loading...
Java plugin development for Hytale servers. Covers Java 25 setup, Gradle builds, Antigravity/IDE configuration, plugin lifecycle (setup/start/shutdown), command registration, event handling, ECS architecture, and deployment. Use when creating server plugins, extending game functionality, or implementing custom game mechanics.
npx skill4agent add z3nlotus/hytale-agent-skills hytale-plugin-devI'll help you create that plugin! First, let me verify your setup:
Prerequisites:
1. Java 25 (download from Adoptium or Oracle)
2. Gradle (I can run commands for you in Antigravity!)
If you're using Antigravity, you're all set - I can handle builds directly!# Download from Adoptium
winget install EclipseAdoptium.Temurin.25.JDK# Clone the official template (Darkhax/Jared)
git clone https://github.com/Darkhax-Hytale/HytalePluginTemplate.git MyPlugin
cd MyPluginMyPlugin/
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
└── src/
└── main/
└── java/
└── com/
└── yourname/
└── myplugin/
└── MyPlugin.javagradle buildJavaPluginpackage com.yourname.myplugin;
import com.hytale.server.plugin.JavaPlugin;
public class MyPlugin extends JavaPlugin {
@Override
public void setup() {
// Called during server setup phase
// Register commands, events, configs here
getLogger().info("MyPlugin setting up...");
}
@Override
public void start() {
// Called when server starts
// Initialize runtime features
getLogger().info("MyPlugin started!");
}
@Override
public void shutdown() {
// Called during server shutdown
// Clean up resources, save data
getLogger().info("MyPlugin shutting down...");
}
}Server Boot → setup() → start() → [Running] → shutdown() → Server Stopsetup()@Override
public void setup() {
registerCommand("hello", (sender, args) -> {
sender.sendMessage("Hello from MyPlugin!");
return true;
});
registerCommand("spawn", (sender, args) -> {
if (sender instanceof Player player) {
player.teleportToSpawn();
player.sendMessage("Teleported to spawn!");
}
return true;
});
}registerCommand("give", (sender, args) -> {
if (args.length < 2) {
sender.sendMessage("Usage: /give <player> <item>");
return false;
}
String playerName = args[0];
String itemId = args[1];
// Implementation...
return true;
});| Category | Examples |
|---|---|
| Server Lifecycle | |
| Player Events | |
| World Events | |
| Entity Events | |
| Block Events | |
@Override
public void setup() {
registerEventListener(PlayerJoinEvent.class, event -> {
Player player = event.getPlayer();
getServer().broadcastMessage(player.getName() + " joined!");
});
registerEventListener(BlockBreakEvent.class, event -> {
if (event.getBlock().getType().equals("diamond_ore")) {
event.getPlayer().sendMessage("You found diamonds!");
}
});
}registerEventListener(BlockBreakEvent.class, event -> {
if (isProtectedArea(event.getBlock().getPosition())) {
event.setCancelled(true);
event.getPlayer().sendMessage("This area is protected!");
}
});// Get a component from an entity
HealthComponent health = entity.getComponent(HealthComponent.class);
if (health != null) {
health.setHealth(health.getHealth() + 10);
}
// Check if entity has component
if (entity.hasComponent(FlyingComponent.class)) {
// Handle flying entity
}# Windows - find the server JAR:
# %appdata%\Hytale\Hytale\install\release\package\game\latest\Server\HytaleServer.jar
# Install to local Maven cache:
mvn install:install-file \
-Dfile="PATH_TO_JAR/HytaleServer.jar" \
-DgroupId=com.hypixel.hytale \
-DartifactId=Server \
-Dversion=1.0-SNAPSHOT \
-Dpackaging=jarplugins {
`java-library`
id("hytale-mod") version "0.+" // Community tooling
}
group = "com.yourname"
version = "1.0.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25)) // Required!
}
}
repositories {
mavenLocal() // Priority 1: Local cache (from extracted JAR)
mavenCentral()
// Priority 2: Community mirror (more stable than official)
maven("https://maven.hytale-modding.info/releases") {
content {
includeGroup("com.hypixel.hytale")
}
}
// JitPack for GitHub-hosted community libs
maven("https://jitpack.io")
}
dependencies {
// MUST be compileOnly - server provides at runtime
compileOnly("com.hypixel.hytale:Server:1.0-SNAPSHOT")
}compileOnly# Build the plugin JAR
gradle build
# Output: build/libs/MyPlugin-1.0.0.jar%APPDATA%/Hytale/UserData/Mods/server/mods/plugins/MyPlugin/
├── build.gradle.kts # Gradle build script
├── settings.gradle.kts # Gradle settings
├── gradle.properties # Gradle properties
├── src/
│ └── main/
│ ├── java/
│ │ └── com/yourname/myplugin/
│ │ ├── MyPlugin.java # Main plugin class
│ │ ├── commands/ # Command handlers
│ │ ├── events/ # Event listeners
│ │ └── systems/ # ECS systems
│ └── resources/
│ └── plugin.json # Plugin metadata
└── build/
└── libs/
└── MyPlugin-1.0.0.jar # Built plugin| Task | How |
|---|---|
| Build plugin | |
| Install plugin | Copy JAR to |
| Reload plugins | |
| View plugins | |
| Debug | Use Antigravity terminal + logging |
https://maven.hytale-modding.info/releasesjava-25-hytalegradle-hytale