Aller au contenu principal

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 .json voisin (export display-item de Blockbench) à côté d'un .bbmodel pour 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 une DisguiseAPI publique pour les plugins tiers
  • boutique de mobilier/fmm shop optionnel adossé à Vault pour vendre des props craftables, configuré par recette via shopEnabled / 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_dungeon et em.location.is_protected de 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 :

HookDéclencheur
on_spawnLe prop apparaît dans le monde
on_game_tickÀ chaque tick de jeu tant que le prop est vivant
on_zone_enterUn joueur entre dans la zone d'interaction du prop
on_zone_leaveUn joueur quitte la zone d'interaction du prop
on_destroyLe prop est retiré du monde
on_left_clickUn joueur clique gauche sur le prop
on_right_clickUn joueur clique droit sur le prop
on_projectile_hitUn 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 :

HookDéclencheur
on_equipL'objet est équipé (entre dans un slot actif)
on_unequipL'objet est déséquipé (quitte un slot actif)
on_attack_entityLe joueur attaque une entité en tenant l'objet
on_kill_entityLe joueur tue une entité en tenant l'objet
on_take_damageLe joueur subit des dégâts pendant que l'objet est équipé
on_shield_blockLe joueur bloque des dégâts avec un bouclier
on_shoot_bowLe joueur tire à l'arc
on_projectile_hitUn projectile tiré par le joueur touche quelque chose
on_projectile_launchLe joueur lance un projectile
on_right_clickLe joueur clique droit en tenant l'objet
on_left_clickLe joueur clique gauche en tenant l'objet
on_shift_right_clickShift + clic droit en tenant l'objet
on_shift_left_clickShift + clic gauche en tenant l'objet
on_interact_entityLe joueur clique droit sur une entité en tenant l'objet
on_swap_handsL'objet est échangé entre les mains
on_dropLe joueur jette l'objet
on_break_blockLe joueur casse un bloc en tenant l'objet
on_consumeL'objet est consommé (nourriture/potion)
on_item_damageL'objet subit des dégâts de durabilité
on_fishLe joueur utilise une canne à pêche
on_deathLe 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 Pack et Craftenmine Tools Item Pack.
  • FreeMinecraftModels reconstruit sa sortie de resource pack au démarrage et lors de /fmm reload, et dispatche un FmmReloadedEvent afin 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.