3.6 KiB
title, type, weight
| title | type | weight |
|---|---|---|
| Manifest Schema | docs | 1 |
The manifest.json file defines your plugin's metadata and configuration.
Basic Structure
{
"name": "MyPlugin",
"version": "1.0.0",
"main": "com.example.MyPlugin",
"dependencies": []
}
Required Fields
name
Type: string
The unique identifier for your plugin. Used for logging and dependency resolution.
{
"name": "MyAwesomePlugin"
}
version
Type: string
The plugin version following semantic versioning (recommended).
{
"version": "1.0.0"
}
main
Type: string
The fully qualified class name of your main plugin class. This class must extend JavaPlugin.
{
"main": "com.example.myplugin.MyPlugin"
}
Optional Fields
dependencies
Type: string[]
List of plugin names this plugin depends on. Dependent plugins will be loaded first.
{
"dependencies": ["CoreLib", "DatabasePlugin"]
}
description
Type: string
A brief description of your plugin.
{
"description": "Adds awesome features to the server"
}
author
Type: string
The plugin author or team name.
{
"author": "YourName"
}
authors
Type: string[]
List of plugin authors for team projects.
{
"authors": ["Developer1", "Developer2"]
}
website
Type: string
Plugin homepage or documentation URL.
{
"website": "https://example.com/myplugin"
}
Complete Example
{
"name": "EconomyPlugin",
"version": "2.1.0",
"main": "com.example.economy.EconomyPlugin",
"description": "A comprehensive economy system for Hytale servers",
"author": "GameDev",
"authors": ["GameDev", "Contributor1"],
"website": "https://github.com/example/economy",
"dependencies": ["DatabaseLib"]
}
File Location
The manifest.json must be placed in the root of your plugin JAR file:
MyPlugin.jar
├── manifest.json
├── com/
│ └── example/
│ └── myplugin/
│ └── MyPlugin.class
└── resources/
└── config.yml
Validation
{{< callout type="warning" >}} The server validates manifest.json on startup. Invalid manifests will prevent your plugin from loading.
Common issues:
- Missing required fields (name, version, main)
- Invalid JSON syntax
- Main class not found in JAR
- Circular dependencies {{< /callout >}}
Main Class Requirements
Your main class specified in main must:
- Extend
JavaPlugin - Have a public no-argument constructor
- Be accessible in the JAR classpath
package com.example.myplugin;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
public class MyPlugin extends JavaPlugin {
@Override
public void start() {
// Plugin enabled - register events, commands, etc.
getLogger().at(Level.INFO).log("Plugin started!");
}
@Override
public void shutdown() {
// Plugin disabled - cleanup resources
}
}
Dependency Resolution
Dependencies are loaded in order:
- All dependencies must be present and valid
- Circular dependencies cause load failure
- Missing dependencies cause load failure
LoadOrder:
1. DatabaseLib (no dependencies)
2. CoreLib (depends on DatabaseLib)
3. MyPlugin (depends on CoreLib)
Version Compatibility
{{< callout type="info" >}} Consider versioning your plugin API if other plugins depend on you:
- Major: Breaking changes
- Minor: New features, backward compatible
- Patch: Bug fixes {{< /callout >}}
{
"name": "MyAPI",
"version": "2.0.0"
}
Dependent plugins can then specify minimum versions in their documentation.