Metadane Wtyczek
Informacja
The metadata described here is for plugins for SpongeAPI 8 or later. Plugins for version 7 should define their
metadata in the @Plugin
annotation
Every Sponge plugin must have an entry in a metadata file known as sponge_plugins.json
, which is found in the
META-INF
directory. In most cases, a plugin JAR will contain this file, and the file will refer to one plugin.
However, it is possible for there to be multiple plugins in a JAR, and the metadata file can represent multiple plugins.
Jeśli używasz Gradle, SpongeGradle 2 ułatwi Ci zdefiniowanie metadanych dla twojego pluginu. Jeśli tworzysz nowy plugin lub potrzebujesz referencji do tego jak używać SpongeGradle 2, spójrz na nasze repozytorium szablonu pluginu które pokazuje przykładową konfigurację.
Mimo iż większość metadanych jest nieobowiązkowa, dodanie ich pomaga użytkownikom łatwiej zidentyfikować Twój plugin, dając im możliwość sprawdzenia nazwy, wersji, opisu, a nawet autorów pluginu podczas jego działania. Metadane są również używane podczas publikowania pluginów na portalu pluginów takim jak Ore.
Adnotacja Pluginu
Powinieneś oznaczyć swoją główną klasę pluginu przy pomocy adnotacji @Plugin
i zawrzeć w niej jego id.
import org.spongepowered.api.plugin.Plugin;
@Plugin(id = "myplugin")
Dodatkowe metadane muszą być zdefiniowane w pliku sponge_plugins.json
.
Format sponge_plugins.json
Informacja
Jeśli używasz płyciny SpongeGradle, zalecamy użycie buildera metadanych, który jest tam dostępny.
Plik META-INF/sponge_plugins.json
z jednym pluginem wygląda tak:
{
"loader": {
"name": "java_plain",
"version": "1.0"
},
"license": "MIT",
"global": {
"version": "8.0.0",
"links": {
"homepage": "https://www.spongepowered.org",
"source": "https://www.spongepowered.org/source",
"issues": "https://www.spongepowered.org/issues"
},
"contributors": [
{
"name": "SpongePowered",
"description": "Lead Developer"
}
],
"dependencies": [
{
"id": "spongeapi",
"version": "8.0.0"
}
]
},
"plugins": [
{
"id": "test",
"name": "Test Plugin",
"entrypoint": "org.spongepowered.test.TestPlugin",
"description": "Manages the test plugins"
}
]
}
Na ogół, plik json pluginu nie zmieni się zbyt wiele. Każdy element w sekcji „global” może być również umieszczony w metadanych każdego pluginu, co pozwala na nadpisanie wartości w złożonych, wielo-pluginowych plikach JAR.
Poniższa tabela wyjaśnia każdą sekcję pliku:
Sekcja |
Wymagane |
Wyjaśnienie |
---|---|---|
Moduł ładujący |
tak |
Moduł ładujący używany przez plugin. W większości przypadków, plugin będzie używał modułu „java_plain” w wersji „1.0” |
Licencja |
tak |
Licencja pliku JAR z pluginami. Swobodny tekst, ale częstym wyborem są MIT i Apache 2 |
Mapowanie |
nie |
Mapowania, w których może być zapisany kod w JAR. Format tego ciągu powinien być w formacie zależności maven-owych (group:artifact:version). Powinieneś skonsultować się z dostawcą mapowań, aby określić prawidłową formę tego pola, jeśli tego potrzebujesz. Standardowe pluginy Sponge nie będą musiały używać mapowania, więc dla nich to pole zostanie pominięte |
globalne |
nie |
Atrybuty, które odnoszą się do wszystkich pluginów, ale mogą być nadpisane na poziomie per-plugin. Zerknij na „atrybuty pluginu” poniżej, aby zobaczyć listę dopuszczalnych wartości. Jeśli ten blok nie został określony, wszystkie wymagane wartości muszą być we wszystkich blokach pluginu. |
pluginy |
tak, conajmniej jeden plugin jest wymagany |
Lista obiektów pluginów z określonymi metadanymi. Zerknij na „atrybuty pluginu” aby zobaczyć listę dopuszczalnych wartości. |
Atrybuty Pluginów
Pluginy mogą mieć następujące atrybuty. Każdy atrybut oznaczony jako „globalny” może znaleźć się w sekcji „globalej” i może być nadpisany per-plugin.
Atrybut |
Wymagane |
Globalne |
Wyjaśnienie |
---|---|---|---|
id |
tak |
nie |
ID pluginu. |
nazwa |
nie |
nie |
Przyjazna nazwa pluginu. |
description |
nie |
nie |
Opis pluginu. |
entrypoint |
tak |
nie |
Punkt wejściowy pluginu, którym jest w pełni określona nazwa klasy, którą moduł ładujący powinien załadować (często określana jako klasa główna) |
wersja |
tak |
tak |
Wersja pluginu. Powinna być w formacie SemVer. |
linki |
nie |
tak |
Linki do Twojego projektu na internecie. Zawierają trzy właściwości - gdzie każda jest opcjonalna:
|
oznakowanie |
nie |
tak |
Jak Twój plugin jest oznakowany na kliencie. Zawiera dwa pola:
|
współtwórcy |
tak |
tak |
Lista współtwórców Twojego pluginu. Co najmniej jeden jest wymagany z nazwą i opisem. |
zależności |
nie |
tak |
Lista zależności posiadanych przez Twój plugin. Zawiera następujące pola:
|