ResourcePackManager (RSPM)
ResourcePackManager erkennt, führt zusammen, hostet und verteilt Ressourcenpakete von unterstützten Plugins sowie manuell bereitgestellte Pakete. Er kann das zusammengeführte Java-Paket außerdem in ein Bedrock-Ressourcenpaket umwandeln, damit GeyserMC-Spieler dieselben benutzerdefinierten Inhalte wie Java-Spieler sehen, und bietet erstklassige Unterstützung für BungeeCord-, Waterfall- und Velocity-Proxy-Netzwerke.
Was er tut
- erkennt unterstützte Plugin-Pakete und führt sie gemäß
priorityOrderzusammen - betreibt einen eigenen eingebauten HTTP-Server, sodass er das zusammengeführte Paket selbst hosten kann (kein externer Datei-Host erforderlich)
- kann auf MagmaGuys kostenloses Hosting (Auto-Host) zurückfallen, wenn Selbst-Hosting nicht machbar ist
- kann die Verwendung des Pakets erzwingen oder optional anbieten
- überwacht Paketänderungen und führt automatisch neu zusammen, sobald sich die Quellen stabilisieren
- wandelt das zusammengeführte Java-Paket in ein Bedrock-Ressourcenpaket für GeyserMC um
- registriert über eine gebündelte Geyser-Erweiterung echte benutzerdefinierte Bedrock-Entities bei Geyser, sodass modellierte Entities (z. B. FreeMinecraftModels, EliteMobs) für Bedrock-Spieler gerendert und animiert werden
- funktioniert auf Proxy-Netzwerken: jedes Backend erzeugt sein eigenes Bedrock-Paket, das Proxy-Plugin holt sie ab, führt sie zusammen und liefert das Ergebnis über Geyser aus
- verbindet ein Netzwerk ohne jeden einzufügenden Schlüssel: Der Proxy besitzt den Netzwerkschlüssel, speichert ihn in seiner eigenen
network-key-Datei und schiebt ihn automatisch an jedes Backend, sobald dort zum ersten Mal ein Spieler verbindet - kann sich netzwerkweit selbst aktuell halten: Backends bieten die universelle Plugin-Jar über eine authentifizierte Route an; der Proxy prüft Struktur und Version, lehnt Downgrades ab, verifiziert die übertragenen Bytes per SHA-256 und stellt sie für das nächste Herunterfahren bereit
Architektur im Überblick
RSPM v2 ist ein Multi-Modul-Maven-Build, wird aber als einzelne Jar ausgeliefert: ResourcePackManager.jar. Diese eine Jar enthält das Bukkit-/Paper-Plugin, das Velocity-Plugin und das BungeeCord-/Waterfall-Plugin gleichzeitig — Minecraft lädt jeweils den Einstiegspunkt, der zur laufenden Plattform passt. Es gibt keine separaten ResourcePackManager-Velocity.jar-/ResourcePackManager-BungeeCord.jar-Dateien mehr zum Extrahieren.
Den Ordner proxy-extension/ gibt es weiterhin, aber er bedeutet jetzt etwas anderes: Wenn ein Backend bemerkt, dass es hinter einem Proxy sitzt und nie einen Netzwerkschlüssel bekommen hat, legt es eine byteweise identische Kopie seiner eigenen laufenden Jar unter plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar ab und fordert dich auf, genau diese eine Datei auf den Proxy zu kopieren. Es ist eine Bequemlichkeitskopie der Jar, die du ohnehin hast, kein separates plattformspezifisches Artefakt.
Dieselbe Jar spielt je nachdem, wo du sie ablegst, zwei Rollen:
- Als Backend-Plugin (auf jedem Paper-/Spigot-Backend) — mischt Java-Pakete, führt den Bedrock-Konverter aus, hostet das Paket, stellt einen kleinen HTTP-Server bereit und sendet Pakete an Java-Clients.
- Als Proxy-Plugin (auf einem Velocity- oder BungeeCord-/Waterfall-Proxy) — holt das Bedrock-Paket und die Mappings jedes Backends ab, führt sie zu einem einzigen netzwerkweiten Paket zusammen und liefert es über das Geyser des Proxys an Bedrock-Clients aus.
Ein eigenständiger Server benötigt die Jar nur auf dem Backend. Ein Proxy-Netzwerk benötigt dieselbe Jar auf jedem Backend UND eine Kopie auf dem Proxy.
Dieselbe Jar dient außerdem als Geyser-Erweiterung. Wenn das Backend eine lokale Geyser-Spigot-Installation erkennt, installiert es exakt dieselbe universelle ResourcePackManager.jar in Geyser-Spigot/extensions/, damit Geyser die benutzerdefinierten Bedrock-Entities von RSPM darstellen kann; die Proxy-Rolle tut dasselbe für den Geyser des Proxys. (Ältere Versionen lieferten eine separate ResourcePackManager-GeyserBridge.jar aus — diese Datei ist ausgemustert und wird über Geysers Update-Warteschlange automatisch ersetzt.) Siehe Geyser-Erweiterung & benutzerdefinierte Entities.
Hosting-Optionen
Die Auslieferung des Java-Pakets folgt dieser Rangfolge:
- Erzwungenes Selbst-Hosting (
selfHostForce: true) — übersteuertautoHostundselfHostEnabled, überspringt alle Prüfungen und den Remote-Upload und kündigt die lokale URL an. Hauptsächlich für Tests. - Selbst-Hosting zuerst (
autoHost: true,preferSelfHost: trueundselfHostEnabled: true, alles Standardwerte) — RSPM startet einen eigenen HTTP-Server, führt eine Kette von Plausibilitätsprüfungen durch (Nicht-LAN-Adresse, Localhost-Selbsttest, externer Erreichbarkeitstest über magmaguy.com) und kündigt Clients die lokale URL an. Keine Bandbreitenkosten für MagmaGuy. Diese Präferenz „zuerst Selbst-Hosting versuchen" wird auf einem Proxy-Backend übersprungen, das direkt zu Schritt 3 geht; der eigene HTTP-Server des Backends läuft dort trotzdem, weil der Proxy die Bedrock-Artefakte von ihm abholt. - Remote-Auto-Host als Fallback — ist Selbst-Hosting deaktiviert oder scheitert eine tatsächliche Erreichbarkeitsprüfung, lädt RSPM das Paket auf MagmaGuys CDN unter
magmaguy.com/rsp/hoch und kündigt stattdessen diese URL an. Schlägt der Remote-Pfad fehl, kann er auf Selbst-Hosting zurückfallen, sofernselfHostEnabled: true.
Wenn sowohl autoHost: false als auch selfHostForce: false gesetzt sind, schreibt RSPM die zusammengeführte ZIP-Datei nach plugins/ResourcePackManager/output/, ohne eine URL zu senden.
Siehe Selbst-Hosting für den vollständigen Auslieferungs-Entscheidungsbaum, die Port-Auflösung und die Erkennung des externen Hosts.
Java-zu-Bedrock-Konvertierung
Der Bedrock-Konverter ist nicht mehr ausschließlich für FreeMinecraftModels gedacht. Er durchläuft rekursiv jede Items-Definitionsdatei im Format 1.21.4+ (assets/<namespace>/items/**/*.json) im zusammengeführten Paket und erzeugt Bedrock-Geometrien, Attachables und Inventarsymbole für jedes Plugin, das sie geliefert hat:
- Bedrock-Spieler sehen 3D-Items, benutzerdefinierte Rüstungen und modellierte Ausrüstung für jedes Plugin, dessen Paket das Items-Definitionsformat 1.21.4+ verwendet.
- Texturen benutzerdefinierter Rüstungen werden auf Bedrock-Spielern dargestellt, indem die Vanilla-Rüstungsgeometrie mit der Java-Textur als sichtbarer Schicht kombiniert wird.
- Inventarsymbole für 3D-Items werden softwareseitig aus dem Java-Modell über die
display.gui-Transformation gerendert. - Das Bedrock-Paket wird live pro Bedrock-Session über Geysers API ausgeliefert, sodass Textur- und Modellanpassungen den nächsten beitretenden Bedrock-Spieler ohne Serverneustart erreichen. Custom-Item-Mappings erfordern weiterhin einen Neustart, da Geyser sie beim Boot registriert.
- Zwölf benutzerseitig einstellbare Stellschrauben für Anzeige-Offsets gehaltener Items (sechs Ego-, sechs Drittperson) in
bedrock_display_offsets.yml.
Aktuelle Integrationen
ResourcePackManager liefert vorgefertigte Integrationseinträge für folgende Plugins:
- BackpackPlus
- BetterHUD
- BetterStructures
- CannonRTP
- EliteMobs
- EternalTD
- FreeMinecraftModels
- InfiniteVehicles
- ItemsAdder
- MegaBlockSurvivors
- MMOInventory
- ModelEngine
- Nexo
- Nova
- Oraxen
- RealisticSurvival
- ResurrectionChest
- ValhallaMMO
- vane-core
Jede Integration wird nur aktiv, wenn das Plugin installiert ist und der konfigurierte lokale Pfad oder die Remote-URL nutzbar ist. Das Plugin erkennt außerdem beim Start Geyser (Geyser-Spigot auf einem Backend, Geyser-Velocity / Geyser-BungeeCord auf einem Proxy) und verdrahtet die Bedrock-Paketauslieferung mit der jeweils gefundenen Variante.
Wie es weitergeht
- Einrichtung — Betreiber-Workflow für einen eigenständigen Server
- Proxy-Netzwerke — Schritt-für-Schritt-Einrichtung für BungeeCord / Waterfall / Velocity
- Selbst-Hosting — eingebauter HTTP-Server, Port-Auflösung, Erkennung des externen Hosts
- Bedrock-/Geyser-Konvertierung — was konvertiert wird, Stellschrauben
- Geyser-Erweiterung & benutzerdefinierte Entities — wie die gebündelte Erweiterung installiert wird, Geyser-Versionsanforderungen
- FAQ — häufige Fragen
- Fehlerbehebung — was zu prüfen ist, wenn etwas nicht funktioniert
- API — Pakete aus deinem eigenen Plugin registrieren