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
.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 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 :
| 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 une zone surveillée créée par script |
on_zone_leave | Un joueur quitte une zone surveillée créée par script |
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 |
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 :
| 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.