Aller au contenu principal

Configuration de FreeMinecraftModels

Les paramètres YAML des modèles sont préparés ensemble lors du rechargement du contenu. Après avoir modifié le YAML d'un prop, terminez le rechargement avec succès avant d'en créer un nouveau. Donnez à chaque YAML de modèle un nom de fichier unique dans tous les dossiers de modèles. Lorsque deux fichiers portent le même nom (sans distinction de casse), même dans des sous-dossiers différents, FMM charge celui dont le chemin absolu arrive en premier dans l'ordre de tri et ignore les autres avec un avertissement Duplicate content filename. Une copie ignorée dont toutes les valeurs correspondent au fichier chargé est ignorée sans avertissement.

Cette page décrit les paramètres actuels de config.yml et shop_config.yml qui influencent l'installation, le rendu, les interactions des joueurs et la boutique de mobilier facultative. Les paramètres des familiers dans pets.yml sont décrits sur la page Familiers.

Emplacements des fichiers​

plugins/FreeMinecraftModels/config.yml
plugins/FreeMinecraftModels/shop_config.yml
plugins/FreeMinecraftModels/pets.yml

shop_config.yml est généré au premier démarrage ; la boutique reste désactivée jusqu'à son activation explicite. pets.yml est généré au premier démarrage en mode COSMETIC, où les familiers sauvages n'apparaissent que lors des migrations nocturnes. Les modules Lua exécutés par les familiers se trouvent dans plugins/FreeMinecraftModels/pet_behaviors/ ; voir Modules de comportement des familiers.

Version minimale du serveur

plugin.yml déclare api-version: 1.21.4, donc Minecraft 1.21.4 est la version de serveur minimale prise en charge. La prise en charge des lignes plus anciennes a été abandonnée ; les branches héritées de rendu/sortie existent toujours dans le code mais ne sont plus atteignables sur un serveur capable de charger le plugin.

Paramètres de config.yml​

setupDone​

  • Défaut : false
  • Contrôle si les conseils de configuration initiale sont considérés comme terminés
  • Les joueurs disposant de freeminecraftmodels.* reçoivent un rappel environ 10 secondes après chaque connexion tant que cette valeur reste à false, s'ils sont encore en ligne
  • Ouvrir /fmm setup enregistre true pour le serveur et supprime les futurs rappels. Choisir une option de fin dans /fmm initialize l'enregistre aussi ; cet indicateur ne prouve pas qu'un pack a été installé ou reçu par les clients

nightbreak.autoDownloadPluginUpdates​

  • Défaut : false
  • Paramètre partagé de MagmaCore, dans la section nightbreak: de config.yml
  • Lorsque true, FreeMinecraftModels télécharge automatiquement les mises à jour disponibles du jar du plugin et les fichiers de mise à jour de contenu au démarrage
  • Les mises à jour téléchargées du plugin et du contenu sont appliquées après le redémarrage du serveur, sauf si nightbreak.applyPluginUpdatesWithoutRestart applique la mise à jour du plugin plus tôt
  • Les téléchargements automatiques du plugin nécessitent un jeton de compte Nightbreak valide et un abonnement Patreon supporter actif. Sans les deux, laissez cette valeur à false et utilisez plutôt le bouton de mise à jour en jeu
  • La mise à jour automatique du contenu vise les packs déjà installés et diffère leur rechargement. Elle n'équivaut pas à installer tous les packs accessibles avec /fmm downloadall. Modifiez ce réglage depuis /fmm setup ou manuellement

nightbreak.applyPluginUpdatesWithoutRestart​

  • Défaut : never
  • Paramètre partagé de MagmaCore, dans la section nightbreak: de config.yml. Il détermine quand une mise à jour du plugin téléchargée est appliquée sans redémarrage
  • never : la mise à jour attend le prochain redémarrage. Vous pouvez toujours l'appliquer manuellement avec /fmm applypluginupdate
  • when-empty : la mise à jour est appliquée la prochaine fois qu'aucun joueur n'est en ligne. FMM vérifie toutes les 30 secondes
  • immediately : la mise à jour est appliquée dès la fin de son téléchargement
  • Toute autre valeur équivaut à never
  • Appliquer une mise à jour désactive FreeMinecraftModels et chaque plugin MagmaGuy qui en dépend, remplace le jar, puis les recharge et les réactive. Les boss, arènes et instances de donjon en cours prennent fin lors du rechargement de ces plugins
  • Un plugin d'un autre auteur qui dépend de FreeMinecraftModels bloque le remplacement ; la mise à jour attend alors un redémarrage. Si le nouveau jar ne parvient pas à s'activer, l'ancien jar est rechargé et la mise à jour reste en attente pour le prochain redémarrage. Voir Commandes

useDisplayEntitiesWhenPossible​

  • Défaut : true
  • Demande à FreeMinecraftModels de privilégier les entités d'affichage lorsque le serveur et le client les prennent en charge
  • La valeur false sélectionne le rendu des os par porte-armures pour les clients Java. La branche héritée antérieure à 1.19.4 ne rend pas les anciens serveurs compatibles
  • Si les modèles Bedrock sont activés et que la passerelle native d'entités personnalisées est disponible, les joueurs Bedrock utilisent cette présentation. Sinon, leur rendu des os utilise des porte-armures. Ce réglage n'impose pas le même moteur de rendu à tous les joueurs

maxModelViewDistance​

  • Défaut : 60
  • Fixe la limite de distance habituelle. Dans les mondes peu denses, l'exception de proximité à moins de 10 blocs contourne cette limite et le contrôle d'occlusion ; une valeur inférieure à 10 n'y impose donc pas une coupure stricte
  • Des valeurs plus faibles réduisent la charge de paquets et de rendu client dans les zones denses en modèles
  • Les entités individuelles peuvent surcharger cette valeur au runtime via ModeledEntity.setViewDistanceOverride(int) — voir le guide de l'API

maxInteractionAndAttackDistance​

  • Défaut : 3
  • S'applique aux entités modélisées statiques et dynamiques
  • Utilisé par les vérifications d'interaction et de détection de coup runtime

maxInteractionAndAttackDistanceForProps​

  • Défaut : 6
  • S'applique aux entités prop
  • Cette valeur est distincte de la distance d'interaction des entités statiques/dynamiques

sendCustomModelsToBedrockClientsV2​

  • Défaut : true
  • Contrôle si FreeMinecraftModels tente d'envoyer des modèles personnalisés aux clients Bedrock
  • Cette clé remplace l'ancienne sendCustomModelsToBedrockClients (qui avait pour défaut false). Le renommage en V2 inverse le défaut afin que les joueurs Bedrock voient les modèles par défaut ; si vous aviez auparavant défini explicitement l'ancienne clé, vous pouvez la supprimer et la nouvelle clé V2 prend le relais
  • Si désactivé, les joueurs Bedrock retombent sur l'entité vanilla sous-jacente lorsqu'elle existe (et les déguisements ne s'affichent pas pour eux)
  • Si vous l'activez, assurez-vous que votre chaîne resource-pack Bedrock/Geyser/Floodgate est réellement prête pour ces clients
  • Les journaux de diagnostic Bedrock ne dépendent pas d'une clé de configuration. Utilisez /fmm debug bedrock on|off et désactivez-les explicitement après avoir recueilli les preuves. /fmm reload ne réinitialise pas cet indicateur ; un nouveau démarrage du serveur le fait. Consultez les commandes

skipUnchangedBoneUpdates​

  • Défaut : true
  • Lorsque true, les mises à jour de déplacement et de métadonnées des os sont omises si les transformations suivies n'ont pas changé au-delà de la tolérance de comparaison. Les os d'affichage suivent la position, la rotation et l'échelle ; les porte-armures suivent la position et la rotation
  • Les os immobiles évitent généralement ces mises à jour, mais une modification explicitement marquée, comme la teinte, force un nouvel envoi
  • La resynchronisation complète périodique corrige toujours les écarts du client ; cette option ne supprime pas tous les types de paquets des modèles
  • Ne le passez à false que pour rétablir l'ancien comportement « toujours renvoyer chaque os à chaque tick » à des fins de débogage

useDeltaMetadataPackets​

  • Défaut : true
  • Lorsque true, le paquet de métadonnées par tick des os de modèle en entités d'affichage n'envoie que les valeurs qui ont changé (la transformation de l'os) au lieu de re-sérialiser à chaque tick l'intégralité du bloc d'affichage d'item (item model + custom model data)
  • L'état complet est toujours envoyé lorsqu'un joueur voit un modèle pour la première fois ainsi qu'à la resynchronisation périodique
  • Passez-le à false pour rétablir l'ancien comportement d'instantané complet à chaque tick, à des fins de débogage ou de comparaison

displayBonesRideTheirEntity​

  • Défaut : true
  • Lorsque true, les os d'affichage d'un modèle dynamique chevauchent son entité comme passagers sur les clients Java. Le client place chaque os à partir de la même position lissée que celle qu'il utilise pour l'entité et ses cavaliers : montures, cavaliers et modèles en mouvement restent donc ensemble au lieu de traîner derrière, et les os n'envoient aucun paquet de position
  • Cela s'applique aux montures comme /fmm mount et aux modèles dont l'entité masquée est suivie via modelViewersTrackHiddenBodies. Les os ne chevauchent l'entité que tant que le client de chaque observateur Java suit l'entité. Un observateur peut voir un modèle plus loin que la distance à laquelle le serveur suit son entité (les modèles apparaissent jusqu'à maxModelViewDistance, 60 blocs par défaut, tandis que Spigot suit les monstres jusqu'à 48 blocs par défaut), et des plugins peuvent masquer l'entité à un observateur. Dans ces cas, et pendant la mort du modèle, les os reviennent aux téléportations os par os
  • Les joueurs Bedrock ne sont pas concernés
  • Passez-le à false pour conserver les téléportations os par os sur tous les modèles, comme avant

riddenBoneInterpolationTicks​

  • Défaut : 1
  • Nombre de ticks que met un client Java à faire glisser un os passager vers sa pose d'animation suivante. 0 le place directement sur sa pose à chaque tick. 1 glisse sur un tick, ce qui lisse aussi les rotations
  • Seuls les os qui chevauchent leur entité l'utilisent ; voir displayBonesRideTheirEntity
  • /fmm boneglide <ticks> le modifie jusqu'au rechargement de FMM, sans modifier ce fichier. Voir Commandes

modelViewersTrackHiddenBodies​

  • Défaut : true
  • Lorsque true, chaque joueur Java qui peut voir un modèle dynamique dont l'entité est masquée reçoit aussi cette entité sous forme de corps invisible dont l'équipement est retiré. Les os du modèle peuvent alors la chevaucher, comme décrit sous displayBonesRideTheirEntity
  • Pour les autres joueurs et les joueurs Bedrock, l'entité reste masquée, comme avant
  • Passez-le à false pour laisser les entités masquées non suivies et leurs os en téléportations os par os

idleWalkBlendTicks​

  • Défaut : 5
  • Expérimental. Nombre de ticks que met un modèle à faire un fondu enchaîné entre ses animations idle et walk. Les deux animations continuent de jouer pendant le fondu
  • 0 bascule instantanément, comme dans les anciennes versions
  • Les joueurs Bedrock obtiennent la même durée de fondu. Elle est écrite dans les contrôleurs d'animation Bedrock générés : ils voient donc un changement après la régénération du resource pack
  • Voir Mélange des animations

deathBlendTicks​

  • Défaut : 4
  • Expérimental. Nombre de ticks que met un modèle à passer en fondu de la pose qu'il tient à son animation death. 0 bascule instantanément, comme dans les anciennes versions
  • Les joueurs Bedrock obtiennent la même durée de fondu une fois le resource pack régénéré

weightedTurning​

  • Défaut : true
  • Expérimental. Lorsque true, un modèle dynamique tourne vers l'orientation de son mob avec de l'inertie : il accélère, tourne à une vitesse plafonnée, puis ralentit jusqu'à la nouvelle orientation sans la dépasser. Les modèles plus grands tournent plus lentement
  • Seul le modèle tourne ainsi. Le mob lui-même tourne et marche exactement comme avant
  • Un modèle tourne instantanément lorsqu'un joueur monte directement son mob ou s'assoit sur l'un de ses sièges m_
  • Passez-le à false pour que les modèles tournent instantanément avec leur mob, comme dans les anciennes versions
  • Voir Inertie de rotation pour savoir comment la taille modifie les limites

turnSpeedCap​

  • Défaut : 30
  • Expérimental. Vitesse de rotation maximale, en degrés par tick, d'un modèle d'un bloc de taille
  • Le plafond est divisé par la racine carrée de la taille du modèle et ne dépasse jamais 90 degrés par tick

turnAcceleration​

  • Défaut : 6
  • Expérimental. Nombre de degrés par tick qu'un modèle d'un bloc de taille gagne ou perd en vitesse de rotation à chaque tick
  • Il est divisé par la taille du modèle : les modèles plus grands accélèrent et ralentissent donc plus lentement
  • Une valeur de 0 ou moins, comme un turnSpeedCap de 0 ou moins, fait tourner les modèles instantanément

maxModelsForProximityOverride​

  • Défaut : 25
  • Ajuste selon la charge l'exception de visibilité à courte distance
  • Normalement, un modèle situé à moins de 10 blocs d'un joueur contourne les contrôles de distance et d'occlusion qui sélectionnent les observateurs ; les autres règles de visibilité restent applicables
  • Dans une zone dense, comme un hub de PNJ à plusieurs étages, cette exception rend le joueur destinataire des paquets de dizaines de modèles pourtant invisibles, à d'autres étages ou derrière des murs
  • Lorsqu'un monde contient au moins ce nombre de modèles chargés, l'exception de proximité y est désactivée. Les observateurs doivent passer les contrôles de distance et de visibilité, même de près. Le contrôle de visibilité échantillonne le centre du modèle et les coins de sa hitbox ; l'absence de hitbox valide ce contrôle. Les mondes peu denses conservent l'exception
  • La décision est prise par monde, et non globalement, afin qu'un monde hub surchargé ne pénalise pas les mondes calmes
  • Montez-le très haut pour rétablir de fait le comportement de surcharge systématique ; réglez-le à 0 pour toujours exiger une ligne de vue
  • /fmm packetdebug est l'outil prévu pour en mesurer l'effet — voir Commandes

filmicMode​

attention

Déconseillé en dehors des enregistrements. Le mode filmique envoie beaucoup plus de paquets à chaque joueur et oblige le serveur à animer chaque modèle chargé. Attendez-vous à du lag sur les serveurs chargés.

  • Défaut : false
  • Destiné à l'enregistrement de bandes-annonces et de vidéos avec ReplayMod ou un mod d'enregistrement similaire
  • Normalement, un joueur ne reçoit un modèle que lorsqu'il se trouve à moins de maxModelViewDistance et passe le contrôle de ligne de vue. Les modèles masqués sont retirés de ce client et cessent de s'animer. Un replay ne contient que ce que le client d'enregistrement a reçu : ces modèles sont donc absents ou figés lorsque la caméra du replay les regarde
  • Lorsque true, chaque joueur reçoit tous les modèles chargés dans les chunks qu'il a chargés, et ces modèles continuent de s'animer, même derrière des murs ou au-delà de maxModelViewDistance. La zone de chunks chargés correspond à la distance de vue du monde, plafonnée par la distance de rendu du client, plus un chunk. Les modèles situés dans des chunks non chargés n'apparaissent toujours pas
  • Pour ne l'activer que le temps d'un enregistrement, utilisez /fmm filmic on|off plutôt que de modifier ce fichier. Voir Commandes

particleEffectsEnabled​

  • Défaut : true
  • Lorsque false, aucun effet de particules Blockbench n'est joué sur les modèles, props ou objets tenus. Les modèles se chargent et s'animent normalement
  • Le changement s'applique après /fmm reload ou un redémarrage. Les joueurs Java le voient dès que FMM a rechargé. Les joueurs Bedrock le voient une fois qu'ils ont reçu le resource pack régénéré, car leurs effets sont inclus dans le pack
  • Voir Particules

maxParticlesPerEmitter​

  • Défaut : 100
  • Nombre maximal de particules actives pour un effet de particules sur un modèle. Le max_particles propre au fichier de particules s'applique lorsqu'il est inférieur
  • Chaque particule vue par un joueur Java est une entité envoyée par paquets : des valeurs élevées consomment donc de la bande passante

maxParticlesPerViewer​

  • Défaut : 400
  • Nombre maximal de particules actives affichées à un même joueur Java, tous modèles confondus
  • Au-delà, les nouvelles particules destinées à ce joueur sont ignorées jusqu'à l'expiration des plus anciennes. Les joueurs Bedrock dessinent les particules sur leur propre client et ne sont pas comptés

preventPropPlacementInProtectedRegions​

  • Défaut : true
  • Lorsque true, FreeMinecraftModels demande aux fournisseurs de protection enregistrés auprès de MagmaCore si ce joueur précis peut construire dans la case que le prop occuperait, et refuse le placement si la réponse est non
  • Les joueurs disposant de la permission freeminecraftmodels.bypassregionprotection (défaut : op) ignorent cette vérification de FMM. Les contrôles d'espace et les restrictions des autres plugins restent applicables
  • Les fournisseurs intégrés tenant compte du joueur couvrent WorldGuard et GriefPrevention. D'autres plugins peuvent enregistrer des fournisseurs. Un refus ou une erreur d'un fournisseur interdit le placement ; MagmaCore refuse aussi les emplacements couverts par un propriétaire d'emplacement protégé. Sans fournisseur qui refuse ni propriété protégée, ce contrôle n'ajoute aucune restriction
  • Le message de refus est You don't have permission to place a model here!

Le fournisseur vérifie si ce joueur peut construire ; l'appartenance à un claim peut donc autoriser le placement. La propriété d'emplacement protégé est un contrôle distinct, sans exemption liée au joueur. Cette requête interroge les intégrations enregistrées et ne simule pas un événement de placement de bloc vanilla ; elle ne reproduit donc pas les règles de tous les plugins.

Chaque placement reçoit une vérification à case unique ; les props voxelisés en reçoivent une seconde, sur tout le volume :

Type de propCases vérifiées
Prop normal (forme libre)La seule case adjacente à la face de bloc cliquée — la case que le prop occupera
Prop voxelize: trueCette même case adjacente d'abord, puis chaque case de l'empreinte pivotée du prop (largeur x hauteur x profondeur) autour du point de placement aligné sur la grille. Si une seule case de ce volume est interdite, tout le placement est refusé

La vérification de volume existe parce qu'un prop voxelisé peut faire plusieurs blocs de large : ne tester que la case cliquée permettrait à un joueur de chevaucher une limite de claim et de déposer un gros prop dans la construction de quelqu'un d'autre. Elle s'exécute après la vérification d'espace libre, de sorte que Not enough space to place this model! reste prioritaire lorsque l'empreinte est physiquement obstruée.

L'empreinte vérifiée arrondit chaque dimension de hitbox avec Math.round, avec un minimum d'un bloc. Le volume des barrières envoyées par paquets utilise plutôt ceil(size - 0.4) et peut différer ; le contrôle de placement ne garantit pas une couverture identique de toutes les cellules de collision côté client.

remarque

La permission est vérifiée avant d'interroger le fournisseur. Accordez freeminecraftmodels.bypassregionprotection pour exempter l'équipe des contrôles de protection de FMM tout en les conservant pour les autres joueurs. Cela ne contourne ni les contrôles d'espace ni l'annulation d'un événement par un autre plugin.

registerCraftingRecipes​

  • Défaut : true
  • Passez à false et redémarrez pour une économie fondée uniquement sur les achats. Les recettes valides et activées restent dans le catalogue de la boutique, mais leurs recettes Bukkit sont retirées
  • Le menu de fabrication /fmm des joueurs et les détails des recettes nécessitent une recette effectivement enregistrée ; les entrées dont la fabrication est désactivée n'y figurent donc pas
  • isEnabled: false dans une recette la retire du catalogue chargé, boutique comprise. shopEnabled: false la masque uniquement à l'achat

shop_config.yml​

La boutique facultative utilisant Vault possède sa propre configuration, pour pouvoir être activée et réglée indépendamment du plugin principal. Elle refuse de s'enregistrer si Vault ou un fournisseur d'économie manque.

Clés de premier niveau​

CléDéfautDescription
enabledfalseInterrupteur principal pour /fmm shop. La commande ne s'enregistre que lorsque ceci est true et que Vault + un fournisseur d'économie sont tous deux présents
defaultPrice100.0Prix par défaut des recettes sans shopPrice ; une valeur nulle ou négative est remplacée par 100.0. Les prix déjà enregistrés par recette ne changent pas lorsque ce défaut change
menuTitle&8FMM - Furniture ShopTitre affiché en haut de l'inventaire de la boutique (supporte les codes de couleur &)
priceLoreFormat&7Price: &e{price}Ligne de lore ajoutée à chaque objet de la boutique montrant son prix. Placeholder : {price}
clickToBuyLoreFormat&aClick to purchaseLigne de lore ajoutée à chaque objet de la boutique invitant à l'achat

Clés de messages (messages.*)​

Toutes les chaînes de message supportent les codes de couleur &.

CléDéfautPlaceholders
messages.purchaseSuccess&aPurchased &f{item} &afor &e{price}&a. Balance: &e{balance}&a.{item}, {price}, {balance}
messages.insufficientFunds&cYou need &e{price} &cto buy &f{item}&c. Balance: &e{balance}&c.{item}, {price}, {balance}
messages.shopDisabled&cThe furniture shop is currently unavailable.aucun
messages.itemNotForSale&cThat item is not currently for sale.{item}
messages.inventoryFull&eYour inventory was full; &f{item} &ehas been dropped at your feet.{item}

Champs de boutique par recette​

Chaque fichier de recette dans plugins/FreeMinecraftModels/recipes/<model_id>.yml reçoit deux champs supplémentaires :

ChampDéfautDescription
shopEnabledtrueIndique si cette recette est visible dans /fmm shop. La valeur false ne désactive pas à elle seule la fabrication ; l'activation de la recette et registerCraftingRecipes restent applicables
shopPricedefaultPrice depuis shop_config.ymlCoût en monnaie Vault pour cet objet spécifique

L'éditeur de recettes (/fmm craftify) écrit ces deux champs à l'enregistrement, donc ajuster le prix se fait par une simple édition de texte.

Permissions​

Enregistrées dans plugin.yml​

PermissionDéfautDescription
freeminecraftmodels.*opWildcard accordant les permissions admin, deleteall, de déguisement self/others, de contournement de la protection des régions et d'administration des familiers
freeminecraftmodels.adminopAccès à /fmm admin (le navigateur de contenu admin) et /fmm giveitem. Les autres commandes admin/debug (/fmm location, /fmm spawn, /fmm mount, /fmm itemify, /fmm craftify, /fmm reload, /fmm stats, /fmm hitbox visualize, /fmm debug, /fmm packetdebug, /fmm filmic, /fmm boneglide, /fmm setup, /fmm initialize, /fmm recommendedplugins, /fmm downloadall, /fmm downloadallcontent, /fmm updatecontent, /fmm downloadpluginupdate, /fmm applypluginupdate, /fmm forcereinstallcontent) vérifient le wildcard freeminecraftmodels.* à la place
freeminecraftmodels.deleteallopEnfant du wildcard ; accès à /fmm deleteall
freeminecraftmodels.disguise.selfopAutorise /fmm disguise / /fmm undisguise sur l'expéditeur
freeminecraftmodels.disguise.othersopAutorise le déguisement/dé-déguisement ciblé plus /fmm disguiselist
freeminecraftmodels.bypassregionprotectionopIgnore les contrôles de protection du placement et des interactions de FMM, même avec preventPropPlacementInProtectedRegions activé ; ne remplace ni les annulations des autres plugins ni les contraintes d'espace
freeminecraftmodels.menutrueAccès au menu d'objets craftables /fmm
freeminecraftmodels.shoptrueAccès à /fmm shop
freeminecraftmodels.petstrueAccès à /fmm pets
freeminecraftmodels.pets.adminopEnfant du wildcard ; accès à /fmm petadmin et /fmm petmigrate
nightbreak.loginopEnregistrée par MagmaCore, pas par plugin.yml. Requise par les commandes partagées /nightbreaklogin et /nightbreaklogout
nightbreak.pluginsopEnregistrée par MagmaCore, pas par plugin.yml. Requise par la commande partagée /nightbreak plugins

Les commandes de familiers sont décrites dans Familiers.

Configuration YML du modèle​

Le fichier .yml compagnon d'un modèle porte le même nom de base et se trouve dans le même dossier que son .bbmodel. Les props et les objets tenus utilisent des parties différentes de cette configuration.

Props​

isEnabled: true
name: "&6Oak Table"
lore:
- "&7Seats four"
voxelize: true
solidify: true
scripts:
- my_prop.lua
ChampDescription
isEnabledActive ou désactive la définition ; vaut true par défaut
nameNom d'affichage de l'objet de placement du prop. Accepte les codes de couleur. Sans lui, l'objet porte le nom du modèle, comme dans ✦ Oak Table ✦
loreLore de l'objet de placement. Accepte les codes de couleur. Toute clé lore remplace le lore par défaut (indications de pose et de ramassage plus l'ID du modèle), et une liste vide (lore: []) le supprime
scriptsScripts Lua de props indépendants provenant de plugins/FreeMinecraftModels/scripts/
voxelizeAligne le placement sur la grille de blocs et la rotation par pas de 90 degrés ; vérifie l'espace libre sur toute l'emprise après rotation
solidifyAvec la voxelisation, envoie des blocs barrière uniquement par paquets pour la collision côté client ; ces blocs n'existent pas dans le monde et sont retirés avec le prop

Le name et le lore de l'objet de placement s'appliquent partout où FMM crée cet objet : /fmm itemify, résultat des recettes craftées, achats en boutique et objets pris dans les menus d'administration. Les entrées de menu, comme les annonces de la boutique et ses messages d'achat, affichent toujours le nom formé à partir de l'ID du modèle. Les objets déjà présents dans les inventaires conservent leur ancien nom et leur ancien lore.

Objets tenus​

isEnabled: true
material: DIAMOND_SWORD
name: "&bFrost Blade"
lore:
- "&7A sword forged in ice"
enchantments:
- "minecraft:sharpness,3"
- "minecraft:unbreaking,2"

material sélectionne un matériau d'objet Bukkit et enregistre un objet tenu au lieu d'un prop. name et lore acceptent les codes de couleur. Les enchantements utilisent des identifiants en minuscules avec espace de noms et des niveaux entiers strictement positifs. Lorsqu'un enchantement est un ensemble d'objets, le lore de l'objet affiche les pièces de l'ensemble sur la ligne de lore qui contient $itemSet, ou à la suite du lore si aucune ligne ne le contient. Obtenez les objets enregistrés via /fmm giveitem <id> ou le menu administrateur. Les recettes et la boutique de props créent des objets de placement en papier, pas ces objets tenus définis par l'auteur.

Pour teindre une armure en cuir, ajoutez une couleur RVB hexadécimale après le matériau, sans #, comme pour l'équipement EliteMobs : material: LEATHER_CHESTPLATE:ff8800. Le suffixe ne fonctionne que sur les matériaux dont le nom commence par LEATHER_, comme les pièces d'armure en cuir et l'armure de cheval en cuir. Un suffixe sur tout autre matériau, ou une valeur qui ne compte pas entre un et six chiffres hexadécimaux, fait rejeter le catalogue d'objets : /fmm reload conserve le catalogue actuel et la console indique le fichier concerné. Les objets déjà présents dans les inventaires conservent leur ancienne couleur.

Compatibilité lors de la mise à jour

Les scripts Lua d'objets équipés ont été retirés. Une définition d'objet tenu avec une liste scripts: non vide, des enchantements anciens sans espace de noms comme SHARPNESS,3, ou un matériau indisponible sur ce serveur est ignorée avec un diagnostic. FMM laisse le fichier de l'auteur inchangé. Retirez l'ancienne liaison au script d'objet et définissez les effets avec des définitions d'enchantements ; les scripts de props restent pris en charge.

Pour les baguettes et les bâtons, ajoutez une définition d'arme magique. Ne placez pas le comportement de l'arme dans un script de prop ou dans les anciens hooks d'objets.

Notes de fonctionnement​

  • /fmm reload importe et valide d'abord les objets, enchantements et recettes de props définis par les auteurs, tout en conservant le catalogue actif. Un échec de validation refuse le rechargement ; une validation réussie lance la réinitialisation complète, notamment de config.yml, shop_config.yml, pets.yml, des recettes, modèles, espèces de familiers, modules de comportement des familiers et packs générés. Les demandes simultanées d'initialisation ou de rechargement sont refusées
  • Une initialisation complète réussie programme FmmReloadedEvent 40 ticks plus tard pour que les plugins dépendants rétablissent leurs attachements. Le rechargement de contenu plus limité déclenché par l'importateur émet cet événement en cas de réussite. Il reconstruit les modèles, objets, enchantements, scripts de props et recettes, mais ne relit ni config.yml ni shop_config.yml. Un échec après l'effacement des registres actifs par ce chemin de contenu désactive FMM. Un échec sur les recettes de props fait exception : FMM consigne Prop recipe catalog rejected dans les journaux et garde les recettes précédentes actives. Une validation refusée n'est pas un rechargement terminé
  • Lorsqu'un monde est déchargé, FMM retire les modèles actifs des props tout en conservant leurs porte-armures persistants. Au prochain chargement de ces entités, il élimine les doublons et restaure les props. Ce processus est distinct du ramassage ou de la destruction définitive d'un prop.
  • Les horodatages ZIP fixes et les collections de modèles ordonnées réduisent les changements inutiles, mais l'ordre de parcours du système de fichiers peut modifier les octets du ZIP et son SHA1 même avec des modèles inchangés. Une sortie identique n'est pas garantie. Voir Sortie du resource pack.
  • FreeMinecraftModels ne fait que générer le resource pack ; il ne l'héberge pas de lui-même.
  • ResourcePackManager reste le chemin de livraison recommandé pour les clients Java et le chemin documenté le plus sûr pour les configurations mixtes.
  • WorldGuard, WorldEdit, GriefPrevention, Vault, floodgate et Geyser-Spigot sont déclarés softdepend dans plugin.yml. WorldGuard et GriefPrevention fournissent les requêtes de protection intégrées ; WorldEdit n'est pas un fournisseur de protection distinct. Vault et un fournisseur d'économie activent la boutique. La détection des clients Bedrock, leur passerelle de rendu et la livraison du pack doivent toutes être disponibles pour la présentation Bedrock correspondante

Quand modifier ces valeurs​

Cette configuration sert à régler le comportement du plugin pendant son fonctionnement ; la gestion des packs de contenu passe par les commandes prévues à cet effet.

  • Utilisez /fmm setup, /fmm downloadall et /fmm updatecontent pour le cycle de vie des packs officiels
  • Utilisez le dossier imports pour l'import manuel de .bbmodel ou d'autres contenus locaux
  • Utilisez config.yml lorsque vous devez ajuster le mode de rendu, la distance de visibilité, la distance d'interaction, le comportement Bedrock, l'application de la protection des régions ou les téléchargements automatiques de mises à jour
  • Utilisez skipUnchangedBoneUpdates, useDeltaMetadataPackets et maxModelsForProximityOverride pour l'ajustement des paquets/de la bande passante dans les mondes denses en modèles. Les trois utilisent par défaut le comportement optimisé ; les réglages false / très élevés existent pour le débogage et la comparaison A/B, et non comme valeurs de production recommandées
  • N'utilisez filmicMode (ou /fmm filmic on) que pendant l'enregistrement de vidéos, puis désactivez-le
  • Utilisez idleWalkBlendTicks, deathBlendTicks, weightedTurning, turnSpeedCap et turnAcceleration pour régler la façon dont les modèles s'animent et tournent. Mettez les durées de fondu à 0 et weightedTurning à false pour retrouver les changements d'animation et les rotations instantanés des anciennes versions
  • displayBonesRideTheirEntity et modelViewersTrackHiddenBodies sont activés par défaut. Les passer à false rétablit les anciennes téléportations os par os, où les modèles en mouvement et les montures peuvent traîner derrière leur entité
  • Réduisez maxParticlesPerEmitter et maxParticlesPerViewer, ou définissez particleEffectsEnabled: false, si les modèles riches en particules consomment trop de bande passante
  • Utilisez shop_config.yml (et les champs par recette shopEnabled/shopPrice) pour ajuster la boutique de mobilier sans toucher au code

Limitations connues​

  • Le comportement Bedrock dépend à la fois de sendCustomModelsToBedrockClientsV2 et de toute votre configuration Floodgate/Geyser/resource pack. Ne considérez pas une compatibilité comme acquise sans avoir testé cette combinaison exacte.
  • Si la boutique est activée mais que Vault ou un fournisseur d'économie manque, elle reste indisponible et un avertissement précis est journalisé au démarrage. /fmm version indique seulement la version du plugin ; consultez ces avertissements si /fmm shop est absent.