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 m_ 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 ainsi que la vérification de placement de props en région protégée
  • changelogs en jeu — les admins reçoivent un rappel à la connexion lorsqu'il existe des notes de version FreeMinecraftModels non lues, et peuvent les consulter avec /freeminecraftmodelschangelog
  • réparation de contenu/fmm forcereinstallcontent <package|all> re-télécharge un contenu nominalement à jour, pour les cas où les fichiers d'un pack sont endommagés ou manquants

FreeMinecraftModels déclare api-version: 1.21.4, donc Minecraft 1.21.4 est la version de serveur minimale prise en charge.

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 actifs (7)

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 une zone surveillée créée par script
on_zone_leaveUn joueur quitte une zone surveillée créée par script
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

Le validateur de scripts accepte actuellement on_projectile_hit pour les scripts de prop, mais le runtime ne transmet pas encore les impacts de projectile aux scripts de prop. Utilisez on_projectile_hit sur les objets pour le comportement des projectiles d'objets scriptés, ou l'API Bukkit ModeledEntityHitByProjectileEvent depuis un autre plugin.

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.