ResourcePackManager API
Die generierte Java-Referenz enthält durchsuchbare Klassen, Methoden und Signaturen sowie die Quellversion und den Commit jedes Moduls.
ResourcePackManager stellt eine Java-API bereit, die es anderen Plugins ermöglicht, ihre Resource Packs zur Laufzeit für die Zusammenführung zu registrieren.
Kompiliere gegen com.magmaguy:ResourcePackManager:2.4.6 mit provided oder compileOnly, passend zum installierten Plugin. Dies ist die für diese Aktualisierung geprüfte öffentliche Maven-Version; der aktuelle Quellcode trägt die Version 2.4.6. Das Repository und Beispiele für Abhängigkeiten findest du im Java-API-Verzeichnis. Deklariere für eine erforderliche Integration depend: [ResourcePackManager]. Dies ist eine API für Bukkit-Backends; Proxy-Plugins können damit keine Pakete auf einem entfernten Backend registrieren.
Zugriff auf die API
Die API-Klasse ist com.magmaguy.resourcepackmanager.api.ResourcePackManagerAPI. Alle Methoden sind statisch.
Beispiel mit einem lokalen Paket
Dieses Plugin registriert eine vorhandene ZIP unter plugins/ExamplePack/pack.zip, wenn sein Deskriptor den Namen ExamplePack angibt. Lege die ZIP vor dem Serverstart dort ab.
package example;
import com.magmaguy.resourcepackmanager.api.ResourcePackManagerAPI;
import java.io.File;
import org.bukkit.plugin.java.JavaPlugin;
public final class ExamplePack extends JavaPlugin {
@Override
public void onEnable() {
File pack = new File(getDataFolder(), "pack.zip");
if (!pack.isFile()) {
getLogger().warning("Pack registration skipped: pack.zip is missing");
return;
}
ResourcePackManagerAPI.registerLocalResourcePack(
getName(), getDataFolder().getName() + "/pack.zip",
false, false, true, "");
}
}
Die Registrierung gibt void zurück und ersetzt eine vorhandene Registrierung unter demselben Plugin-Namen. Sie erfasst einen Beitrag; das Paket wird dadurch nicht sofort zusammengeführt, gehostet oder gesendet. Ist die erste Zusammenführung bereits erfolgt, fordere einen Reload an, sobald der Beitrag bereitsteht, oder lasse den Administrator /rspm reload ausführen. Starte nicht für jeden Spieler oder jede Dateiänderung erneut einen Reload.
Rufe die Registrierung im Server-Thread auf und gib genau eine Quelle an. Die Registrierungsmethode speichert die Eingabe, ohne zu prüfen, ob sich das Paket herunterladen oder zusammenführen lässt. Prüfe beim Verifizieren der Auslieferung das Ergebnis der Zusammenführung und die Serverprotokolle. Diese Fassade besitzt keine öffentliche Methode zum Aufheben einer Registrierung.
Ein Resource Pack registrieren
Es gibt drei Registrierungsmethoden: für lokale Pakete, für entfernte Pakete und eine Methode, die wahlweise eine der beiden Quellen annimmt.
registerResourcePack
ResourcePackManagerAPI.registerResourcePack(
String pluginName,
String localPath,
String url,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
Registriert ein Resource Pack, das von einem lokalen Pfad oder einer Remote-URL stammen kann. Genau einer von localPath oder url sollte nicht-null sein.
registerLocalResourcePack
ResourcePackManagerAPI.registerLocalResourcePack(
String pluginName,
String localPath,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
Registriert ein Resource Pack von einem lokalen Pfad relativ zum plugins-Verzeichnis.
registerRemoteResourcePack
ResourcePackManagerAPI.registerRemoteResourcePack(
String pluginName,
String url,
boolean encrypts,
boolean distributes,
boolean zips,
String reloadCommand
);
Registriert ein Resource Pack, das von der angegebenen URL heruntergeladen wird.
Parameter
| Parameter | Beschreibung |
|---|---|
pluginName | Der Name deines Plugins, genau wie er in der Plugin-Liste erscheint. Groß-/Kleinschreibung wird beachtet. |
localPath | Relativer Pfad vom plugins-Verzeichnis zu deiner Resource-Pack-Datei oder deinem Ordner. |
url | URL zum Herunterladen des Resource Packs. |
encrypts | Für zukünftige Verwendung reserviert. Aktuell ohne Funktion. |
distributes | Für zukünftige Verwendung reserviert. Aktuell ohne Funktion. |
zips | Ob das Resource Pack bereits gezippt ist. Falls false, zippt ResourcePackManager es vor dem Zusammenführen. |
reloadCommand | Der Reload-Befehl für dein Plugin. Für zukünftige Verwendung reserviert. |
Einen Reload auslösen
ResourcePackManagerAPI.reloadResourcePack();
Lädt ResourcePackManager neu, was alle registrierten Packs erneut zusammenführt und das Ergebnis erneut hostet, wenn Auto-Hosting aktiviert ist.
Was diese API nicht abdeckt
Benutzerdefinierte Bedrock-Entities werden nicht über diese Klasse registriert. Ein Plugin steuert sie bei, indem es native Bedrock-Entity-Assets unter assets/<namespace>/rspm_bedrock_pack/ in seinem Java-Paket ausliefert; RSPM trägt sie in das erzeugte Bedrock-Paket und die mitgelieferte Geyser-Erweiterung registriert die daraus entstehenden Definitionen. Siehe Bedrock-Konvertierung und Geyser-Erweiterung & benutzerdefinierte Entities.
Hinweise für die Bedrock-Konvertierung von Items sind ebenfalls Paketdateien statt API-Aufrufe: assets/<namespace>/rspm_item_bases/ deklariert Basis-Items, assets/<namespace>/rspm_item_java_only/ hält Items aus der Bedrock-Konvertierung heraus, und assets/<namespace>/rspm_item_particles/ hängt Partikel an gehaltene Items. Siehe Basis-Items, Reine Java-Items und Partikel gehaltener Items.
Hinweise
- Über die API registrierte Packs nehmen an der
priorityOrderauf die gleiche Weise teil wie eingebaute Integrationen. Füge deinen Plugin-Namen zurpriorityOrderinconfig.ymlhinzu, um zu steuern, wo es in der Zusammenführungsreihenfolge steht. - Wenn dein Plugin-Name nicht in der
priorityOrderaufgeführt ist, erhält dein Pack die niedrigste Priorität. - Die Registrierung sollte während des
onEnableoder der Initialisierung deines Plugins stattfinden, bevor ResourcePackManager seine eigene Initialisierung abschließt und die erste Zusammenführung auslöst.