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.
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.
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.
- Lege deine benutzerdefinierte Modell-Blockbench-Datei (
.bbmodel) in das Verzeichnis(yourServer)/plugins/ModelEngine/blueprints. - 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!
- Gehe zum Verzeichnis
(yourServer)/plugins/ModelEngine/resource packund erstelle mit diesen Daten ein Ressourcenpaket oder füge den darin enthaltenen Ordnerassetszu denassetsdeines Ressourcenpakets hinzu- Lege bei einem neuen Paket
assetsund eine gültigepack.mcmetadirekt in die ZIP-Wurzel. Verwende Metadaten passend zur Client-Version, nicht die alten Formatnummern archivierter Beispiele. Weitere Infos. - Wenn du bereits ein Ressourcenpaket hast, stelle sicher, dass du nicht versehentlich vorhandene Modelle überschreibst. Weitere Infos.
- Lege bei einem neuen Paket
- 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.
- (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.* - 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 mitsha1sum pack.zip. Kopiere nur den Hash mit 40 Zeichen und aktualisiere ihn bei jeder Änderung der ZIP-Datei. - (Optional) Um Spieler zur Verwendung von Ressourcenpaketen zu zwingen, verwende die Option
require-resource-pack=truein der server.properties.*
- (Optional) Damit Spieler beim Anmelden ein Ressourcenpaket herunterladen können, musst du die Datei irgendwo online hosten und das Feld
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_meleenicht definiert ist, wird aufattackzurückgegriffen - Wenn
attack_rangednicht definiert ist, wird aufattackzurückgegriffen - FMM prüft vor dem Abspielen, ob
attackexistiert; 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
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
Power-Namen werden nicht automatisch den Animationsnamen eines Modells zugeordnet.
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/modelsbeziehungsweise in den alten OrdnerModels, falls vorhanden..bbmodel-Dateien werden dabei in.fmmodelumgewandelt. 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.
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:
-
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
customModelmuss der registrierten Modell-ID entsprechen, normalerweise dem Dateinamen ohne Erweiterung
-
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
-
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
-
Boss oder NPC ohne sichtbaren Namen (FMM):
- Prüfe zuerst
name, die Boss-EinstellungalwaysShowNameund 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.
- Prüfe zuerst