Zum Hauptinhalt springen

Benutzerdefinierte Modelle

EliteMobs unterstützt benutzerdefinierte Modelle über Model Engine und FreeMineCraftModels.

Vorwort

Aus Sicht von EliteMobs ist das System der benutzerdefinierten Modelle sehr einfach, da Admins lediglich eine Zeile zur Konfigurationsdatei eines NPCs oder Custom Bosses hinzufügen müssen, die festlegt, welches benutzerdefinierte Modell verwendet werden soll. Es ist jedoch notwendig, mit Model Engine und Minecraft die richtigen Schritte zu unternehmen, um dieses System voll funktionsfähig zu machen, und diese sind nicht ganz so leicht zugänglich.

Diese Anleitung geht ins Detail, soweit es die Anbindung an Model Engine und Minecraft betrifft. Sie erklärt dir nicht, wie du Blockbench verwendest, um Custom Bosses zu erstellen, und geht auch nicht im Detail darauf ein, wie Model Engine funktioniert. Es gibt bereits zahlreiche Anleitungen dazu an anderer Stelle, und wenn du mehr über diese Systeme erfahren möchtest, bist du besser bedient, wenn du direkt deren Dokumentation ansiehst.

FreeMineCraft Models​

Wenn du lernen möchtest, wie du FMM verwenden kannst, um deine Modelle zum Laufen zu bringen, kannst du dir diese Wiki-Seite ansehen, um mehr zu erfahren.

Modell-Namensschilder

Aktuelles FreeMinecraftModels verwendet einen vom Autor angelegten tag_-Knochen wie tag_head, falls vorhanden, sonst eine Position über der Modell-Hitbox. Mit einem Anker legt der Autor die Position fest; zum Anzeigen eines Namens ist er nicht mehr erforderlich. FMM verwaltet das gesamte Namensschild, einschließlich Name und Rolle von EliteMobs-NPCs. Ältere FMM-Versionen können weiterhin einen Anker benötigen.

Bedrock-Unterstützung (Geyser)​

Ob Bedrock-Spieler (die sich über Geyser/Floodgate verbinden) benutzerdefinierte Modelle sehen können, hängt vollständig von deinem Modell-Plugin (ModelEngine oder FreeMinecraftModels) und deiner Ressourcenpaket-Einrichtung ab, nicht von EliteMobs. EliteMobs erkennt zwar Bedrock-Clients, verwendet diese Information jedoch für Dinge wie das Rendern von Menüs und die Positionierung von Namensschildern — es generiert oder liefert kein separates Bedrock-kompatibles Modell. Informationen zur Bedrock-/Geyser-Modellunterstützung findest du in der Dokumentation deines Modell-Plugins.

LibsDisguises-Integration​

EliteMobs unterstützt LibsDisguises als Alternative zu benutzerdefinierten Modellen. Ein verfügbares konfiguriertes Modell hat Vorrang vor einer Verkleidung. Ist kein nutzbares Modell ausgewählt, kann die konfigurierte Verkleidung verwendet werden. Die Integration synchronisiert die Namenssichtbarkeit.

Für LibsDisguises konfigurierst du die Verkleidung des Bosses/NPCs ohne ein customModel-Feld.

Item-Modelle und magische Waffen (FMM)

Verwende fmmItemModel für die Item-Darstellung durch FMM und weaponType: WANDS oder weaponType: STAVES für eine vom Autor definierte magische Waffe. EliteMobs behält Name, Lore, Verzauberungen und Level bei. FMM liefert das Modell und bei magischen Waffen die Angriffsdefinition.

Die ältere scriptedItem-Anbindung bleibt für Item-Identität und Darstellung erhalten. Sie führt keine Lua-Skripte ausgerüsteter Items mehr aus; FMM lehnt Item-Definitionen mit einer nicht leeren scripts-Liste ab. Kombiniere sie nicht mit einer definierten magischen Waffe.

# Example EliteMobs custom item config
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
fmmItemModel: flame_blade

Das referenzierte FMM-Item oder Modell muss existieren. Fehlt ein Darstellungsmodell, kann das Vanilla-Material mit einer Warnung sichtbar bleiben. Ein ausdrücklich gesetzter weaponType, der keiner verfügbaren definierten Waffe entspricht, verhindert die Item-Erstellung. Siehe magische FMM-Waffen und Konfiguration eigener Items.

Mindestanforderungen

EliteMobs, eine kompatible FreeMinecraftModels-Version oder ModelEngine-Integration*, Blockbench** und ein Minecraft-Ressourcenpaket. Die ModelEngine-Integration verwendet die R3-API: EliteMobs wählt sie nur, wenn ModelEngine aktiviert ist und seine Version R3 enthält. Eine neuere Hauptversion ist nicht automatisch kompatibel.

* Dieses Plugin kann weitere Abhängigkeiten haben. Prüfe die Dokumentation auf deren Seite.
** Notwendig zum Erstellen und Bearbeiten von benutzerdefinierten Modellen. Nicht notwendig, wenn du Inhalte lediglich installieren möchtest, ohne sie zu verändern.

Plugin-Priorität

Wenn sowohl ModelEngine als auch FreeMinecraftModels installiert sind, verwendet EliteMobs standardmäßig FreeMinecraftModels. Es ist immer nur ein Plugin für benutzerdefinierte Modelle gleichzeitig aktiv.

Ein benutzerdefiniertes Modell manuell festlegen

Hinweis: Diese Anleitung setzt voraus, dass du bereits ein gültiges benutzerdefiniertes Modell hast. Diese liegen in Blockbench-Dateiformaten (.bbmodel) vor.

EliteMobs kann benutzerdefinierte Modelle für NPCs und Custom Bosses verwenden. Der Vorgang dafür ist für beide gleich und lautet wie folgt:

Schritt 1. Die EliteMobs-Konfiguration einstellen​

Gehe zur Konfigurationsdatei des Custom Bosses oder NPCs, den du ändern möchtest, und füge die folgende Zeile hinzu:

customModel: modelname

Ersetze modelname durch den Namen deines Modells. Der Name ist der Name der benutzerdefinierten Modelldatei, die du verwendest. Zum Beispiel ist die benutzerdefinierte Modelldatei des Test Bosses showcase_boss.bbmodel. Die Konfigurationsoption sollte also lauten

customModel: showcase_boss

Und das war's für EliteMobs! Jetzt wird es etwas kniffliger.

Schritt 2. Die Model-Engine-Daten generieren​

Die folgenden Pfade stammen aus der archivierten ModelEngine-Importanleitung. Verwende die Anleitung für deinen installierten ModelEngine-Build.

  1. Lege deine benutzerdefinierte Modell-Blockbench-Datei (.bbmodel) in das Verzeichnis (yourServer)/plugins/ModelEngine/blueprints.
  2. Führe den Modell-Neuladebefehl deiner ModelEngine-Version aus; die archivierte Anleitung verwendet /meg reload models. Prüfe, ob das Modell im geladenen Register erscheint, und kontrolliere die Konsolenfehler.

Schritt 3. Das Ressourcenpaket verteilen​

Dies ist möglicherweise der kniffligste Teil, wenn du möchtest, dass dein Server die Downloads verwaltet. Versuche zu prüfen, ob das System funktioniert, wenn du das Ressourcenpaket auf deinem Client hast, bevor du dich mit der automatischen Verteilung beschäftigst!

  1. Gehe zum Verzeichnis (yourServer)/plugins/ModelEngine/resource pack und erstelle mit diesen Daten ein Ressourcenpaket oder füge den darin enthaltenen Ordner assets zu den assets deines Ressourcenpakets hinzu
    1. Lege bei einem neuen Paket assets und eine gültige pack.mcmeta direkt in die ZIP-Wurzel. Verwende Metadaten passend zur Client-Version, nicht die alten Formatnummern archivierter Beispiele. Weitere Infos.
    2. Wenn du bereits ein Ressourcenpaket hast, stelle sicher, dass du nicht versehentlich vorhandene Modelle überschreibst. Weitere Infos.
  2. Verteile dein Ressourcenpaket an deine Spieler. Nur Spieler, die das Ressourcenpaket haben, können die benutzerdefinierten Modelle sehen, und für alle anderen wird es sehr seltsam und kaputt aussehen. Wenn du beabsichtigst, diese intensiv zu nutzen, solltest du die Verwendung des Ressourcenpakets vielleicht erzwingen.
    1. (Optional) Damit Spieler beim Anmelden ein Ressourcenpaket herunterladen können, musst du die Datei irgendwo online hosten und das Feld resource-pack= in der server.properties auf diese Adresse verweisen lassen.*
    2. Setze für automatische Downloads resource-pack-sha1= auf den SHA-1-Wert der fertigen ZIP-Datei. Berechne ihn lokal in PowerShell mit (Get-FileHash -LiteralPath "pack.zip" -Algorithm SHA1).Hash.ToLowerInvariant() oder unter Linux mit sha1sum pack.zip. Kopiere nur den Hash mit 40 Zeichen und aktualisiere ihn bei jeder Änderung der ZIP-Datei.
    3. (Optional) Um Spieler zur Verwendung von Ressourcenpaketen zu zwingen, verwende die Option require-resource-pack=true in der server.properties.*

Wenn du die server.properties geändert hast, musst du neu starten!

* Hinweis: Es gibt viele Anleitungen online, die dir helfen können, dies zum Laufen zu bringen, falls diese Anweisungen dir nicht weiterhelfen.

Ressourcenpakete zusammenführen​

Du kannst Pakete manuell zusammenführen oder ResourcePackManager für den Nightbreak-Paketablauf verwenden. Ein externes Werkzeug wie merge.elmakers kann ZIPs kombinieren. Konflikte zwischen Modell-IDs musst du dennoch beheben und das Ergebnis im Zielclient prüfen.

Schritt 4. Das Modell prüfen​

Prüfe das Modell an einem tatsächlichen Boss oder NPC, sobald das Modellregister geladen und das passende Paket im Client aktiv ist. Diese Befehle erfordern einen Spieler als Absender und die jeweilige Berechtigung:

  • Custom Boss: /em spawn boss filename.yml — elitemobs.place.admin, erzeugt ihn an der anvisierten Position.
  • NPC: /em place npc filename.yml — elitemobs.place.npc, speichert eine dauerhafte Platzierung an deiner Position.

/em remove schaltet den Entfernungsmodus um. Schlage das Ziel zum Entfernen und führe den Befehl erneut aus, um den Modus zu verlassen. Bei einem platzierten NPC wird dabei auch die gespeicherte Platzierung entfernt.

Benutzerdefinierte Modelle für EliteMobs erstellen und anpassen

Verwende ein Modell, das der ausgewählte Anbieter unterstützt und erfolgreich geladen hat. Seine Kompatibilitätsgrenzen und unterstützten Modellfunktionen gelten weiterhin.

Wenn es jedoch um Animationen geht, ist die Verwendung bestimmter Namen für die Animationen erforderlich, um zu gewährleisten, dass die Bosse die Animationen verwenden können.

Diese Animationsnamen sind diejenigen, die in Blockbench im Animations-Tab festgelegt werden. Du kannst sie jederzeit umbenennen, was bedeutet, dass du jedes vorhandene Modell nachträglich an EliteMobs anpassen kannst.

Animationen​

Verwende die folgenden Animationsnamen für die automatischen EliteMobs-Hooks.

idle​

idle ist der übliche Name der Ruheanimation. EliteMobs startet ein ModelEngine-Modell in dessen Standard-Ruhezustand. Die weitere Auswahl von Ruhe- und Bewegungsanimationen übernimmt der Modellanbieter.

walk​

walk ist der übliche Name der Bewegungsanimation. EliteMobs startet beim Anbringen des Modells nicht ausdrücklich eine Walk-Animation. Die Auswahl übernimmt ModelEngine/FMM.

attack​

Es gibt drei Arten von Angriffsanimationen:

attack​

attack ist der korrekte generische Animationsname für den Fall, dass ein Boss angreift.

attack_melee​

attack_melee ersetzt attack, wenn ein Custom Boss in einem Bukkit-Schadensereignis zwischen Entitäten der direkte Verursacher ist. Die Animation wird während der Ereignisverarbeitung angefordert und verzögert den Treffer nicht als Ausholanimation. Bereits abgebrochene Ereignisse werden ignoriert; ein späterer Listener kann den Schaden noch abbrechen. Verwende eine kurze Animation und verlasse dich nicht auf sie, um den Schadenszeitpunkt zu steuern.

attack_ranged​

attack_ranged ersetzt attack, wenn das Spawn-Ereignis eines Projektils einen Custom Boss als lebenden Schützen angibt. Die Animation reagiert auf den Projektil-Spawn und hält den Schuss nicht bis zum Animationsende zurück. Projektile ohne diese Schützenzuordnung lösen den automatischen Hook nicht aus.

Animations-Fallback-System​

EliteMobs verwendet ein Fallback-System für Angriffsanimationen:

  • Wenn attack_melee nicht definiert ist, wird auf attack zurückgegriffen
  • Wenn attack_ranged nicht definiert ist, wird auf attack zurückgegriffen
  • FMM prüft vor dem Abspielen, ob attack existiert; der ModelEngine-Adapter übergibt diesen Ersatznamen an seinen Animationshandler

Dies ermöglicht es dir, eine einzelne Angriffsanimation zu erstellen, die für alle Angriffsarten funktioniert, oder spezialisierte Animationen für Nahkampf- gegenüber Fernkampfangriffen zu erstellen.

damaged​

Warnung

EliteMobs registriert keinen automatischen damaged-Animationshook. Eine Schadensfärbung oder andere Trefferanzeige des Anbieters ist etwas anderes als das Abspielen dieser benannten Animation.

death​

Bei EliteMobDeathEvent fordert EliteMobs death auf dem Modell eines Custom Bosses an, sofern diese Animation existiert. Entfernung und Phasenwechsel sind keine Todesereignisse. Wiedergabe und Modellbereinigung hängen weiterhin vom Lebenszyklus des Anbieters ab.

powers​

Warnung

Power-Namen werden nicht automatisch den Animationsnamen eines Modells zugeordnet.

Eine Animation lässt sich bereits aus einer Power abspielen

Eine automatische Namenszuordnung gibt es nicht, aber beide Skriptsysteme können eine Animation ausdrücklich per Namen starten:

  • EliteScript: die Aktion PLAY_ANIMATION, mit dem Animationsnamen als Wert. Sie löst jedes Ziel zu einem Custom Boss auf und spielt die Animation auf dessen Modell.
  • Lua: context.boss:play_model_animation("animation_name").

In beiden Fällen wird die Animation ohne Meldung übersprungen, wenn das Modell diesen Namen nicht kennt oder der Boss kein benutzerdefiniertes Modell besitzt.

Benutzerdefinierte Modelle aus Dungeons importieren

Schritt 1. Normaler Import​

Beim Import eines gezippten Dungeon-Packager-Ordners mit benutzerdefinierten Modellen werden diese zum installierten Modell-Plugin verschoben:

  • FreeMinecraftModels installiert — Modelle kommen nach (yourServer)/plugins/FreeMinecraftModels/models beziehungsweise in den alten Ordner Models, falls vorhanden. .bbmodel-Dateien werden dabei in .fmmodel umgewandelt. EliteMobs löst anschließend ein Modell-Installationsereignis aus, damit FMM sein Register neu aufbaut.
  • Nur ModelEngine installiert — Modelle kommen nach (yourServer)/plugins/ModelEngine/blueprints. Der aktuelle gemeinsame Importer lädt ModelEngine nicht automatisch neu. Erzeuge Modelle und Ressourcenpaket mit dem Befehl deiner Version neu.
Erster Start nach einer DLC-Installation

Nachdem ein Import einen FMM-Modellneuaufbau startet, wartet EliteMobs bis zu 300 Sekunden (fünf Minuten) auf dessen Initialisierungsabschluss. Ein fehlgeschlagenes oder deaktiviertes FMM, eine Zeitüberschreitung oder eine unterbrochene Wartephase stoppt die Initialisierung von EliteMobs, bevor unvollständige Modelle und Items geladen werden. Prüfe die Fehler beider Plugins, behebe das Problem und starte anschließend neu. Dies ist kein erfolgreicher Start, der lediglich einige modellierte Entitäten auslässt.

Schritt 2. Ressourcenpaket​

EliteMobs exportiert das mitgelieferte Paket beim Start nach (yourServer)/plugins/EliteMobs/resource_pack/em_rsp_defaults und speichert .rsp_checksum im übergeordneten Ordner. Stimmen die mitgelieferte und die gespeicherte Prüfsumme überein und existiert em_rsp_defaults, entfällt die Kopie. Ein Versionswechsel erzwingt keinen Export; übereinstimmende Prüfsummen prüfen nicht jede exportierte Datei auf lokale Änderungen oder Löschungen. Der Austausch erfolgt über einen vorbereiteten Ordnerwechsel. Bewahre eigene Paketänderungen außerhalb dieses generierten Ordners auf.

Du musst diese Ressourcenpaket-Dateien mit allen Model-Engine-Ressourcenpaket-Dateien zusammenführen und das kombinierte Ressourcenpaket an deine Spieler verteilen. Nur Spieler, die das Ressourcenpaket haben, können die benutzerdefinierten Modelle sehen.

Fehlerbehebung

Häufige Probleme:

  1. Modell nicht sichtbar:

    • Prüfe, ob das Register des gewählten Anbieters das Modell enthält; verwende dessen passenden Neuladebefehl für die installierte Version
    • Prüfe, ob das Ressourcenpaket auf dem Client installiert ist
    • customModel muss der registrierten Modell-ID entsprechen, normalerweise dem Dateinamen ohne Erweiterung
  2. Animationen werden nicht abgespielt:

    • Stelle sicher, dass die Animationsnamen in Blockbench genau mit den dokumentierten Namen übereinstimmen
    • Prüfe, ob Animationen nicht auf Schleife eingestellt sind, wenn sie einmal abgespielt werden sollen
    • Prüfe einzelne Animationen mit den Befehlen des gewählten Anbieters
  3. Beide Plugins installiert:

    • EliteMobs verwendet FreeMinecraftModels, wenn beide vorhanden sind
    • Es gibt keine Anbieterauswahl pro Modell. Um stattdessen ModelEngine zu verwenden, deaktiviere FreeMinecraftModels und nutze einen R3-Build von ModelEngine
  4. Boss oder NPC ohne sichtbaren Namen (FMM):

    • Prüfe zuerst name, die Boss-Einstellung alwaysShowName und das Laden des Modells.
    • Aktuelles FMM platziert den Namen ohne tag_-Anker über der Hitbox. Prüfe deren Höhe oder ergänze einen Anker, wenn die Position nicht stimmt.
    • NPC-Modelle werden erneut angebracht, wenn FMM den Abschluss des Neuladens meldet. Prüfe Konsolenwarnungen, falls ein Modell nach einem FMM-Neuladen verschwindet.