Aller au contenu principal

Objets personnalisés et armes magiques

FMM enregistre les objets tenus à partir des fichiers YAML de plugins/FreeMinecraftModels/models/. Un modèle peut avoir une définition .yml voisine portant le même nom de base. Les objets peuvent aussi conserver une apparence vanilla sans fichier .bbmodel.

Objets personnalisés​

Pour flame_blade.yml :

isEnabled: true
material: DIAMOND_SWORD
name: "&6Flame Blade"
lore:
- "&7Burns enemies on hit"
enchantments:
- "minecraft:fire_aspect,2"
- "minecraft:unbreaking,3"

Rechargez FMM, puis utilisez /fmm giveitem flame_blade. Cette commande nécessite freeminecraftmodels.admin. L'identifiant de l'objet est le nom de base du fichier en minuscules, pas son nom d'affichage. Utilisez des noms de base uniques dans tous les sous-dossiers.

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 LEATHER_. Les objets déjà présents dans les inventaires conservent leur ancienne couleur.

Un objet conserve le modèle d'affichage qu'il avait au moment de sa création. FMM ajoute le modèle d'affichage enregistré aux objets FMM qui n'en ont pas : à chacun de ces objets dans l'inventaire d'un joueur lorsqu'il se connecte, et aux objets qu'il tient en main après un changement d'emplacement actif, un échange de mains ou un ramassage. Cela corrige les objets distribués avant que leur modèle n'existe, comme des baguettes qui apparaissaient sous forme de simples bâtons de Blaze. Les objets qui désignent déjà un modèle ne sont pas modifiés.

Les enchantements doivent être des chaînes en minuscules au format namespace:id,level, avec un niveau entier strictement positif. Utilisez minecraft: pour les enchantements natifs, freeminecraftmodels: pour les effets FMM et elitemobs: pour ceux fournis par EliteMobs. Le fournisseur doit être installé et la définition disponible. Consultez les enchantements définis par les créateurs. Un objet qui porte un enchantement d'ensemble d'objets affiche les pièces de l'ensemble sur la ligne de lore qui contient $itemSet, ou après son lore si aucune ligne n'en contient.

Mise à jour du contenu d'objets

Les listes scripts: d'objets équipés et les entrées sans espace de noms telles que SHARPNESS,3 ont été retirées. FMM ignore ces définitions d'objets, indique la raison dans les journaux et laisse les fichiers inchangés. Les objets dont le matériau est indisponible sur le serveur sont également ignorés. Ces cas n'empêchent pas le chargement du reste du contenu.

Les scripts de props utilisent toujours scripts:. Les effets des objets utilisent enchantments:. N'ajoutez pas un ancien script d'objet à une nouvelle définition d'arme.

Baguette et bâton fournis​

FMM installe les fichiers par défaut manquants dans models/fmm_default_magic/. Si une définition existante de la baguette ou du bâton fourni ne contient pas weapon.type, FMM ajoute la déclaration WAND ou STAFF correspondante en conservant les autres paramètres :

Identifiant de l'objetMatériauCommandes
fmm_default_arcane_wandBLAZE_RODLe clic gauche tire un projectile avec aide à la visée
fmm_default_arcane_staffWOODEN_SPEARLe clic gauche porte un faible coup de mêlée ; le clic droit lance une boule de feu de zone

Obtenez-les avec /fmm giveitem <id>. Un simple bâton de Blaze ou une lance ordinaire ne devient pas une arme magique. Le bâton nécessite une version de serveur proposant WOODEN_SPEAR ; les définitions dont le matériau est indisponible sont ignorées.

Les deux armes sont fournies avec leur propre modèle et leur JSON de modèle d'affichage. La baguette est aussi fournie avec fmm_default_arcane_wand_particles.particle.json et sa texture : son animation held répète un effet scintillant autour de la gemme tant que la baguette est dans l'une ou l'autre main. Voir Particules. FMM ne copie que les fichiers manquants : un serveur qui possède déjà un .yml fourni modifié le conserve et reçoit les nouveaux fichiers de modèle.

La baguette recherche une cible devant elle, puis envoie un projectile qui se déplace vers elle. L'acquisition d'une cible ne garantit pas l'impact : le projectile doit l'atteindre et peut heurter des blocs. Les bâtons lancent des boules de feu plus lentes, avec un rayon d'impact.

Un tir de baguette applique brièvement Lenteur I pendant 20 ticks, sans remplacer un effet existant plus fort ou plus long. Les dégâts de la baguette suppriment leur propre recul natif. L'entité que frappe une boule de feu de bâton subit tous les dégâts de la boule de feu. Les autres cibles de l'explosion ont besoin d'une ligne de vue vers le point d'impact et subissent d'autant moins de dégâts que leur centre en est éloigné : de 100 % au point d'impact à 35 % au bord. L'embrasement ne suit que des dégâts acceptés et respecte l'événement de combustion.

Les coups magiques ignorent le délai de blessure vanilla : un éclair de baguette, une frappe de bâton ou une boule de feu touche donc une cible déjà frappée quelques instants plus tôt, par exemple par l'épée d'un membre du groupe. FMM rétablit ensuite le délai de la cible ; c'est le rechargement de l'arme elle-même qui limite la fréquence des coups magiques.

Frapper directement un mob avec une baguette ou un bâton compte comme l'attaque du clic gauche : FMM annule le coup de mêlée vanilla et exécute à la place l'attaque du clic gauche de l'arme. Les dégâts qu'un plugin applique au nom du joueur via le chemin de dégâts explicites de MagmaCore pendant qu'il tient une baguette ou un bâton, comme les dégâts d'enchantement d'EliteMobs, ne sont pas modifiés et ne déclenchent pas de sort. Cliquer pendant le temps de recharge de l'attaque joue un léger clic et ne fait rien d'autre.

Les temps de recharge commencent après le lancement réussi d'un sort ou d'une action de mêlée. Un rechargement de contenu suspend les nouveaux sorts pendant la reconstruction des définitions ; les projectiles déjà lancés conservent l'arme et les modificateurs capturés à leur lancement. Le retrait du résolveur de combat enregistré annule les projectiles en vol pour qu'ils ne changent pas de règles de combat pendant leur trajet.

Définir une arme magique​

Ajoutez une section weapon à une définition d'objet ordinaire :

isEnabled: true
material: BLAZE_ROD
name: "&dArcane Wand"
weapon:
type: WAND
enchantments:
- "freeminecraftmodels:multicast,1"

type doit être WAND ou STAFF. Les paramètres omis prennent les valeurs suivantes :

ParamètreBaguetteBâton
projectileSpeed0.720.48
range1828
travelTicks2474
impactRadius02.75
aimAssistDegrees450

Le cône d'acquisition par défaut de la baguette s'étend sur 45 degrés de chaque côté de sa direction de visée. aimAssistDegrees accepte les valeurs de 0 à 180. Le rayon peut être nul ; la vitesse et la portée doivent être des nombres finis strictement positifs, et la durée de trajet doit être un entier strictement positif.

AttaquebasePowerreloadTicks
WAND_MISSILE0.67211
STAFF_MELEE0.4512
STAFF_FIREBALL1.2540

La section facultative weapon.attacks doit contenir exactement les clés d'attaque de ce type d'arme, avec les deux champs pour chaque attaque :

weapon:
type: STAFF
attacks:
STAFF_MELEE:
basePower: 0.45
reloadTicks: 12
STAFF_FIREBALL:
basePower: 1.25
reloadTicks: 40

Les champs d'arme inconnus et les valeurs mal formées sont rejetés. basePower est un facteur de dégâts interprété par le résolveur de combat ; il ne garantit pas une quantité équivalente de points de vie retirés.

Enchantements magiques​

IdentifiantRôle
freeminecraftmodels:multicastProjectiles supplémentaires avec des dégâts ajustés par projectile
freeminecraftmodels:blast_radiusModificateur du rayon d'impact de la boule de feu du bâton
freeminecraftmodels:ignitionEnflamme les cibles survivantes après une boule de feu de bâton

Leurs fichiers YAML et Lua se trouvent dans plugins/FreeMinecraftModels/enchantments/. Le catalogue fourni contient aussi des effets pour les objets des packs de contenu. Installer une définition d'effet ne donne pas à lui seul l'objet correspondant ni son pack de modèles aux joueurs.

Les ensembles d'objets portés par le lanceur fonctionnent aussi avec les baguettes et les bâtons tant que toutes les pièces sont portées. Les modificateurs de lancer d'un ensemble comptent une fois par lancer. Lorsqu'un coup magique touche, le hook on_attack_entity de l'ensemble s'exécute pour une frappe de bâton et son hook on_projectile_hit pour un éclair de baguette ou une boule de feu.

Intégration EliteMobs​

Lorsqu'il est installé, EliteMobs gère l'ajustement des combats d'élite et l'attribution aux compétences. FMM gère l'identité de l'arme, les commandes du joueur, le trajet du projectile et la demande d'impact. EliteMobs peut refuser un sort ou un impact si l'arme ou l'état du combat est invalide.

Le [Alpha] Advanced Combat System utilise les bâtons et baguettes FMM pour Spellcaster. Les capacités de classe et les attaques d'armes magiques utilisent des commandes distinctes. La validation d'une capacité de classe avec la touche F ne doit pas également lancer un sort de l'arme tenue.

Pour distribuer les packs, régénérez la sortie de FMM et laissez ResourcePackManager la fusionner et la distribuer. L'enregistrement d'une arme ne prouve pas à lui seul qu'un client a téléchargé son modèle.