FreeMinecraftModels
FreeMinecraftModels est à la fois un runtime de modèles personnalisés et une API destinée aux développeurs.
Le plugin actuel n'est plus simplement un workflow « dossier imports plus /fmm reload ». La base de code actuelle ajoute :
- un flux de configuration initial et un rappel à la connexion jusqu'à ce que la configuration soit marquée comme terminée
- un menu de configuration adossé à Nightbreak pour l'installation et la mise à jour des packs de modèles officiels
- un dossier de resource pack généré dans
plugins/FreeMinecraftModels/output/FreeMinecraftModels - un artefact de pack zippé dans
plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip - une surface de commandes plus large pour la configuration, les mises à jour de contenu, le spawn, les déguisements, les props et le débogage
- os de points de monture — les os dont le nom commence par
mount_créent des points d'assise montables sur un modèle, permettant aux joueurs de chevaucher des entités personnalisées - JSON de modèle d'affichage personnalisé — placez un fichier
.jsonvoisin (export display-item de Blockbench) à côté d'un.bbmodelpour remplacer l'apparence de l'objet en jeu (nécessite 1.21.4+) - objets scriptables personnalisés — les modèles dont la config YML définit
material:deviennent des objets personnalisés tenables avec un support complet de scripting Lua et 22 hooks d'objet - navigateur de contenu admin (
/fmm admin) — un menu d'inventaire pour les administrateurs leur permettant de parcourir les packs installés, dossiers, modèles et objets personnalisés - menu d'objets craftables pour les joueurs (
/fmm) — un menu d'inventaire affichant tous les objets craftables avec leurs recettes ; cliquer sur un objet affiche la grille spatiale 3x3 avec la flèche et la sortie - système de déguisement des joueurs —
/fmm disguise <model> [player],/fmm undisguise [player],/fmm disguiselist, avec uneDisguiseAPIpublique pour les plugins tiers - boutique de mobilier —
/fmm shopoptionnel adossé à Vault pour vendre des props craftables, configuré par recette viashopEnabled/shopPrice - API d'UI joueur — les scripts Lua peuvent afficher des boss bars, action bars et titres aux joueurs
- LocationAPI — les plugins tiers peuvent enregistrer des détecteurs de donjon et des fournisseurs de protection qui alimentent les prédicats Lua
em.location.is_in_dungeonetem.location.is_protectedde FMM
Commencez ici
Scripting Lua
FreeMinecraftModels inclut un support de scripting Lua à la fois pour les props et les objets personnalisés, propulsé par le moteur de scripting MagmaCore 2.0. Les scripts vivent dans plugins/FreeMinecraftModels/scripts/.
Hooks de prop (8)
Les scripts de prop peuvent répondre aux hooks suivants :
| Hook | Déclencheur |
|---|---|
on_spawn | Le prop apparaît dans le monde |
on_game_tick | À chaque tick de jeu tant que le prop est vivant |
on_zone_enter | Un joueur entre dans la zone d'interaction du prop |
on_zone_leave | Un joueur quitte la zone d'interaction du prop |
on_destroy | Le prop est retiré du monde |
on_left_click | Un joueur clique gauche sur le prop |
on_right_click | Un joueur clique droit sur le prop |
on_projectile_hit | Un projectile touche le prop |
Les scripts de prop reçoivent une table context.prop avec des champs comme model_id et current_location, et des méthodes comme play_animation(name) et stop_animation().
Hooks d'objet (22)
Les scripts d'objet personnalisé (pour les modèles avec material: défini dans leur YML) peuvent répondre aux hooks suivants :
| Hook | Déclencheur |
|---|---|
on_equip | L'objet est équipé (entre dans un slot actif) |
on_unequip | L'objet est déséquipé (quitte un slot actif) |
on_attack_entity | Le joueur attaque une entité en tenant l'objet |
on_kill_entity | Le joueur tue une entité en tenant l'objet |
on_take_damage | Le joueur subit des dégâts pendant que l'objet est équipé |
on_shield_block | Le joueur bloque des dégâts avec un bouclier |
on_shoot_bow | Le joueur tire à l'arc |
on_projectile_hit | Un projectile tiré par le joueur touche quelque chose |
on_projectile_launch | Le joueur lance un projectile |
on_right_click | Le joueur clique droit en tenant l'objet |
on_left_click | Le joueur clique gauche en tenant l'objet |
on_shift_right_click | Shift + clic droit en tenant l'objet |
on_shift_left_click | Shift + clic gauche en tenant l'objet |
on_interact_entity | Le joueur clique droit sur une entité en tenant l'objet |
on_swap_hands | L'objet est échangé entre les mains |
on_drop | Le joueur jette l'objet |
on_break_block | Le joueur casse un bloc en tenant l'objet |
on_consume | L'objet est consommé (nourriture/potion) |
on_item_damage | L'objet subit des dégâts de durabilité |
on_fish | Le joueur utilise une canne à pêche |
on_death | Le joueur meurt pendant que l'objet est équipé |
on_game_tick | À chaque tick serveur tant que l'objet est équipé |
Les scripts d'objet reçoivent une table context.item avec des champs et méthodes relatifs à l'objet tenu et au joueur qui le tient. Les scripts Lua peuvent aussi utiliser l'API d'UI joueur pour afficher des boss bars, action bars et titres.
Notes actuelles
- Packs officiels gérés par Nightbreak intégrés au plugin :
Basic Furniture Pack,BetterStructures Prop Pack,EliteMobs Prop Pack,Craftenmine's Weapons Item PacketCraftenmine Tools Item Pack. - FreeMinecraftModels reconstruit sa sortie de resource pack au démarrage et lors de
/fmm reload, et dispatche unFmmReloadedEventafin que les plugins dépendants puissent réattacher leurs références de modèle. - ResourcePackManager reste la méthode recommandée pour distribuer automatiquement le pack généré aux clients.