Plugin Manifest
Dokumentace k manifest.json souboru pluginu.
Obsah
| Soubor | Popis |
|--------|-------|
| MANIFEST_STRUCTURE.md | PluginManifest, PluginIdentifier, AuthorInfo, SubPlugins, CoreBuilder |
| DEPENDENCIES.md | Semver, SemverRange, Dependencies, OptionalDependencies, LoadBefore |
---
Struktura Pluginu
my-plugin/
├── manifest.json # Povinný - metadata pluginu
├── src/
│ └── main/
│ ├── java/
│ │ └── com/myplugin/
│ │ └── MyPlugin.java
│ └── resources/
│ └── manifest.json # Kopie pro JAR
└── build.gradle # Build konfigurace
---
manifest.json
Minimální Manifest
{
"Id": "MyPlugin",
"Version": "1.0.0",
"Name": "My Plugin",
"Description": "Popis mého pluginu",
"EntryPoint": "com.myplugin.MyPlugin"
}
Kompletní Manifest
{
"Id": "MyPlugin",
"Version": "1.0.0",
"Name": "My Plugin",
"Description": "Detailní popis pluginu a jeho funkcí",
"Author": "Jméno Autora",
"Website": "https://example.com",
"EntryPoint": "com.myplugin.MyPlugin",
"Dependencies": {
"Hytale:DamageModule": "*",
"Hytale:TeleportPlugin": ">=1.0.0"
},
"SoftDependencies": {
"OtherPlugin": "*"
},
"LoadBefore": [
"SomeOtherPlugin"
],
"LoadAfter": [
"RequiredPlugin"
]
}
---
Pole Manifestu
Povinná Pole
| Pole | Typ | Popis |
|------|-----|-------|
| Id | String | Unikátní identifikátor pluginu |
| Version | String | Verze pluginu (semver) |
| Name | String | Zobrazovaný název |
| EntryPoint | String | Plně kvalifikovaná třída pluginu |
Volitelná Pole
| Pole | Typ | Popis |
|------|-----|-------|
| Description | String | Popis pluginu |
| Author | String | Autor pluginu |
| Website | String | URL webu/repozitáře |
| Dependencies | Object | Povinné závislosti |
| SoftDependencies | Object | Volitelné závislosti |
| LoadBefore | Array | Načíst před těmito pluginy |
| LoadAfter | Array | Načíst po těchto pluginech |
---
Dependencies (Závislosti)
Povinné Závislosti
Plugin se nenačte pokud závislost chybí:
{
"Dependencies": {
"Hytale:DamageModule": "*",
"Hytale:TeleportPlugin": ">=1.0.0"
}
}
Verze Syntaxe
| Syntaxe | Význam |
|---------|--------|
| "*" | Jakákoliv verze |
| "1.0.0" | Přesně verze 1.0.0 |
| ">=1.0.0" | Verze 1.0.0 nebo vyšší |
| ">1.0.0" | Vyšší než 1.0.0 |
| "<=2.0.0" | Verze 2.0.0 nebo nižší |
| "<2.0.0" | Nižší než 2.0.0 |
Soft Dependencies
Plugin se načte i bez těchto závislostí:
{
"SoftDependencies": {
"OptionalPlugin": "*"
}
}
V kódu pak kontroluješ:
@Override
protected void setup() {
// Kontrola soft dependency
if (isPluginLoaded("OptionalPlugin")) {
// Integrace s OptionalPlugin
setupOptionalFeatures();
}
}
---
Vestavěné Moduly
Hytale:DamageModule
Vyžadováno pro:
DamageEventDeathEvent
{
"Dependencies": {
"Hytale:DamageModule": "*"
}
}
Hytale:TeleportPlugin
Poskytuje:
/spawn, /tp, /warp příkazy{
"Dependencies": {
"Hytale:TeleportPlugin": "*"
}
}
Hytale:BedsPlugin
Poskytuje:
---
Load Order (Pořadí Načítání)
LoadAfter
Plugin se načte až po specifikovaných pluginech:
{
"LoadAfter": [
"DatabasePlugin",
"CorePlugin"
]
}
LoadBefore
Plugin se načte před specifikovanými pluginy:
{
"LoadBefore": [
"UIPlugin"
]
}
Kombinace
{
"Dependencies": {
"CorePlugin": "*"
},
"LoadAfter": [
"CorePlugin"
],
"LoadBefore": [
"UIPlugin"
]
}
---
Příklady z Dekompilovaného Kódu
TeleportPlugin
{
"Id": "Hytale:TeleportPlugin",
"Version": "1.0.0",
"Name": "Teleport Plugin",
"Description": "Provides teleportation commands and warp system",
"EntryPoint": "com.hypixel.hytale.builtin.teleport.TeleportPlugin"
}
BedsPlugin
{
"Id": "Hytale:BedsPlugin",
"Version": "1.0.0",
"Name": "Beds Plugin",
"Description": "Sleep and bed mechanics",
"EntryPoint": "com.hypixel.hytale.builtin.beds.BedsPlugin"
}
---
Verzování
Semantic Versioning
MAJOR.MINOR.PATCH1.0.0 - První stabilní verze
1.1.0 - Nové funkce, zpětně kompatibilní
1.1.1 - Bug fixy
2.0.0 - Breaking changes
Příklad Vývoje
// Vývoj
{ "Version": "0.1.0" }// Alpha
{ "Version": "0.5.0-alpha" }
// Beta
{ "Version": "0.9.0-beta" }
// Release
{ "Version": "1.0.0" }
// Patch
{ "Version": "1.0.1" }
---
Validace Manifestu
Časté Chyby
| Chyba | Příčina |
|-------|---------|
| Plugin se nenačte | Chybí povinné pole |
| ClassNotFoundException | Špatný EntryPoint |
| Dependency not found | Chybí závislost |
| Circular dependency | Cyklická závislost |
Checklist
Id je unikátníVersion je validní semverEntryPoint odpovídá skutečné tříděDependencies jsou dostupné---
Build Konfigurace
Gradle - Kopírování Manifestu
processResources {
from('manifest.json') {
into '/'
}
}jar {
from('manifest.json')
}
Maven - Kopírování Manifestu
.
manifest.json
---
Shrnutí
| Pole | Povinné | Popis |
|------|---------|-------|
| Id | Ano | Unikátní ID |
| Version | Ano | Verze (semver) |
| Name | Ano | Zobrazovaný název |
| EntryPoint | Ano | Hlavní třída |
| Description | Ne | Popis |
| Dependencies | Ne | Povinné závislosti |
| SoftDependencies | Ne | Volitelné závislosti |
| LoadAfter | Ne | Načíst po |
| LoadBefore | Ne | Načíst před |