Zum Hauptinhalt springen

FreeMinecraftModels FAQ

Wenn du eine Frage hast, die hier nicht aufgeführt ist, wirf einen Blick auf die Seitenleiste, um zu sehen, ob es eine eigene Seite dafür im Wiki gibt!

Erste Schritte

Wie installiere und verwende ich FreeMinecraftModels?​

Info

Installation:

  1. Lade FreeMinecraftModels.jar herunter und lege es in deinen Plugins-Ordner
  2. Starte deinen Server neu, um Plugin-Ordner zu erzeugen
  3. Führe /fmm setup für das Ersteinrichtungs-/Inhaltsverwaltungsmenü aus
  4. Wenn du offizielle Inhaltspakete nutzt, verknüpfe Nightbreak mit /nightbreaklogin <token>
  5. Verwende /fmm setup oder /fmm downloadall für offizielle Nightbreak-verwaltete Inhalte
  6. Lege einzelne Modelle mit der kleingeschriebenen Endung .bbmodel direkt in ~/plugins/FreeMinecraftModels/imports/ und führe /fmm reload aus. Modelle mit Begleitdateien benötigen den aktiven Modellordner oder einen gepackten Import; siehe Hinweise zur Modellerstellung
  7. Finde das generierte Ressourcenpaket in ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip

Verteilung des Ressourcenpakets:

Wähle eine dieser Methoden:

  • Option A (empfohlen): Installiere Resource Pack Manager für automatische Verteilung
  • Option B: Manuell über server.properties oder einen Hosting-Dienst konfigurieren

Modelle spawnen:

  • /fmm spawn static <id> - Spawnt ein temporäres dekoratives Modell
  • /fmm spawn dynamic <id> - Spawnt ein an eine Entität angehängtes Modell
  • /fmm spawn prop <id> - Spawnt ein persistentes Weltmodell

Verwaltung:

  • /fmm - Öffnet das Menü craftbarer Items (erfordert freeminecraftmodels.menu)
  • /fmm setup - Öffnet das Inhaltsverwaltungs-/Ersteinrichtungsmenü
  • /fmm recommendedplugins - Durchsuche Begleit-Plugins, die gut mit FMM zusammenpassen
  • /fmm downloadall - Lädt das neueste Plugin-Update und anschließend zugängliche fehlende oder veraltete Inhalte herunter; die Jar wird nach einem Neustart oder nach /fmm applypluginupdate wirksam
  • /fmm downloadallcontent - Lädt zugängliche fehlende oder veraltete Inhalte ohne die Plugin-Jar herunter
  • /fmm updatecontent - Aktualisiert veraltete offizielle Inhalte
  • /fmm downloadpluginupdate - Lädt nur das neueste Plugin-Jar-Update herunter
  • /fmm applypluginupdate - Wendet ein heruntergeladenes Plugin-Update an, ohne den Server neu zu starten
  • /fmm forcereinstallcontent <package|all> - Lädt ausgewählte Inhalte unabhängig von ihrer Version erneut herunter; verwende bei einem vollständig fehlenden Paket direkt dessen Slug
  • /fmm reload - Lädt das Plugin neu und konvertiert neue Modelle
  • /fmm version - Zeigt die Plugin-Version
  • /fmm stats - Zeigt Statistiken zur Entitätsanzahl
  • /nightbreaklogin <token> / /nightbreaklogout - Gemeinsame MagmaCore-Befehle der obersten Ebene zum Speichern und Löschen des Nightbreak-Konto-Tokens (Berechtigung: nightbreak.login)
  • /freeminecraftmodelschangelog [dismiss|disable] - Ungelesene FMM-Release-Notes im Spiel lesen (nur Admins; wird beim Beitritt auch als anklickbare Aufforderung angeboten)

Spieler-Funktionen:

  • /fmm disguise <modelID> [player] - Verwandelt dein Aussehen (oder das eines Ziel-Spielers) in ein benutzerdefiniertes Modell
  • /fmm undisguise [player] - Entfernt die Verkleidung eines Spielers
  • /fmm disguiselist - Listet alle derzeit verkleideten Spieler auf
  • /fmm itemify <model> <material> - Erstellt ein platzierbares Item, das das angegebene Modell spawnt
  • /fmm craftify <modelID> - Öffnet einen interaktiven Rezept-Builder, um ein Crafting-Rezept für einen Prop zu erstellen
  • /fmm shop - Öffnet den optionalen Vault-gestützten Möbelshop (nur wenn in shop_config.yml aktiviert)
  • /fmm mount <modelID> - Spawnt ein reitbares Pferd, das als benutzerdefiniertes Modell verkleidet ist (experimentell)

Debugging:

  • /fmm hitbox visualize [duration] - Zeigt nahe Modell-Hitboxen für eine Anzahl Ticks mit Partikeln (Standard 100, nichtpositive Werte ergeben 100, Maximum 1200)
  • /fmm location - Meldet registrierte Schutz-/Dungeon-Anbieter und testet sie an deinem aktuellen Standort
  • /fmm debug bedrock [on|off] - Setzt den Zustand des ausführlichen [FMM-BedrockDebug]-Protokolls oder meldet ihn, wenn kein Zustand angegeben ist. Er bleibt nach /fmm reload erhalten und ist bei einem frischen Serverstart ausgeschaltet
  • /fmm debug props [on|off] - Aktiviert Diagnosen gestapelter Props beim Start, beim Laden von Entitäten und vor dem Spawnen oder meldet ihren Zustand. Der Zustand bleibt nach /fmm reload erhalten und wird beim Serverstart zurückgesetzt
  • /fmm packetdebug [ticks] - Erfasst die Modellpakete für die angegebene Anzahl Modelluhr-Ticks (Standard 1, Bereich 1–200; ungültige Eingaben ergeben 1) und meldet Pakete pro Tick, Verteilung pro Betrachter, die größten Empfänger und Pakettypen
  • /fmm filmic [on|off] - Sendet für ReplayMod-Aufnahmen vorübergehend jedes geladene Modell an jeden Spieler, der dessen Chunk geladen hat. Außerhalb von Aufnahmen nicht empfohlen. Siehe Filmic-Modus

Administrativ:

  • /fmm deleteall [radius] - Entfernt alle geladenen modellierten Entitäten und Props (mit Vorsicht verwenden - keine Bestätigungsabfrage). Ein optionaler [radius] (nur für Spieler) beschränkt die Entfernung auf so viele Blöcke

Berechtigungen:

  • freeminecraftmodels.* (Standard: OP) - Wildcard, die freeminecraftmodels.admin, freeminecraftmodels.deleteall, freeminecraftmodels.disguise.self, freeminecraftmodels.disguise.others und freeminecraftmodels.bypassregionprotection gewährt. Ebenfalls die wörtliche Berechtigung, die für /fmm reload, /fmm stats, /fmm spawn, /fmm itemify, /fmm craftify, /fmm mount, /fmm hitbox visualize, /fmm debug, /fmm packetdebug, /fmm filmic, /fmm location, /fmm setup, /fmm initialize, /fmm recommendedplugins, /fmm downloadall, /fmm downloadallcontent, /fmm updatecontent, /fmm downloadpluginupdate, /fmm applypluginupdate und /fmm forcereinstallcontent erforderlich ist
  • freeminecraftmodels.admin (Standard: OP) - /fmm admin (der Admin-Inhaltsbrowser) und /fmm giveitem
  • freeminecraftmodels.disguise.self (Standard: OP) - Lässt einen Spieler nur sich selbst verkleiden/enthüllen
  • Gezielte disguise- und undisguise-Befehle benötigen sowohl freeminecraftmodels.disguise.self als auch freeminecraftmodels.disguise.others. disguiselist benötigt nur .others.
  • freeminecraftmodels.deleteall (Standard: OP) - Erforderlich für /fmm deleteall (Kind der Wildcard)
  • freeminecraftmodels.bypassregionprotection (Standard: OP) - Umgeht FMMs Regionsschutzprüfung. Sie setzt weder sämtliche Ereignisbehandlung anderer Plugins noch die Prüfung auf freien Platz außer Kraft
  • freeminecraftmodels.menu (Standard: true) - Lässt alle Spieler den Browser craftbarer Items über /fmm öffnen
  • freeminecraftmodels.shop (Standard: true) - Lässt alle Spieler /fmm shop öffnen (weiterhin abhängig davon, dass der Shop aktiviert ist)
  • nightbreak.login (Standard: OP) - Wird von MagmaCore registriert, nicht von plugin.yml. Erforderlich für /nightbreaklogin und /nightbreaklogout

Befehle sind standardmäßig nur für OP, sofern nicht anders angegeben. Gewähre diese Berechtigungen bei Bedarf an Nicht-OP-Spieler.

Modell-Funktionen & -Limits

Welche Grenzen gelten für Modellgröße und -rotation?​

Info

Größen-Limits:

  • Die Größe wird über alle Würfel eines Knochens geprüft, nicht über das gesamte Modell
  • Der Konverter multipliziert Würfelkoordinaten mit 0.4 und zentriert jeden Knochen neu. Seine Warnschwelle beträgt 192 in diesen skalierten Koordinaten; das ist keine bestätigte Darstellungsgrenze von 192 Modellpixeln oder 12 Blöcken
  • Die Warnung verwirft oder verkleinert den Knochen nicht. Bei fehlerhafter Geometrie verkleinere die Würfel, rücke sie zusammen oder verteile sie auf mehrere Knochen und prüfe das erzeugte Modell auf dem Zielclient
  • Ganze Modelle können mehrere Knochen umfassen; eine fehlende Größenwarnung beweist nicht, dass die Geometrie des erzeugten Ressourcenpakets gültig ist

Würfel-Rotations-Limits:

  • Minecraft 1.21.6 und neuer: Der Konverter akzeptiert beliebige Reste innerhalb von ±45°, nachdem er den Winkel in eine Basistransformation (0°, ±90°, ±180°, in die Geometrie eingerechnet) zerlegt hat. Verwende Winkel im üblichen Bereich von −180° bis 180° und prüfe das Ergebnis; eine akzeptierte Zerlegung prüft nicht die Darstellung
  • Minecraft 1.21.4 / 1.21.5: Der Rest muss einem von Minecraft nativ akzeptierten Wert entsprechen (−45°, −22,5°, 0°, 22,5°, 45°). Erlaubt sind daher 0°, ±22,5°, ±45°, ±67,5°, ±90°, ±112,5°, ±135°, ±157,5° und ±180°, also jedes Vielfache von 22,5°
  • Auf allen Versionen ist nur eine Rotationsachse möglich. Die Schleife läuft von Z nach X und überschreibt ihre Auswahl; daher gewinnt die erste Achse ungleich null in der Reihenfolge X/Y/Z
  • Beispiel: [22.5, 0, 45] behält die X-Rotation und verliert die Z-Rotation
  • Ein Winkel, den FMM nicht zerlegen kann, wird als Could not decompose rotation angle ... for model name <model> protokolliert und unverändert angewendet, was meist falsch aussieht

Knochen-Rotation:

  • Knochen unterstützen jeden Rotationswinkel
  • Mehrachsen-Rotation wird unterstützt
  • Sichtbare Knochen verursachen Darstellungs- und Paketarbeit pro Betrachter; strukturelle und Metadatenknochen werden nicht alle dargestellt

Performance-Hinweis:

Halte die Anzahl sichtbarer Knochen und Betrachter möglichst niedrig. Java stellt sichtbare Knochen über Paketentitäten dar, während das Bedrock-Backend eine andere Darstellung verwendet. Die Knochenanzahl entspricht nicht der Anzahl gewöhnlicher Bukkit-Entitäten.

Welche Animationen werden unterstützt?​

Info

FreeMinecraftModels bindet fünf Animationsnamen an automatische Laufzeitzustände:

Zustandsanimationen:

  • spawn — läuft einmal, wenn das Modell erzeugt wird, und geht dann in idle über
  • idle — wiederholt sich, bis die zugrunde liegende Entity eine X- oder Z-Geschwindigkeit ungleich null hat
  • walk — wiederholt sich bei horizontaler Bewegung; kehrt am Boden mit X- und Z-Geschwindigkeit null zu idle zurück
  • attack — läuft einmal und kehrt dann zu idle zurück
  • death — läuft einmal beim Entfernen über removeWithDeathAnimation()

Jeder andere Animationsname im Modell ist eine benutzerdefinierte Animation: Sie startet nie von selbst, kann aber über die API oder aus Lua namentlich abgespielt werden.

Zu jump

JUMP existiert im Enum AnimationStateType, und der Walk-Zustand fordert ihn an, wenn die Entität den Boden verlässt, aber im Animationsmanager wird kein Jump-Zustand registriert, sodass dieser automatische Übergang derzeit nichts bewirkt. Eine Animation, die buchstäblich jump heißt, funktioniert trotzdem, wenn du sie selbst auslöst — sie läuft dann einfach wie jeder andere Name über den Pfad benutzerdefinierter Animationen.

So funktioniert es:

  • Erstelle Animationen in BlockBench mit den obigen Kleinbuchstaben-Namen, damit FMM sie automatisch an den passenden Zustand bindet
  • Das Plugin liest Animations-Keyframes beim Import aus .bbmodel-Dateien und backt sie in Frames pro Tick
  • Zustandsanimationen werden automatisch basierend auf dem Entitätszustand ausgelöst
  • Entwickler können jede Animation programmatisch über playAnimation(animationName, blend, loop) auf einer ModeledEntity oder über context.prop:play_animation(name, blend, loop) aus Lua auslösen

Spieler-Verkleidungen sind anders:

Ein Modell mit /fmm disguise wählt fünf Namen — attack, jump, sneak, walk, idle — in dieser Prioritätsreihenfolge, bevor die gemeinsame Wiedergabe-Engine läuft. sneak und jump haben automatische Auslöser für Verkleidungen; gewöhnliche Modelle können sie ausdrücklich als benutzerdefinierte Animationen abspielen. Einmalige Animationen pausieren jede neue Auswahl für 20 Ticks. Ohne idle protokolliert ein Verkleidungsmodell eine Warnung und kann auf dem letzten Frame stehen bleiben, wenn keine andere Aktion aktiv ist. Siehe Spieler-Verkleidungen.

Siehe Animationen für Loop-Modi, Interpolationstypen, Keyframe-Timing und IK.

Sonderfall:

Evoker-Entitäten erkennen nahegelegene Evoker-Fangzähne, um Angriffsanimationen automatisch auszulösen.

Was sind virtuelle Knochen und wie funktionieren sie?​

Info

Virtuelle Knochen sind besondere Knochen mit reservierten Namen, die deinen Modellen Funktionalität hinzufügen:

Hitbox-Knochen:

  • Name: hitbox (exakter Name, unabhängig von Groß-/Kleinschreibung)
  • Erstellt Interaktionszonen und Kollisionsboxen
  • Sein Würfel definiert Breite, Tiefe und Höhe; X und Z müssen nicht übereinstimmen. Die Hitbox eines verkleideten Spielers ändert sich dadurch nicht
  • Muss ein Knochen auf oberster Ebene im Outliner sein — ein hitbox-Knochen, der in einer anderen Gruppe verschachtelt ist, wird als gewöhnlicher Knochen behandelt
  • Sollte genau einen Würfel enthalten. Weitere Würfel protokollieren has more than one value defining a hitbox! Only the first cube will be used; eine leere Gruppe protokolliert has a hitbox bone but no hitbox cube! und lässt die Abmessungen bei null. Position und Rotation des Würfels verschieben die Hitbox nicht
  • Wird nie animiert, nie gerendert und ist vom Bedrock-Geometrieexport ausgeschlossen

Namensschild-Knochen:

  • Präfix: tag_
  • Zeigt Text über Modellen an
  • Wird zur Entitätsbenennung verwendet
  • Optionaler selbst erstellter Anker. Ohne ihn erscheint das Namensschild an einer Ersatzposition über der Hitbox. Siehe Warum hat mein Modell keinen Namen?
  • Der Knochen benötigt keine Cubes; er ist nur ein Positionsanker für das Text-Display, üblicherweise über dem Kopf platziert

Kopfrotations-Knochen:

  • Präfix: h_
  • Rotiert basierend auf der Kopfposition des Spielers/der Entität
  • Verfolgt Kopfbewegungen automatisch

Versteckte / strukturelle Knochen:

  • Präfix: b_
  • Werden vom Java-Knochenrenderer ausgeblendet; der Bedrock-Geometrieexporter filtert b_-Knochen nicht
  • Verwende sie für strukturelle, organisatorische oder rein Metadaten-Knochen, die trotzdem Teil der Skeletthierarchie sein sollen, ohne Geometrie zu erzeugen

Montagepunkt-Knochen:

  • Präfix: m_
  • Jeder m_-Knochen wird zu einer reitbaren Sitzposition am Modell, verwaltet von MountPointManager
  • Der Sitz folgt dem Knochen durch Animationen hindurch
  • Mehrere m_-Knochen erzeugen mehrere Sitze
  • Vom Bedrock-Geometrieexport ausgeschlossen
  • Siehe Was sind Mount-Point-Knochen? weiter unten

Verwendung:

Erstelle in BlockBench einen Knochen mit einem dieser besonderen Namen, und das Plugin wendet automatisch die entsprechende Funktionalität an.

Fehlerbehebungs-FAQ

Statt benutzerdefinierter Modelle sehe ich nur Pferderüstung.​

Info

Pferderüstung statt eines Modells bedeutet, dass das erwartete benutzerdefinierte Aussehen nicht angewendet wird. Prüfe, ob FMM das Modell erzeugt hat, das aktuelle Paket es enthält und der Client dieses Paket heruntergeladen und akzeptiert hat. Ein Konflikt beim Zusammenführen ist eine mögliche Ursache unter mehreren.

MagmaGuy hat ein Plugin namens Resource Pack Manager (RSPM) entwickelt, das Ressourcenpakete automatisch für dich zusammenführen kann. Du kannst es bei Spigot hier herunterladen.

RSPM kann das erzeugte Paket zusammenführen, hosten und verteilen. Folge seiner Einrichtungsanleitung, prüfe aktivierte Paketquellen und die erreichbare Hosting-Adresse, verbinde dann einen Client neu und bestätige die Modelldarstellung.

Warum sehe ich mein Modell nicht, nachdem ich die .bbmodel-Datei hinzugefügt habe?​

Info

Wenn dein Modell nicht erscheint, prüfe diese häufigen Probleme:

1. Reload vergessen

Führe nach dem Ablegen von .bbmodel-Dateien im Imports-Ordner /fmm reload aus. Prüfe die Konsole: Bei abgelehnter Kandidatenvalidierung bleibt die aktuelle Laufzeit erhalten. Der Befehl allein beweist daher nicht, dass die neuen Inhalte übernommen wurden.

2. Ressourcenpaket nicht angewendet

Spieler müssen das FMM-Ressourcenpaket aktiv haben, um Modelle zu sehen.

  • Prüfe ~/plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip auf das generierte Paket
  • Installiere den Resource Pack Manager für automatische Verteilung
  • ODER verteile manuell über server.properties oder einen Hosting-Dienst

3. Falscher Dateispeicherort

Einzelne .bbmodel-Importe gehören direkt nach ~/plugins/FreeMinecraftModels/imports/. Dieser Weg behält die Quelldatei und kann sie bei späteren Reloads erneut konvertieren. Er importiert keine losen begleitenden YAML-Dateien und durchsucht keine beliebigen Unterordner. Modelle mit Begleitdateien können stattdessen in models/ liegen oder über einen korrekt gepackten Import eintreffen.

Wenn du stattdessen offizielle Inhaltspakete verwendest, nutze /fmm setup oder /fmm downloadall, anstatt Dateien manuell abzulegen.

4. Modell hat Fehler

Prüfe die Konsolen-Logs auf Fehlermeldungen während /fmm reload. Häufige Probleme sind nicht unterstützte Rotationen, übergroße Modelle oder Texturprobleme.

5. Problem beim Zusammenführen des Ressourcenpakets

Wenn der Client ein Paket hat, aber weiterhin das Basismaterial zeigt, prüfe die erzeugte Definition, Texturpfade, die zusammengeführte Ausgabe und die Paketversion des Clients. Resource Pack Manager kann Zusammenführung und Verteilung verwalten; seine Installation allein beweist deren Erfolg nicht.

6. Modell-ID-Kollision

Halte in der Konsole nach [FMM Models] Rejected normalized model ID collision Ausschau. Zwei oder mehr deiner Modelldateien normalisieren zur selben ID und unterscheiden sich im Inhalt, sodass alle von ihnen abgelehnt wurden. Siehe Warum wurde mein Modell wegen einer ID-Kollision abgelehnt? unten.

Warum wurde mein Modell wegen einer ID-Kollision abgelehnt?​

Info

FreeMinecraftModels normalisiert jeden Modell-Dateinamen, bevor er als Laufzeit-Modell-ID und Ressourcenpaket-Dateiname verwendet wird: Der Name wird kleingeschrieben, dann wird jedes Zeichen außerhalb von a-z, 0-9, ., _ und - durch einen Unterstrich ersetzt.

Das bedeutet, dass diese alle auf dieselbe ID my_table zusammenfallen:

My Table.bbmodel
my table.bbmodel
my_table.bbmodel
MY_TABLE.bbmodel

Bevor die Konvertierung startet, durchsucht FMM den Modellbaum nach diesen Kollisionen. Sind alle kollidierenden Dateien Byte für Byte identisch, etwa weil zwei Inhaltspakete dasselbe Modell mitliefern, lädt FMM eine Kopie und überspringt den Rest ohne Warnung. Andernfalls wird jede kollidierende Datei abgelehnt — nicht nur die überzähligen —, sodass du nie ein unvorhersehbares „wer zuletzt geladen wurde, gewinnt"-Ergebnis erhältst. Die Konsole gibt aus:

[FMM Models] Rejected normalized model ID collision '<id>'. These files normalize to the same ID: <paths>. Rename the files so every normalized model ID is unique; no colliding model was loaded.

Die Lösung: Benenne die Dateien so um, dass sich ihre normalisierten IDs unterscheiden, und führe dann /fmm reload aus. Die Warnung listet die genauen absoluten Pfade auf.

So vermeidest du es: Verwende im gesamten Modellbaum eindeutige kleingeschriebene Dateinamen mit Unterstrichen (stone_table.bbmodel). Unterschiedliche Ordner machen wiederholte Basisnamen nicht eindeutig, und ein anderer Dateiname kann weiterhin zur gleichen ID normalisieren.

Abgelehnte Modelle werden überall übersprungen — keine Java-Paket-Ausgabe und auch kein Bedrock-Custom-Entity-Bundle.

Warum hat mein Modell keinen Namen?​

Die aktuelle Laufzeit benötigt keinen tag_-Knochen mehr, um Namen anzuzeigen. Sie verwendet den alphabetisch ersten Tag-Knochen, falls vorhanden, andernfalls eine Position über der Hitbox des Modells.

Prüfe, ob das zuständige Plugin einen nicht leeren Anzeigenamen setzt und das Namensschild nicht ausgeblendet hat. Bei einem falsch platzierten Namen prüfe die Hitbox oder füge in Blockbench einen würfellosen Anker tag_name hinzu. Mehrere Tag-Knochen erzeugen keine mehrfachen Namen. Siehe Namensschilder erstellen.

ViaVersion kann dazu führen, dass Ressourcenpakete nicht korrekt angezeigt werden.​

Info

Das aktuelle FreeMinecraftModels benötigt einen Server mit Minecraft 1.21.4 oder neuer. Neuere Clients über einen Protokollübersetzer zuzulassen macht einen älteren Server nicht zu einer unterstützten FMM-Installation.

Reproduziere Paketprobleme zuerst mit einem Client, dessen Version der unterstützten Serverversion entspricht. Bestätige, dass der Client das aktuelle Paket heruntergeladen hat und dessen Item-Modellformat darstellen kann. Vergleiche erst dann den Weg über die Protokollübersetzung. Halte Server-, Client- und Protokoll-Plugin-Versionen fest, statt jedes fehlende Modell auf ViaVersion zurückzuführen.

Warum verursachen meine Modelle Lag oder Performance-Probleme?​

Info

Modelle mit vielen sichtbaren Knochen können zusätzliche Transformationen, Pakete und Darstellungsarbeit auf dem Client verursachen. Auch die Betrachteranzahl zählt.

Optimierungstipps:

  • Minimiere die Knochenanzahl in deinen Modellen
  • Begrenze die Anzahl gespawnter Modelle
  • Verwende statische Modelle, wenn keine lebende zugrunde liegende Entität benötigt wird; statische Modelle können weiterhin animiert sein
  • Vermeide es, viele Modelle mit hoher Knochenanzahl nah beieinander zu spawnen

Technische Erklärung:

Java verwendet Paketentitäten pro Knochen, wobei ausgeblendete und reine Metadatenpfade ausgenommen sind. Das Bedrock-Backend kann ein ganzes Modell als benutzerdefinierte Entität darstellen. Ein Modell mit 50 Knochen erzeugt nicht zwingend 50 gewöhnliche Serverentitäten und sendet nicht zwingend 50 sichtbare Entitäten an jeden Client.

Best Practices:

  • Entwirf Modelle mit weniger Knochen
  • Teste die Performance mit realistischen Spawn-Anzahlen
  • Überwache die Server-TPS, wenn du neue Modelle hinzufügst

So misst du es:

Führe /fmm packetdebug 20 im betroffenen Bereich aus. Der Befehl meldet Paketzahlen und Verteilung pro Betrachter für die nächsten 20 Modelluhr-Ticks, einschließlich der größten Empfänger und Pakettypen. Diese Zahlen helfen bei der Verkehrsanalyse; sie sind weder ein CPU-Profil noch ein Nachweis, dass Clients die Pakete dargestellt haben.

Eingebaute Paketoptimierungen:

Drei config.yml-Schlüssel steuern die paketseitigen Optimierungen. Alle stehen standardmäßig auf dem optimierten Verhalten — die alternativen Einstellungen existieren zum Debuggen, nicht als Tuning-Empfehlung:

  • skipUnchangedBoneUpdates (Standard true) — überspringt unveränderte Transformationsupdates, sofern ein Knochen nicht ausdrücklich als geändert markiert wurde, etwa für eine Tönung. Es entfernt nicht jede Modellverarbeitung oder jeden Betrachterverkehr
  • useDeltaMetadataPackets (Standard true) — das Metadatenpaket pro Tick trägt nur die geänderte Transformation, statt den gesamten Item-Display-Blob neu zu serialisieren
  • maxModelsForProximityOverride (Standard 25) — Modelle innerhalb von 10 Blöcken werden normalerweise immer angezeigt, wobei der Sichtlinien-Raytrace übersprungen wird, um Aufpoppen zu vermeiden. Sobald eine Welt so viele geladene Modelle enthält, wird diese Überschreibung in dieser Welt abgeschaltet, sodass die Verdeckungsaussortierung auch aus der Nähe läuft. Das ist der Schlüssel, den man sich bei mehrstöckigen NPC-Hubs ansehen sollte, wo Spieler zu Betrachtern von Modellen auf anderen Etagen gemacht wurden

Die vollständigen Beschreibungen findest du unter Konfiguration.

Erweiterte Funktionen

Brauche ich den Resource Pack Manager (RSPM)?​

Info

Der Resource Pack Manager (RSPM) ist optional, aber sehr empfehlenswert.

Was RSPM tut:

  • Führt automatisch Ressourcenpakete aus mehreren Plugins zusammen
  • Hostet Ressourcenpakete (kein externes Hosting nötig)
  • Verteilt Pakete beim Login automatisch an Spieler
  • Verringert die manuelle Paketverwaltung; Quellenauswahl, Hosting und Annahme durch Clients müssen weiterhin geprüft werden

Ohne RSPM:

Du musst manuell:

  • Das FMM-Ressourcenpaket mit allen vorhandenen Server-Ressourcenpaketen zusammenführen
  • Das zusammengeführte Paket unter einer erreichbaren Download-URL hosten
  • server.properties oder einen anderen Paketversender so konfigurieren, dass diese URL an Spieler gesendet wird; server.properties selbst hostet keine Dateien
  • Das Paket jedes Mal aktualisieren, wenn du neue Modelle hinzufügst

Warum RSPM verwenden:

RSPM bietet einen gemeinsamen Ablauf zum Zusammenführen, Hosten und Senden von Paketen. Prüfe bei fehlenden Modellen seine Ausgabe und einen echten Client.

RSPM herunterladen: https://www.spigotmc.org/resources/resource-pack-manager.118574/

Entwickelt von MagmaGuy, demselben Autor wie FreeMinecraftModels.

Kann ich FreeMinecraftModels in meinem eigenen Plugin verwenden?​

Info

Ja, FreeMinecraftModels bietet eine API für Entwickler.

Maven/Gradle-Integration:

Repository: https://repo.magmaguy.com/releases

Artifact:

  • GroupId: com.magmaguy
  • ArtifactId: FreeMinecraftModels
  • Scope: provided (muss auf dem Server installiert sein, nicht shaden)

Primäre API-Klassen:

  • ModeledEntity (Basisklasse)
  • StaticEntity
  • DynamicEntity
  • PropEntity

Beispiel-Verwendung:

StaticEntity staticEntity = StaticEntity.create(id, location);
if (staticEntity == null) {
Bukkit.getLogger().warning("Failed to create model");
return;
}
staticEntity.setRightClickCallback(...);
staticEntity.remove();

Wichtig:

Shade FreeMinecraftModels nicht in dein Plugin. Es muss separat auf dem Server installiert werden.

Für detaillierte API-Dokumentation siehe die offizielle README.

Wie verkleide ich einen Spieler als benutzerdefiniertes Modell?​

Info

Der Befehl /fmm disguise verwandelt das Aussehen eines Spielers in ein beliebiges benutzerdefiniertes Modell.

Befehle:

/fmm disguise <modelID> [player]
/fmm undisguise [player]
/fmm disguiselist

So funktioniert es:

  • Macht den Spieler für andere Spieler unsichtbar
  • Überlagert das benutzerdefinierte Modell auf der Position des Spielers
  • Das Modell folgt den Bewegungen des Spielers
  • Perfekt für Rollenspiel-Server oder besondere Events

Beispiele:

/fmm disguise dragon              # Disguise yourself
/fmm disguise dragon Steve # Disguise another player
/fmm undisguise Steve # Undisguise Steve
/fmm disguiselist # List everyone currently disguised

Anforderungen:

  • Auf sich selbst zielend: freeminecraftmodels.disguise.self (Standard: OP)
  • Gezielte disguise- und undisguise-Befehle benötigen sowohl freeminecraftmodels.disguise.self als auch freeminecraftmodels.disguise.others. disguiselist benötigt nur .others.
  • Die Konsole kann die gezielte Form ausführen, solange ein Spielername angegeben wird
  • modelID muss exakt einem geladenen Modell entsprechen
  • Drittanbieter-Plugins können Verkleidungen über die öffentliche DisguiseAPI steuern

Hinweise:

  • Die Spieler-Hitbox bleibt unverändert (gleiche Kollisionsbox)
  • Andere Spieler sehen das benutzerdefinierte Modell anstelle deines Spieler-Skins
  • Erneutes Verkleiden, während du bereits verkleidet bist, ersetzt die vorherige Verkleidung sauber
  • FMM stellt Unsichtbarkeit nach relevanten Effektänderungen nur wieder her, wenn diese Verkleidung den Effekt ursprünglich hinzugefügt hat. Ein bereits vorhandener Effekt wird nicht wiederhergestellt. Siehe Spieler-Verkleidungen

Wie erstelle ich platzierbare Modell-Items?​

Info

Der Befehl /fmm itemify erstellt besondere Items, mit denen Spieler Modelle in der Welt platzieren können.

Befehl:

/fmm itemify <model> <material>

Parameter:

  • model - Eine beliebige gültige Modell-ID aus deinem Modell-Ordner
  • material - Ein beliebiges Minecraft-Material (STICK, PAPER, DIAMOND usw.)

Beispiel:

/fmm itemify lamp_post STICK

Was es erstellt:

  • Ein benutzerdefiniertes Item mit einem formatierten, golden verzierten Anzeigenamen (z. B. „✦ Wolf ✦")
  • Beschreibende Lore, die das Item erklärt
  • Das Item wird direkt deinem Inventar hinzugefügt; lasse Platz frei, da überschüssige Items nicht fallengelassen werden
  • Platziere den Prop per Rechtsklick aus der Haupthand unter Beachtung der FMM-Platzierungsprüfungen. Außerhalb des Kreativmodus wird das Item nach erfolgreichem Spawnen verbraucht

Anwendungsfälle:

  • Spielern Items geben, um ihre Bauwerke zu dekorieren
  • Benutzerdefinierte „Spawn-Eier" für Möbel erstellen
  • Platzierungsitems verteilen und dabei die konfigurierten Schutzprüfungen beibehalten
  • Setup-Kits für kreatives Bauen

Anforderungen:

  • Berechtigung: freeminecraftmodels.*
  • Spieler muss im Spiel sein (nicht Konsole)

Wie debugge ich Modell-Hitboxen?​

Info

Der Befehl /fmm hitbox visualize visualisiert Modell-Hitboxen mit Partikeln.

Befehl:

/fmm hitbox visualize [duration]

Parameter:

  • duration ist optional und beträgt standardmäßig 100 Ticks. Nichtpositive Werte ergeben 100 Ticks; das Maximum ist 1200
  • 20 Ticks = 1 Sekunde

Beispiele:

/fmm hitbox visualize 100      # Show for 5 seconds
/fmm hitbox visualize 200 # Show for 10 seconds

So funktioniert es:

  • Sucht nach Modellen innerhalb von 10 Blöcken um dich herum
  • Zeigt die Grenzen der ausgerichteten Bounding-Box (OBB) mit Partikeln an
  • Zeigt sowohl das Modell als auch seine Kollisionsgrenzen
  • Nützlich zum Überprüfen von Hitbox-Größe und -Rotation

Die Projektilerkennung prüft das Segment zwischen erfassten Positionen, um Durchquerungen dünner OBBs zu erkennen; ohne vorherige Position prüft sie stattdessen Überlappungen. Nähere Treffer werden zuerst verarbeitet. Ein normales Projektil hat einen Treffer auf ein modelliertes Ziel; ein Durchschusspfeil hat pierce level + 1 Treffer auf unterschiedliche modellierte Ziele. Das Abbrechen eines modellierten Treffers verhindert dessen Callback oder Standardschaden, verbraucht aber weiterhin das Zielbudget. Siehe die Projektil-API.

Wann verwenden:

  • Testen, ob Hitboxen mit den visuellen Modellen übereinstimmen
  • Debuggen von Interaktionsproblemen
  • Überprüfen von Hitbox-Rotationen
  • Fehlerbehebung bei der Klick-Erkennung

Anforderungen:

  • Berechtigung: freeminecraftmodels.*

Hinweis: Hitboxen in FMM rotieren mit dem Modell, anders als bei standardmäßigen Minecraft-AABBs.

Kann ich reitbare benutzerdefinierte Modelle erstellen?​

Info

Ja, verwende den Befehl /fmm mount, um reitbare benutzerdefinierte Modelle zu erstellen (experimentelle Funktion).

Befehl:

/fmm mount <modelID>

Was es tut:

  • Spawnt ein Pferd an deinem Standort
  • Verkleidet das Pferd als dein benutzerdefiniertes Modell
  • Zähmt das Pferd automatisch und fügt einen Sattel hinzu
  • Versucht einen Tick später, dich aufsitzen zu lassen: ohne Sitzpunkte direkt auf dem Pferd, mit einem Sitzpunkt über einen Marker-Rüstungsständer

Beispiel:

/fmm mount dragon

Anforderungen:

  • Berechtigung: freeminecraftmodels.*
  • Gültige Modell-ID

Wichtige Hinweise:

  • Diese Funktion ist als experimentell gekennzeichnet
  • Verwendet ein gezähmtes erwachsenes Pferd mit Bewegungsgeschwindigkeitsbasis 0.3 und Sprungkraftbasis 0.7
  • Die Hitbox des Pferdes bleibt unverändert
  • Funktioniert am besten mit Modellen, die für Reittiere entworfen wurden

Anwendungsfälle:

  • Benutzerdefinierte Reittiere für Rollenspiel-Server
  • Besonderes Transportmittel für VIP-Spieler
  • Einzigartige reitbare Kreaturen für Abenteuer-Maps

Was sind Mount-Point-Knochen?​

Info

Mount-Points lassen dich reitbare Positionen direkt auf deinem Modell mithilfe speziell benannter Knochen definieren.

So erstellst du Mount-Points:

Benenne in Blockbench einen Knochen mit dem groß-/kleinschreibungssensitiven Präfix m_ (z. B. m_seat, m_back). Jeder erstellt eine für einen Spieler verwaltete Sitzposition.

So funktioniert es:

  • Die Mount-Position folgt dem Standort des Knochens, einschließlich Animationen
  • Mehrere m_-Knochen erzeugen mehrere Sitze
  • Der Sitzmanager nimmt Spieler über die API oder Lua-Skripte an und wählt den ersten freien Sitz. Sitze verwenden temporäre Interaction-Entitäten mit Größe null und werden aktualisiert, solange sie besetzt sind

Testen:

Für einen Prop-Sitz spawne oder platziere den Prop und klicke ihn rechts an, oder rufe in Lua context.prop:mount(player) auf. /fmm mount <modelID> erzeugt ein experimentelles Reittier auf Pferdebasis und verwendet einen anderen Weg zum Aufsitzen.

Anwendungsfälle:

  • Mehrsitzige Fahrzeuge (Boote, Kutschen)
  • Reitbare Kreaturen mit bestimmten Sitzpositionen
  • Schulter-getragene Haustiere oder Begleiter

Benutzerdefinierte Items

Was sind benutzerdefinierte Items?​

Benutzerdefinierte Items sind gehaltene Items, die durch ein material:-Feld in der YAML-Datei neben dem Modell definiert werden. Ihre Identität steht in fmm_item_id; Prop-Platzierungs-Items aus /fmm itemify verwenden stattdessen model_id.

Erstelle ein Modell und eine gleichnamige YAML-Datei, setze material und füge optional name, lore sowie enchantments mit Namespace hinzu:

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
enchantments:
- "minecraft:fire_aspect,2"

Verwende /fmm giveitem <id> oder /fmm admin mit freeminecraftmodels.admin.

Führen benutzerdefinierte Items weiterhin Lua-Skripte aus?​

Nein. Die frühere Laufzeit für ausgerüstete Items mit ihren 22 Hooks wurde eingestellt. Eine Definition für ein gehaltenes Item mit nicht leerer scripts:-Liste wird übersprungen, ebenso ein alter Verzauberungseintrag ohne Namespace wie FIRE_ASPECT,2. Die Datei wird weder konvertiert noch umgeschrieben. Prop-Lua-Skripte bleiben unverändert.

Verwende Verzauberungen eines Providers für Item-Effekte und Definitionen magischer Waffen für Zauberstäbe und Stäbe.

Menüs

Welche Menüs bietet FMM?​

Info

FreeMinecraftModels bietet diese zwei Browsermenüs sowie separate Menüs für Einrichtung, Rezepterstellung und den optionalen Shop.

Spieler-Menü — /fmm

  • Berechtigung: freeminecraftmodels.menu (Standard: true, alle Spieler können es nutzen)
  • Zeigt nur Einträge mit erfolgreich registrierten Crafting-Rezepten; registerCraftingRecipes: false entfernt sie aus diesem Browser
  • Klicke auf ein Item, um eine Detailansicht mit einer räumlichen 3x3-Crafting-Gitter-Vorschau zu sehen
  • Zeigt Spielern Rezepte für papierbasierte Prop-Platzierungsitems; diese sind von selbst definierten gehaltenen Items getrennt

Admin-Menü — /fmm admin

  • Berechtigung: freeminecraftmodels.admin (Standard: OP)
  • Vollständiger Inhaltsbrowser, der Folgendes zeigt:
    • Aktivierte Pakete mit geladenen Inhalten
    • Nicht verpackte Modell-Ordner
    • Modelle auf Stammebene
    • Erfolgreich registrierte benutzerdefinierte Items
  • Paket- und Ordnereinträge öffnen Listen; einzelne Einträge geben Items. Verwende /fmm setup für Paketaktivierung und Downloads

Display-Modelle

Was sind Display-Modelle?​

Info

Display-Modelle lassen benutzerdefinierte Items ein 3D-Modell im Inventar und in der Hand des Spielers anzeigen, anstelle des standardmäßigen Material-Aussehens.

So richtest du ein Display-Modell ein:

  1. Verwende in Blockbench File > Export > Java Block/Item, um eine .json-Modelldatei zu exportieren
  2. Lege die .json-Datei neben die .bbmodel-Datei mit demselben Basisnamen (z. B. magic_sword.json neben magic_sword.bbmodel)
  3. Führe /fmm reload aus

So funktioniert es:

  • Ein registriertes Display-Modell kann das Aussehen in Hand und Inventar ersetzen, sobald der Client das erzeugte Paket akzeptiert
  • Texturreferenzen ohne Namespace verwenden den passenden numerischen Schlüssel der Texturtabelle. Fehlt er, wird eine verfügbare extrahierte Textur verwendet, nicht garantiert Index null. Referenzen mit Namespace bleiben erhalten
  • Wenn keine .json-Datei existiert, fällt das Item auf das einfache Material-Aussehen zurück
  • Das aktuelle Plugin benötigt Minecraft 1.21.4 oder neuer; ältere Rendering-Zweige machen ältere Server nicht zu unterstützten Installationen

Anforderungen:

  • Server, der Minecraft 1.21.4 oder neuer ausführt
  • Ein gültiger Blockbench-„Java Block/Item"-Export (.json) neben der Modelldatei; fehlerhaftes JSON wird nicht registriert. Zustandsgruppen für Bögen und Armbrüste benötigen sämtliche zugehörigen Zustandsmodelle und Display-JSON-Dateien