• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Créer un content pack pour flan's mod en 1.7.10

    Tutoriels des membres
    1
    1
    202
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • A
      Aegirios dernière édition par

      Introduction

      J’ai remarqué qu’il manquait(ou qu’il n’y avait pas est plus correct) de tutoriel concernant la création de content pack pour flan’s mod.
      Du coup, pour mon propre usage mais aussi celui des autres, j’ai beaucoup cherché, décompilé des centaines de content packs flan’s mods et comme je suis en plus un piètre codeur java, je pensais que la tâche allait être pratiquement impossible.
      Enfaîte, je me suis rendu compte que créer un content pack pour flan’s mod est plutôt simple et j’aimerais vous partager ce que j’ai réussi à faire avec flan’s mod.

      Oui, je sais aussi que créer un content pack pour flan’s mod n’est pas vraiment du modding au sens minecraftien du terme étant donné qu’on passe plus de temps à éditer du txt que du java MAIS selon la définition de wikipédia(Modding est une expression d’argot dérivée du verbe anglais “modifier”. Le terme fait référence à la modification du matériel, des logiciels ou de toute autre chose, pour exécuter une fonction non prévue à l’origine par le concepteur, ou pour obtenir des spécifications ou une apparence sur mesure.) le modding est simplement l’action de “modifier”, dans le langage du jeu vidéo, le modding, c’est ajouter des fonctionnalités à ce même jeu!
      Finalement, avec un content pack minecraft, on créé aussi un mod… Mais oui, notre mod, il ajoutera des avions, des tanks, des armes… Simplement, l’API Flan’s Mod nous permet de le coder en txt.
      Même si Flan’s utilise Forge, finalement, il est comme lui, il permet à d’autres mods de fonctionner.
      Donc, oui, un content pack pour Flan’s Mod, c’est du modding, et c’est aussi du modding forge.

      Un petit mot, aussi, malheureusement, le développeur(ou plutôt le groupe de développeurs) qui se chargeaient du programme de Flan’s mod ont visiblement abandonné le projet et considéré que la communauté pouvait se débrouiller pour créer les content pack donc on ne trouvera aucun tutoriel officiel de Flan’s Mod sur la création de content pack.

      Dans ce tutoriel, on verra donc comment créer des avions, hélicoptères, armes, box, munitions, team et en général tout ce qu’on peut raisonnablement faire avec Flan’s.

      Sommaire du tutoriel

      • Pré-requis
      • les bases
      • les armures et cosmetics
      • Les armes
      • Les munitions
      • Les améliorations
      • Les boxes
      • Les grenades et bombes
      • les “parts”
      • Les mechas
      • Les véhicules
      • les avions
      • les ressources
      • Le Java
      • Résultat
      • Licence et attribution

      Pré-requis

      • Avoir un navigateur internet
      • Avoir Minecraft
      • Avoir une RAM suffisante pour faire tourner Flan’s(et je sais de quoi je parle)

      Créer l’environnement de travail

      Si vous avez eu l’immense courage de lire toute la longue introduction ou je me justifiais de poster ce tutoriel, vous savez qu’on ne vas pas faire beaucoup de java(y’en a qui commencent à sauter de joie, je les vois même depuis ici).
      Bon, du coup, on vas s’y mettre tout de suite…
      Il va, dans un premier temps, falloir créer un dossier(sur le bureau, par exemple).
      On nommera ce dossier suivant le nom que vous voulez attribuer à votre content pack(par exemple, bah… “Exemple” 😁 )
      Ensuite, dans ce dossier, on va créer un fichier “pack.mcmeta”.
      Il sert pas à grand chose, sinon à donner des infos sur votre pack(certains content packs s’en passent même).
      Donc, dans ce pack, on va mettre ce “code”:

      {
          "pack": {
              "pack_format": 1,
              "description": "Le nom de votre pack"
          }
      }
      

      Et… on peut fermer le fichier pack.mcmeta .
      On va ensuite créer plusieurs dossier qui vont plus tard dépendre de vos besoins(pour l’instant, on va tout mettre).
      Alors là, je ne vais vous citer que les noms de dossiers que j’ai croisés dans mes fous décompilages de content packs. Je sais tous à quoi ils servent mais vous n’aurez pas besoin de certains et je pourrais en omettre d’autres. La plupart sont explicites avec leurs noms.

      armorFiles Il contiendra les txt des armures/cosmetics de votre content pack.

      assets ⚠ OBLIGATOIRE ⚠ Ce sera dans ce dossier qu’on mettra les ressources de votre pack(modèles, sons…)

      attachments Ce dossier aura l’extrême honneur de contenir les extensions pour les armes(viseurs, et tout les trucs que vous inventerez(ou pas))

      boxes Si vous avez des trucs à crafter, désolé, mais ce dossier sera obligatoire. C’est ici qu’on aura toutes les tables de crafts spéciales de Flan’s Mod(vous savez, celles sur lesquels on crafte les armes)

      bullets Les munitions qui seront utilisés par vos armes(les fichiers auront généralement un nom incompréhensible pour les non-inités, genre 20rnd5.7x28.txt).

      classes Les pros du java se disent Ah, on va enfin rentrer dans le vif du sujet(même si les fichiers seraient placer bizarrement)… Eh non! Enfaîte, dans ce dossier, y’aura juste les noms des classes de personnages(pour les serveurs rp ou les deathmatchs avec les teams).

      com Cette fois, c’est la bonne! Bien plus loin, on éditera le dossier com et, je vous le promet, on fera (un tout petit peu) de java!

      grenades Alors là, le mot, en plus d’être transparent, est hyper-explicite, y’aura les grenades et autres engins explosifs(y’a les petits malins qui font tout sauter à la tnt qui me regardent avec des yeux brillants, là).

      guns Eh oui, c’est ici qu’on mettra les armes à feu. Pour tout vous dire, c’est un peu le dossier qu’on utilise le plus.

      parts Alors, ce dossier va servir à tout… et à rien. C’est en gros, les éléments qui peuvent servir à la fabrication d’objets(genre cockpit pour les avions, ailes pour les avions encore une fois, roues pour les avions ou les voitures… En général, à notre niveau, on ne l’utilise pas trop.

      teams Le dossier teams va servir à définir les équipes, les factions ou plutôt les armées qui vont s’affronter sur le champ de batailles. On va lier à chaque faction des classe(qu’on a définir plus haut).

      vehicles Les véhicules. C’est hyper global, c’est à dire que ça va de la petite Toyota hybride au gros tank de champ de bataille.

      planes Bah… les avions et les hélicos, quoi!

      tools des items un peu hors-catégorie. On utilisera pas le dossier tools dans ce tuto.

      mechas Les bons gros mechas! Ceux qui font peur à tout le monde!

      mechaItems Tout les items qu’on peut mettre aux mechas

      Bon! On a fait le tour de tout les dossiers que vous allez devoir créer(au travail, bande de gros fainéants) et utiliser.
      On passe à la création

      Dossiers

      Bien sur, tout les dossiers ne serviront pas(sauf si vous voulez créer le content pack le plus complet de flan’s), mais je ne veux exclure aucune possibilité de création dès le début du tutoriel donc vous zapperez simplement les catégories qui ne vous intéressent pas.
      On fera les fichiers java et modèles à la fin du tutoriel.

      Les armures et cosmetics

      Allez, on commence sans attendre avec le vif du sujet vu qu’on va(enfin) commencer à créer nos items!

      Attention

      J’ai essayé de faire comme j’ai pu mais les armorFiles sont hyper mal renseignés et vous allez devoir faire des tests sur les différentes options des armures ou tout mettre à zéro si vous voulez qu’elles soient juste cosmetics(comme les équipement militaires, même si, je sais, ils ont un gilet pare-balle).

      Alors, tout d’abord, on va aller dans le fichier armorFiles qu’on a créé précédemment et on va créer un fichier avec le nom de votre armure.
      On va devoir, la créer par étape(vous savez, comme quand vous équipez votre personnage en diamant: le plastron, le casque, les jambières, les bottes…).
      Je vais tout résumer en un seul fichier(l’extension de fichier est au fait le txt).

      Fichiers

      Vous allez devoir renseigner à chaque fois un name, le nom de l’item, que l’utilisateur verra et un shortname, sans espace ni rien. Je vous conseille pour ne pas vous perdre de mettre le shortname en nom de dossier. Ce sera plus pratique si vous devez le chercher!

      Name Nom de mon Objet
      //C'est le nom de votre objet que l'utilisateur verra!
      ShortName prefixe.name
      //c'est le nom qu'on utilisera en java
      ItemID 
      //l'id de l'item. Vérifiez avant que l'id n'est pas déjà attribué.
      Icon prefixe.iconnomitem
      //comme pour le champ texture(expliqué plus bas) mais avec icon devant le nom de l'armure. Ce sera l'icône qui s'affichera dans l'inventaire utilisateur.
      Colour 255 255 255
      //laissez comme ça, ça ne sert à strictement rien de le modifier.
      Type 
      //marquez après type: Helmet si c'est un casque, Chest si c'est un plastron, Legs si ce sont des jambières, Boots si ce sont des bots et enfin Hat si c'est un chapeau ou un truc comme ça.
      Defence 0.0
      //la qualité de la défense de votre armure
      ArmourTexture prefixe.nomitem
      //si votre pack s'appelle exemple content pack, vous pourriez mettre ecp.lenomdelarmure (par exemple, si je veux un casque pour un soldat français, je pourrais mettre ecp.frenchhelmetsoldier)
      

      Vous pouvez également rajouter ces paramètres(que vous connaissez bien) sur ces armures:

      MoveSpeedModifier 0.0
      //si l armure rend plus rapide
      JumpModifier 0.0
      //si l'armure permet de sauter mieux
      KnockbackReduction 0.0
      //si l'armure atténue le recul
      NightVision false
      //peut être changé en true si l'armure permet de voir de nuit(lunettes de vision nocturne en type helmet, par exemple...)
      NegateFallDamage 0.0
      //si l'armure atténue les dégats de chute(je crois)
      Overlay 
      //malgré d'intenses tests et plusieurs dizaines de tests avec plusieurs content pack, je n'ai PAS TROUVE à quoi servait ce paramètre. SI quelqu'un pouvait le dire dans les commentaires siouplait...
      SmokeProtection false
      //Je suppose qu'il doit s'agire de la protection contre la fumée... peut donc être changé en true si l'armure protège de la fumée
      Durability 32000
      //ça vous connaissez... c'est la durée de vie de l'armure. Par contre, je serais incapable de dire c'est en quelle unité(j'ai peur de dire une grosse mouise mais j'ai quand même ma petite idée)...
      

      Bon! Vous pouvez créer autant d’armures que cela vous chante pour chaque partie du corps qui vous chante! Ensuite, on passe aux “guns”.

      Armes

      Sans doute une des parties qui vous plait le plus… les armes!
      On va imaginer que je vais créer un AK-47 custom et donc je rentrerai dans la partie “code” les infos sur cet AK-47 avec des instructions sur leurs significations.
      On va créer ce fichier dans le dossier guns.
      Le nom de ce fichier serait donc custom_ak47.txt .

      Name Mon AK47 Custom
      //Mettez le nom que vous voulez
      ShortName AK47custom
      //version courte du nom sans espace
      Ammo AK47customammo
      //version courte du nom de la munition
      Icon AK47custom
      //l'icône qui apparaitra dans l'inventaire et l'inventaire créatif
      Colour 255 255 255
      //ça, on s'en fiche
      ReloadTime 10
      //temps de chargement en ticks
      Recoil 1
      //le recul que l'ennemi subira.
      Knockback 0.5
      //la quantité de recul que vous subirez en utilisant l'arme
      Damage 10
      //Les dommages que l'arme provoquera en demi-coeurs
      Accuracy 0
      //Plus la valeur sera grande, plus les balles se répendreront(attention, la véritable phrase en anglais est //The higher this value, the more the bullets spread.
      //Spread a une bonne vingtaine de sens et j'ai choisi celui qui me paraissait le plus approprié mais ça peut ne pas être ça dans la mesure ou je n'ai jamais utilisé l'accuracy avec Flan's Mod.
      ShootDelay 5
      //Temps en ticks entre les tirs
      NumBullets 1
      //le nombre de balles que le fusil peut contenir
      ShootSound RocketFire2
      ReloadSound BrowningReload
      //le son que l'arme jouera quand vous tirerez(shootsound) et quand vous rechargerez(reloadsound)
      Mode FullAuto
      //Le mode de tir(FullAuto, Auto, SemiAuto, Manual...)
      BulletSpeed 5
      //rapidité des balles. Par défaut à 3
      Scope None
      //si l'arme a un viseur spécial(comme le sniper)
      ZoomLevel 1.0
      //niveau de zoom si vous visez avec l'arme
      FOVZoomLevel 1.0
      //Rapport entre le champ de vision et le zoom
      Deployable False
      DeployedModel None
      //paramètres de déploiement
      AllowAllAttachments false
      //Sur true, toutes les améliorations seront applicables
      //Enlevez les // de la ligne ci-dessus si l'arme peut avoir des améliorations spéciales. nottez leurs "shortnames" en mettant un espace entre chacun d'eux.
      //AllowAttachments 
      //les paramètres ci-dessous vous permettront d'accepter toutes les améliorations d'un certains type sur une arme. Nous verrons les types d'améliorations lorsque nous ferons le dossier amélioration. Vous pourrez alors revenir sur ce fichier pour modifier les informations précédentes.
      AllowBarrelAttachments false
      AllowScopeAttachments false
      AllowStockAttachments false
      AllowGripAttachments false
      
      NumGenericAttachmentSlots 1
      //combien d'améliorations votre arme peut elle comporter au maximum
      MoveSpeedModifier 0.4
      //modification de la vitesse par l'arme
      KnockbackModifier 0
      //le recul
      usableByMechas false
      //si cette arme peut être utilisée par des mechas
      usableByPlayers true
      //si elle peut être utilisée par des joueurs
      

      Voilà! Vous savez maintenant comment créer des armes sur flan’s mods. Vous saurez bientôt comment créer des munitions parce que les deux sont liés!

      Munitions

      Ah, les munitions! C’est en effet obligatoire, sauf si vos armes sont de la déco, mais bon…
      Alors, terminé de se tourner les pousses, ça risque d’être un tout petit peu plus complexe.
      On change donc de dossier et on va dans celui qu’on a nommé “bullets”.
      On créer un nouveau fichier qu’on va nommer du nom du shortnames qu’on a donné dans le fichier de l’arme!
      Oui, vous vous souvenez(j’espère)! Le paramètre ammo!
      Si vous avez oublié, allez le chercher et on va le mettre en nom de fichier, vu que par convention que j’ai moi même décidé, on met les shortnames en nom de fichiers.
      Donc, voyons maintenant le code:

      Name Munition du AK47 custom
      //Pour le nom, je conseille de mettre "munition du AK-47 custom" au lieu de mettre "7,62 × 39 mm M43" qui est une des véritables munitions d'un AK-47
      ShortName AK47customammo
      //du coup; lui vous le connaissez déjà(normalement)
      Model Bullet
      //je conseille de pas se perdre avec des centaines de modèles de munitions différents, on en prend qu'un vu qu'avec la vitesse des balles dans minecraft, on voit à peine le model.
      Colour 255 255 255
      //on laisse le modèle comme ça, comme d'hab
      Icon AK47customammo
      //L'icône que l'utilisateur verra dans le GUI
      FallSpeed 0.25
      //Bon, comme vous le savez(ou pas), quand on tire une balle dans un endroit vide, avec personne en face, la balle continue tout droit, tout droit, et un moment son énergie se perd et la gravité va(enfin) avoir de l'effet sur elle. C'est ce que ce paramètre calcule.
      MaxStackSize 20
      //taille maximale du stack de balle
      RoundsPerItem 45
      //je sais toujours pas. SI quelqu'un a une idée...
      Damage 1
      //bon bah, les dommages que la balle cause en touchant une entité
      //Si la balle explose en touchant une cible(on voit ça plus bas) il faut déterminer la taille de l'explosion. Ici la balle n'explose pas donc 0
      Explosion 0
      ExplodeOnImpact False
      //Si la balle explose en touchant quoi que ce soit
      Fuse 0
      //Si, au bout d'un certain moment en l'air sans rien toucher la balle doit exploser, c'est ici(0 pour n'explose jamais)
      FlakParticles 0
      //Je ne pourrai pas vous dire à quoi ce paramètre sert.
      Fire 0
      //Si la balle explose, elle brulera des élément autour. Pour chaque incrément(+1) les dimensions de la zone de combustion augmentent de 2(1 = carré de 3*3 brûlé, 2 = carré de 5*5)
      
      BreaksGlass True
      //si la balle brise ou non le verre(pour plus de réalisme, je vous conseille de mettre true à chaque fois(sauf si c'est du verre blindé)
      HitBoxSize 0.1
      HitSound bullet
      //le bruit de la collision(on utilisera le même à chaque fois)
      Penetrates True
      //si la balle peut traversée une entité qu'elle a touchée
      SmokeTrail False
      //si la balle à une traînée de fumée derrière elle.
      

      Pour tout ce qui est sons et tout, je vais vous mettre un lien en fin de tutoriel vers une bibliothèque de son que je vous aurai moi-même concocté avec les “officiels” de flan’s mod.

      Bon! Une bonne grosse chose de fait. A juste, si vous voulez otimiser votre mod, n’oubliez pas qu’une balle peut servir à plusieurs armes. Par contre, évitez les fusils à deux balles(on notera le jeu de mot de qualité extrême).

      Les améliorations

      Okay! On va se diriger tout droit vers le dossier attachments pour commencer à créer les améliorations.
      On s’attardera pas trop sur ce chapitre parce qu’il est pas super intéressant et le tutoriel commence déjà à être hyper long.
      Bon, je vais donc créer un silencieux que je vais humblement appeller “supressor”.

      Name Supressor
      ShortName supressor
      ItemID 
      Icon supressor
      //vous commencez à connaître la chanson...
      AttachmentType barrel
      //le type d'améliorations définit quelle place il prend dans l'arme. Scope est un viseur, barrel un baril, stock désigne les réserves de balles supplémentaires et grip se fixe au niveau de la prise
      Silencer true
      //pour être un silencieux, le type d'attachment doit être barril. Je mettrai à la fin de ce chapitre les améliorations courantes et leurs types.
      MeleeDamageMultiplier 1.0
      DamageMultiplier 1.0
      SpreadMultiplier 1.0
      RecoilMultiplier 1.0
      BulletSpeedMultiplier 1.0
      ReloadTimeMultiplier 1.0
      //Ces paramètres multijoueurs communiquent entre eux. Si vous tirez sur un joueur, le damage multiplier envoyé par vous via la balle arrivera au joueur via cette balle. Vous êtes capable de lire l'anglais, je ne vous décrit pas les paramètres...
      
      ZoomLevel 1.0
      FOVZoomLevel 1.0
      // Le ZoomLevel affecte le degré de zoom de la vue (notez que cela supprime le modèle de l'animation de zoom et est donc inutile pour les viseurs en fer)
      // Le FOVZoomLevel affecte le degré de rétrécissement de la vue lors du zoom. Très utile pour les viseurs en fer car il donne l'illusion de zoomer sans tuer le modèle
      ZoomOverlay None
      //Ces paramètres sont utiles seulement si l'amélioration est un "scope".
      //Model
      Model Supressor
      Texture Suppressor
      //vous connaissez la chanson...
      

      Bon! C’était compliqué(surtout pour moi) mais comme promis, on passe rapidement à la suite.

      Les boxes

      Bon, vous avez l’habitude! On va dans le dossier des boxes et on créer un nouveau fichier! On va l’appeler gunbox1.

      Name Ma première gun box
      ShortName gunbox1
      TopTexture gunbox1_top
      SideTexture gunbox1_size
      BottomTexture boxBottom
      GunBoxID 30001
      Recipe I ingotIron S gunpowder
      III
      ISI
      SII
      //okay donc... Cette gunbox se crafte avec du minerai de fer et de la poudre avec trois fer en haut, un fer à gauche au milieu, un gunpowder au milieu et un fer à droite. Vous avez compris le truc, c'est pareil pour la dernière ligne. C'est donc le craft de votre boîte.
      //AddGun shortName amountOf item
      //AddAmmo must come immediately after AddGun for them to be in the same slot
      //The names of the items / blocks are those in the code, with some exceptions such as iron (ingotIron) and gunpowder (sulphur)
      //And with parts from this mod, they are the shortName of the item
      //Guns cannot yet have multiple ammo types in the same slot. For now, just list them under two seperate guns that are the same
      //NumGuns must come before all the addGun lines and must be correct.
      //je laisse les instruction anglaises originelles vu que je suis sadique. C'est juste que je peux faire une erreur d'interprétation et vu que c'est hyper important les descriptions et tout, je les laisse tel quel.
      NumGuns 1
      AddGun AK47custom 1 gunpowder 1 paper
      AddAmmo AK47customammo 1 gunpowder 1 paper
      

      Pfiu! Comme vous avez pu le remarquer, les box, c’est pas des partie de plaisir!
      Bon! On passe aux grenades… 💥

      Les grenades et bombes

      Bon, on va cette fois dans le dossier grenades(un tout petit peu logique 🤔 )
      Et… on va créer encore une fois un fichier txt.
      Alors, voyons le “code”…

      Name C4
      ShortName c4
      Description Sticky true_StickToEntity false_StickToEntityAfter false_Explosion 4_ExplosionDamageVsLiving 0.30_ExplosionDamageVsPlayer 0.30_ExplosionDamageVsPlane 35.0_ExplosionDamageVsVehicle 35.0
      //toutes les descriptions de ses effets(on a donc un c4 qui colle aux entités, et on voit les dommages qu'il fait aux véhicules ou entités.
      Icon C4
      //l'icône
      Colour 255 255 255
      //on y touche pas
      ItemID 10000
      Description 
      StackSize 2
      //ça, vous connaissez(déjà décrit)
      Model c4
      //le modèle...
      Texture c4
      //la texture
      TrailParticles false
      //TrailParticleType <particleType>
      //on l'aurait mis si trail particles était sur true
      ExplodeParticles 0
      //ExplodeParticleType <particleType>
      SmokeTime 0
      //SmokeParticleType <particleType>
      //bon, c'était les caractéristiques de particules et tout. C'est pour le visuel, c'est cool, mais c'est inutile donc je passe. On veut savoir les bases et pas comment faire un modern warfare II
      SpinWhenThrown true
      //encore le style(cette fois si ça tourne quand on le jette
      ThrowDelay 30
      //ThrowSound <sound>
      //DropItemOnThrow <itemID.damage>
      ////Physics
      DetonateOnImpact false
      Bounciness 0.1
      HitEntityDamage 0
      ThrowSpeed 0.75
      FallSpeed 2.50
      BreaksGlass false
      PenetratesBlocks false
      HitBoxSize 0.5
      Sticky true
      StickToEntity false
      StickToDriveable true
      StickToEntityAfter false
      AllowStickSound true
      StickSoundRange 10
      StickSound SVT40_reload3
      //BounceSound <sound>
      ////Detonation conditions
      VehicleProximityTrigger -1.0
      LivingProximityTrigger -1.0
      Fuse 32000
      DetonateWhenShot true
      Remote true
      DespawnTime 0
      PrimeDelay 40
      ////Detonation
      FireRadius 0.0
      ExplosionRadius 4.0
      ExplosionDamageVsLiving 0.30
      ExplosionDamageVsPlayer 0.30
      ExplosionDamageVsPlane 35.0
      ExplosionDamageVsVehicle 35.0
      ExplosionBreaksBlocks false
      //DropItemOnDetonate <itemID.damage>
      DetonateSound explcls2
      ////Misc
      MeleeDamage 1
      

      Vous l’aurez remarqué, j’ai passé cette fois la plupart des lignes. Il y a toujours les infos de base en anglais, ça devrait vous suffire. La plupart des mots, on les a déjà vus avant et c’est assez explicite.

      Les parts

      Pour les parts, je vous mettrai uniquement un fichier texte. C’est hyper optionnel et la plupart du temps, les content packs utilise les parts de simple parts.
      J’ai pas envie de passer du temps dessus(et vous non plus 😁 ) donc je ne commenterai pas le texte.

      Name Parts_Seat
      ShortName parts_seat
      Icon 4876_Parts_Seat
      //Colour in Red, Green, Blue, each going up to 255.
      Colour 255 255 255
      ItemID 10017
      //Categories are Cockpit, Wing, Engine, Propeller, Bay, Tail, Wheel, Chassis, Turret, Misc
      Category Misc
      StackSize 64
      RecipeOutput 2
      Recipe I iron L leather
      // LI
      //LLI
      //III
      

      C’est une parts qui vient de Mo’s pack.
      Le code est bien détaillé donc vous devrez vous en sortir si vous voulez absolument les parts. On va passer aux mechas!

      Les Mechas

      Pour les mechas, on va travailler sur deux dossier, le dossier mecha et mechaItems.

      Name Mon Mecha trop Badass
      ShortName mechabadass
      //a force, vous connaissez
      Icon mechabadass
      Model mechabadass
      Texture mechabadass
      //vous connaissez toujours la chanson
      CameraDistance 10.0
      //Pour conduire un mecha, la camera passe en 3ème personne. On va donner la distance de la caméra.
      Driver 0 48 0
      Passengers 0
      //Position du conducteur et des passagers
      RotatedDriverOffset 0 0 0
      //Décalage du conducteur par rapport au point de rotation
      MoveSpeed 2.0
      //Modification de la vitesse(1 est la vitesse du passager)
      YOffset 0
      //Décalage sur l'axe y
      FuelTankSize 20000
      //taille du réservoir du mechas
      CargoSlots 48
      //slots de l'inventaire du mecha
      RotateSpeed 40
      //la rapidité avec laquelle le mecha réagit à un changement de direction
      SquashMobs true
      //si il écrase les mobs ou non
      StepHeight 2
      //hauteur de pas
      JumpHeight 2.5
      //hauteur de sauts
      LeftArmOrigin 0 80 -32
      RightArmOrigin 0 80 32
      //Origines du bras utilisées pour faire pivoter les modèles de bras et calculer la position de l'élément/outil tenu (positions dans les coordonnées du modèle)
      ArmLength 44
      LegLength 16
      //longueur des bras: utilisée pour définir ou les items apparaîtront ils
      HeldItemScale 1
      //laissez comme cela ce paramètre
      
      AddRecipeParts core 1 mediumDiamondBody 1 vehicleSeat
      AddRecipeParts leftArm 1 mediumDiamondArm
      AddRecipeParts rightArm 1 mediumDiamondArm
      AddRecipeParts hips 2 mediumDiamondLeg
      // Chaque section du mecha peut avoir plusieurs parties
      // Les sections sont core, leftArm, rightArm, hips, head
      AddDye 5 black
      AddDye 1 purple
      Add Dye 1 blue
      // Les couleurs de teinture sont "noir", "rouge", "vert", "marron", "bleu", "violet", "cyan", "argent", "gris", "rose", "citron vert", " jaune", "bleu clair", "magenta", "orange", "blanc"(à traduire en anglais, bien sûr!)
      SetupPart core 400 -24 48 -24 48 48 48
      SetupPart leftArm 60 -8 72 -48 32 16 16
      SetupPart rightArm 60 -8 72 48 32 16 -16
      SetupPart hips 200 -16 0 -16 32 48 32
      //Santé et collision
      BulletDetection 8
      Height 96
      Width 56
      //longueur et largeur pour définir les collisions avec les autres objets
      ChassisHeight 42
      //taille du châssis depuis le sol
      FallDamageMultiplier 2.0
      //le nombre de dégâts que le mecha prend en cas de chute.
      TakeFallDamage true
      //si il prend ou non les dommages de chute
      BlockDamageFromFalling 2.0
      //la taille de l'explosion que le mecha créé en tombant
      DamageBlocksFromFalling false
      //Si le mecha provoque une explosion ou endommage le sol en tombant
      ModelScale 2
      //multiplicateur de taille. Ce paramètre agrandit le modèle.
      

      On a vu la création des mechas et on va maintenant passer à la création d’Items pour ces même mechas!
      On va donc aller dans le dossier mechaItems et créer un nouveau fichier texte dans lequel on mettra ceci(je n’apprends qu’à créer un auto-refueler, pour les autres items, vous pouvez simplement extraire le fichier jar du content pack “Titan Content Pack” et aller voir dans la catégorie mechaItems les items que vous souhaitez):

      Description Uses vacuumed coal to_refuel the mecha
      //Description du texte de survol. Les traits de soulignement représentent de nouvelles lignes.
      ShortName mechaautorefueler
      Icon autorefueler
      Colour 255 255 255
      //comme d'hab
      RecipeOutput 1
      Recipe C coal D dispenser
       C 
      CDC
       C 
      //la recette de l'item
      Type upgrade
      //le type d'item, ça peut être: upgrade, tool, armUpgrade, legUpgrade, headUpgrade, shoulderUpgrade ou hipsUpgrade
      AutoFuel true
      //les modifications que l'itemapplique au mecha
      

      Bon voilà, c’est fini pour les mechas! On passe au chapitre suivant!

      Véhicules

      Alors, les véhicules dans Flan’s comprennent aussi bien les bateaux que les tanks comme les véhicules civils. On verra donc un tank, un bateau et un véhicule civil. Je ne décrirai le code que du véhicule civil. Le bateau vient du Mo’s pack et le tank est aussi du Mo’s pack.
      Allez, vous connaissez la chanson, on se retrouve sur le code / / / / /

      // ------------------------------------------------------ Noms ------------------------------------------------------
      Name BMW r75
      ShortName bmwr75
      ItemID 12000
      Description MAX HP:40_CargoSlots 4_Sound Horn
      //différents paramètres comme les points de santé, les slots du Cargo et les sons.
      // ------------------------------------------------------ Visuals ------------------------------------------------------
      Icon bmwr75
      Model bmwr75
      Texture bmwr75
      RotateWheels True
      //si la roue tourne ou non dans le jeu
      CameraDistance 7.5
      //comme sur le mecha, vous ne contrôlez pas directement le véhicule. On crée une nouvelle caméra en 3ème personne à une certaine distance définie ici
      // ------------------------------------------------------ Movement ------------------------------------------------------
      MaxThrottle 1.4
      //accélération
      MaxNegativeThrottle 0.4
      //vitesse minimale
      TurnLeftSpeed 0.80
      TurnRightSpeed 0.80
      //la vitesse à laquelle vous tournez
      WheelRadius 0.5
      //Avec ça, on va vérifier à chaque fois que les roues touchent bien le sol.
      WheelPosition 0 -28 -8 -20
      WheelPosition 1 -28 -8 20
      WheelPosition 2 32 -8 20
      WheelPosition 3 32 -8 -20
      //Position des roues pour les collisions. On considère les tanks comme ayant également quatre roues car on ne considère que leurs roues de coin.
      WheelSpringStrength 0.5
      //force du ressort de la roue.
      FourWheelDrive true
      //Si c'est sur true, la vitesse sera calculée via la force des quatre roues
      Tank false
      //sur true, le véhicule est un tank
      // ------------------------------------------------------ Weaponry ------------------------------------------------------
      //Weapon types. Options are Missile, Bomb, Gun, Shell, None
      Primary None
      Secondary None
      PlaceTimePrimary 160
      ShootDelayPrimary 40
      ReloadTimePrimary 40
      PlaceTimeSecondary 160
      ShootDelaySecondary 40
      ReloadTimeSecondary 40
      //temps entre les shoots en ticks
      AlternatePrimary False
      AlternateSecondary False
      //si les armes tirent simultanément ou en alternance.
      ModePrimary FullAuto
      ModeSecondary FullAuto
      //Mode de tir. Vous connaissez(SemiAuto, FullAuto, Minigun...)
      ShootPointPrimary 12 8 0 core
      ShootPointSecondary
      ShootParticlesPrimary note 0 1 0
      ShootParticlesPrimary note 0 2 0
      //origine du tir depuis le véhicule
      // ------------------------------------------------------ Inventory ------------------------------------------------------
      CargoSlots 4
      //slots sur le cargo
      BombSlots 0
      //slots pour les bombes
      MissileSlots 1
      //slots pour les missiles
      AllowAllAmmo False
      //est ce qu'on autorise tout les types de munitions
      AddAmmo AK47customammo
      //On dit quelles munitions sont utilisables.
      FuelTankSize 1000
      //taille du réservoir de fuel d'un tank(1 point de carburant maintiendra une hélice en marche avec l'accélérateur à 1 pour 1 tick)
      // ------------------------------------------------------ Passengers ------------------------------------------------------
      Driver 0 2 0
      RotatedDriverOffset 0 0 0
      Passengers 1
      Passenger 1 -12 7 0 core -360 360 -89 89 dummygun DummyGun
      //déjà vu avec les mechas
      // ------------------------------------------------------- Sounds -------------------------------------------------------
      StartSound BMW_R75_IdleSound
      StartSoundLength 86
      EngineSound BMW_R75_EngineSound
      EngineSoundLength 40
      StartSoundRange 50
      EngineSoundRange 50
      BackSoundRange 50
      BackSoundLength 
      BackSound 
      PlaceSoundPrimary BMW_R75_PlaceSound
      ShootSoundPrimary horn
      ReloadSoundPrimary PG_reload
      PlaceSoundSecondary None
      ShootSoundSecondary None
      ReloadSoundSecondary None
      //les sons. Normalement, vous devrez les trouver dans le flan's officiel
      // ------------------------------------------------------ Recipe ------------------------------------------------------
      AddRecipeParts turret 1 parts_smallchassis 2 parts_smallwheel
      //les parts qu'on ajoute à la voiture
      //Dye colours are "black", "red", "green", "brown", "blue", "purple", "cyan", "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white"
      //AddDye 0 gray
      // ------------------------------------------------------ Health and hitboxes ------------------------------------------------------
      SetupPart core 40 -19 -10 -6 46 34 12
      BulletDetection 5
      SquashMobs false
      BrakeSound Truck_Stop
      BrakeSoundRange 10
      BrakeSoundLength 120
      IsExplosionWhenDestroyed true
      PlaceableOnLand true
      PlaceableOnSponge true
      CollisionDamageEnable true
      CollisionDamageThrottle 0.50
      CollisionDamageTimes 5
      //déjà vu sur les mechas
      

      Je vous met maintenant le tank(non commenté):

      // ------------------------------------------------------ Naming ------------------------------------------------------
      Name LightTank_CardboardTank
      ShortName lighttank_cardboardtank
      ItemID 11019
      Description MAX HP:30_Renault FT-17 Shell[AP]
      // ------------------------------------------------------ Visuals ------------------------------------------------------
      Icon CardboardTank
      Model mos.danborutank
      Texture SkindanborutankTemplate
      RotateWheels True
      //Third Person Camera Distance
      CameraDistance 4.0
      // ------------------------------------------------------ Movement ------------------------------------------------------
      //Throttle
      MaxThrottle 0.7
      MaxNegativeThrottle 0.7
      //Steering modifiers
      TurnLeftSpeed 2.00
      TurnRightSpeed 2.00
      //For calculating whether wheels are on the ground or not for driving
      WheelRadius 1.0
      //Wheel positions for collision handling. Tanks still have 4 wheels, they are just the corner ones.
      WheelPosition 0 -24 -8 -24
      WheelPosition 1 -24 -8 24
      WheelPosition 2 24 -8 24
      WheelPosition 3 24 -8 -24
      WheelSpringStrength 0.5
      //If true, then all wheels will apply drive forces
      FourWheelDrive true
      //Tank mode activate
      Tank true
      // ------------------------------------------------------ Weaponry ------------------------------------------------------
      //Weapon types. Options are Missile, Bomb, Gun, Shell, None
      Primary Shell
      Secondary None
      //Time between shots in 1/20ths of seconds
      PlaceTimePrimary 160
      ShootDelayPrimary 50
      ReloadTimePrimary 50
      PlaceTimeSecondary 999
      ShootDelaySecondary 999
      ReloadTimeSecondary 999
      BulletSpeed 7.00
      BulletSpread 1.00
      //Whether to alternate or fire all together
      AlternatePrimary False
      AlternateSecondary False
      //Firing modes. One of SemiAuto, FullAuto or Minigun
      ModePrimary FullAuto
      ModeSecondary FullAuto
      //Add shoot origins. These are the points on your vehicle from which bullets / missiles / shells / bombs appear
      ShootPointPrimary 27 15 0 turret
      ShootPointSecondary 
      ShootParticlesPrimary largeexplode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 0 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary explode 1 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 0 0 0
      ShootParticlesPrimary cloud 1 0 0
      ShootParticlesPrimary cloud 1 0 0
      ShootParticlesPrimary cloud 1 0 0
      ShootParticlesPrimary cloud 1 0 0
      ShootParticlesPrimary cloud 1 0 0
      ShootParticlesPrimary cloud 1 0 0
      // ------------------------------------------------------ Inventory ------------------------------------------------------
      CargoSlots 0
      BombSlots 0
      MissileSlots 8
      AllowAllAmmo false
      AddAmmo renaultft17_shell[ap]
      AddAmmo dummyammo
      //Fuel Tank Size (1 point of fuel will keep one propeller going with throttle at 1 for 1 tick)
      FuelTankSize 500
      // ------------------------------------------------------ Passengers ------------------------------------------------------
      Driver 0 7 0 -360 360 -10 20
      RotatedDriverOffset -5 0 2
      Passengers 0
      // ------------------------------------------------------- Sounds -------------------------------------------------------
      StartSound None
      StartSoundLength 90
      EngineSound None
      EngineSoundLength 90
      StartSoundRange 0
      EngineSoundRange 0
      BackSoundRange 0
      BackSoundLength 
      BackSound 
      PlaceSoundPrimary PlaceSound1
      ShootSoundPrimary FT-17_fire
      ReloadSoundPrimary FT-17_reload
      PlaceSoundSecondary None
      ShootSoundSecondary HMG_BrowningM1919A4_fire2
      ReloadSoundSecondary HMG_BrowningM1919A4Reload2
      // ------------------------------------------------------ Recipe ------------------------------------------------------
      //Recipe
      //Each section of the plane may have many parts
      //The sections are tailWheel, tail, bay, topWing, leftWingWheel, leftWing, rightWingWheel,
      //rightWing, nose, turret, coreWheel, core
      AddRecipeParts turret 24 wood
      //Dye colours are "black", "red", "green", "brown", "blue", "purple", "cyan", "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white"
      //AddDye 0 gray
      // ------------------------------------------------------ Health and hitboxes ------------------------------------------------------
      SetupPart core 30 -24 -10 -12 48 31 24
      BulletDetection 5
      BrakeSound Truck_Stop
      BrakeSoundRange 10
      BrakeSoundLength 120
      IsExplosionWhenDestroyed true
      PlaceableOnLand true
      PlaceableOnSponge true
      CollisionDamageEnable true
      CollisionDamageThrottle 0.21
      CollisionDamageTimes 5
      

      Et maintenant le bateau!

      // ------------------------------------------------------ Naming ------------------------------------------------------
      Name SPG_Navy 12cm SPG
      ShortName spg_navy12cmspg
      ItemID 11042
      Description MAX HP:4000_Navy 12cm SPG Shell[AP]
      // ------------------------------------------------------ Visuals ------------------------------------------------------
      Icon Navy12cmSPG
      Model mos.12cmSPG
      Texture 12cmSPG
      RotateWheels True
      //Third Person Camera Distance
      CameraDistance 7.0
      // ------------------------------------------------------ Movement ------------------------------------------------------
      //Throttle
      MaxThrottle 1.0
      MaxNegativeThrottle 0.5
      //Steering modifiers
      TurnLeftSpeed 0.35
      TurnRightSpeed 0.35
      //For calculating whether wheels are on the ground or not for driving
      WheelRadius 1.0
      //Wheel positions for collision handling. Tanks still have 4 wheels, they are just the corner ones.
      WheelPosition 0 -46 -8 -15
      WheelPosition 1 -46 -8 15
      WheelPosition 2 30 -8 15
      WheelPosition 3 30 -8 -15
      WheelSpringStrength 0.5
      //Bouncy bouncy
      Bounciness 0.3
      //If true, then all wheels will apply drive forces
      FourWheelDrive true
      //Tank mode activate
      Tank true
      // ------------------------------------------------------ Weaponry ------------------------------------------------------
      //Weapon types. Options are Missile, Bomb, Gun, Shell, None
      Primary Shell
      Secondary None
      //Time between shots in 1/20ths of seconds
      PlaceTimePrimary 170
      ShootDelayPrimary 140
      ReloadTimePrimary 140
      PlaceTimeSecondary 
      ShootDelaySecondary 
      ReloadTimeSecondary 
      BulletSpeed 7.00
      BulletSpread 0.75
      //Whether to alternate or fire all together
      AlternatePrimary False
      AlternateSecondary False
      //Firing modes. One of SemiAuto, FullAuto or Minigun
      ModePrimary FullAuto
      ModeSecondary FullAuto
      //Add shoot origins. These are the points on your vehicle from which bullets / missiles / shells / bombs appear
      TurretOrigin 0 29 0
      TurretOriginOffset 0 0 0
      ShootPointPrimary 24 29 0 turret 
      ShootPointSecondary 
      ShootParticlesPrimary hugeexplosion 6 0 0
      ShootParticlesPrimary largeexplode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 4 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary explode 5 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 4 0 0
      ShootParticlesPrimary cloud 5 0 0
      ShootParticlesPrimary cloud 5 0 0
      ShootParticlesPrimary cloud 5 0 0
      ShootParticlesPrimary cloud 5 0 0
      ShootParticlesPrimary cloud 5 0 0
      ShootParticlesPrimary cloud 5 0 0
      // ------------------------------------------------------ Inventory ------------------------------------------------------
      CargoSlots 0
      BombSlots 0
      MissileSlots 8
      AllowAllAmmo false
      AddAmmo navy12cmspg_shell[ap]
      AddAmmo dummyammo
      //Fuel Tank Size (1 point of fuel will keep one propeller going with throttle at 1 for 1 tick)
      FuelTankSize 1000
      // ------------------------------------------------------ Passengers ------------------------------------------------------
      Driver 0 20 0 -360 360 -10 20
      RotatedDriverOffset -4 0 -15
      Passengers 0
      // ------------------------------------------------------- Sounds -------------------------------------------------------
      StartSound Chi-Ha_IdleSound
      StartSoundLength 90
      EngineSound Chi-Ha_EngineSound
      EngineSoundLength 90
      StartSoundRange 50
      EngineSoundRange 50
      BackSoundRange 50
      BackSoundLength 
      BackSound 
      PlaceSoundPrimary SA12200VD_PlaceSound
      ShootSoundPrimary Navy12cmSPG_fire
      ReloadSoundPrimary Navy12cmSPG_reload
      PlaceSoundSecondary None
      ShootSoundSecondary HMG_BrowningM1919A4_fire2
      ReloadSoundSecondary HMG_BrowningM1919A4Reload2
      // ------------------------------------------------------ Recipe ------------------------------------------------------
      //Recipe
      //Each section of the plane may have many parts
      //The sections are tailWheel, tail, bay, topWing, leftWingWheel, leftWing, rightWingWheel,
      //rightWing, nose, turret, coreWheel, core
      AddRecipeParts turret 1 parts_tankturret 1 parts_tankbody 12 iron 2 parts_caterpillartrack
      //Dye colours are "black", "red", "green", "brown", "blue", "purple", "cyan", "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white"
      //AddDye 0 gray
      // ------------------------------------------------------ Health and hitboxes ------------------------------------------------------
      SetupPart core 4000 -52 -10 -20 89 45 40
      BulletDetection 5
      BrakeSound Truck_Stop
      BrakeSoundRange 10
      BrakeSoundLength 120
      IsExplosionWhenDestroyed true
      PlaceableOnLand true
      PlaceableOnSponge true
      CollisionDamageEnable true
      CollisionDamageThrottle 0.21
      CollisionDamageTimes 5
      

      Bon bah voilà! Si vous voulez plus de détails sur le code ou que vous ne comprenez pas un truc, n’hésitez pas à me le demander 😉 .

      Les avions

      On arrive à la dernière partie sur les dossiers que je vais écrire(le tutoriel se fait long et le seul dossier que je n’ai pas couvert est celui des tools que j’ai décidé de ne pas décrire.
      Allez, dossier planes, on met ce code:

      // ------------------------------------------------------ Naming ------------------------------------------------------
      Name Bombardier
      ShortName bombardier
      ItemID 11000
      Description MAX HP:150_FlareDelay 300_TimeFlareUsing 5s_PlaneAmmo BrowningM2 Ammo_PlaneBomb SmallBomb
      //les caractéristiques spéciales de l'avion
      // ------------------------------------------------------ Visuals ------------------------------------------------------
      Icon bombre
      Model bomber
      Texture bomber
      CameraDistance 7.5
      //ça vous connaissez,on l'a déjà vu dans les dossiers précédents!
      RestingPitch 5.0
      //Avec ce paramètres, on règle la hauteur de respawn de l'avion.
      // ------------------------------------------------------ Movement ------------------------------------------------------
      Mode Plane
      //Mode : L'un parmi Avion, Héli ou VTOL. Le VTOL a un bouton à bascule qui change certaines esthétiques du modèle et le mode de vol
      MaxThrottle 1.00
      MaxNegativeThrottle 0.0
      //déjà vu
      TurnLeftSpeed 0.8
      TurnRightSpeed 0.8
      déjà vu
      LookUpSpeed 0.8
      LookDownSpeed 0.8
      //vitesse de changement de vue de l'avion
      RollLeftSpeed 2.1
      RollRightSpeed 2.1
      //vitesse detour
      
      Drag 0.45
      //1.0 est le standard du paramètre. ça rendra l'avion plus ou moins stagnant
      //Wheels
      NumWheels 3
      WheelPosition 0 3 -21 -24
      WheelPosition 1 3 -21 24
      WheelPosition 2 -82 -9 0
      WheelSpringStrength 0.125
      //position des roues
      
      Propeller 0 54 2 0 nose parts_metalpropeller
      //Position de l'hélice
      //Propeller <ID> <x> <y> <z> <planePart> <recipeItem>
      // ------------------------------------------------------ Weaponry ------------------------------------------------------
      //Type d'arme. On peut choisir entre: Missile, Bomb, Gun, Shell, None
      Primary Shell
      Secondary Bomb
      //Time between shots in 1/20ths of seconds
      PlaceTimePrimary 160
      ShootDelayPrimary 2
      ReloadTimePrimary 80
      PlaceTimeSecondary 240
      ShootDelaySecondary 240
      ReloadTimeSecondary 240
      BulletSpeed 7.00
      BulletSpread 0.75
      //Whether to alternate or fire all together
      AlternatePrimary False
      AlternateSecondary False
      //Firing modes. One of SemiAuto, FullAuto or Minigun
      ModePrimary FullAuto
      ModeSecondary FullAuto
      //Add shoot origins. These are the points on your vehicle from which bullets / missiles / shells / bombs appear
      ShootPointPrimary 30 -4 20 rightWing 
      ShootPointPrimary 28 -4 28 rightWing 
      ShootPointPrimary 26 -4 36 rightWing 
      ShootPointPrimary 30 -4 -20 leftWing 
      ShootPointPrimary 28 -4 -28 leftWing 
      ShootPointPrimary 26 -4 -36 leftWing 
      ShootPointSecondary -4 -16 0 core
      ShootParticlesPrimary cloud 0 0 0
      /ça, normalement, on a déjà tout vu et tout commenté
      // ------------------------------------------------------ Inventory ------------------------------------------------------
      CargoSlots 0
      BombSlots 8
      MissileSlots 6
      AllowAllAmmo False
      AddAmmo planeammo_browningm2ammo
      AddAmmo planebomb_smallbomb
      AddAmmo dummyammo
      FuelTankSize 10000
      //Bon, on connait
      // ------------------------------------------------------ Passengers ------------------------------------------------------
      Pilot -4 -1 0
      Passengers 0
      /on connait toujours
      // ------------------------------------------------------ Sounds ------------------------------------------------------
      StartSound Spitfire_StartSound
      StartSoundLength 20
      PropSound Spitfire_PropSound
      PropSoundLength 40
      StartSoundRange 100
      EngineSoundRange 1000
      PlaceSoundPrimary Spitfire_PlaceSound
      ShootSoundPrimary 12,7mm_2
      ReloadSoundPrimary PG_reload
      PlaceSoundSecondary None
      ShootSoundSecondary Bombair
      ReloadSoundSecondary PlaneBomb_reload1
      LockedOnSound Lock
      SoundTime 8
      LockedOnSoundRange 15
      //au niveau des sons, lamême chose
      // ------------------------------------------------------ Recipe ------------------------------------------------------
      //Each section of the plane may have many parts
      //The sections are tailWheel, tail, bay, topWing, leftWingWheel, leftWing, rightWingWheel,
      //rightWing, nose, turret, coreWheel, core
      AddRecipeParts nose 1 parts_metalcockpit 9 iron 3 parts_smallwheel 1 parts_metalnose 1 parts_metalwingsmall 1 parts_bombbay
      AddRecipeParts leftWing 1 parts_metalwingsmall
      AddRecipeParts tail 1 parts_metaltail
      //Dye colours are "black", "red", "green", "brown", "blue", "purple", "cyan", "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white"
      //AddDye 0 gray
      //également déjà vu
      // ------------------------------------------------------ Health and hitboxes ------------------------------------------------------
      SetupPart core 150 -27 -7 -10 78 26 20
      SetupPart leftWing 150 -7 -5 -88 32 2 176
      SetupPart tail 100 -93 -7 -10 66 18 20
      HasGear True
      BulletDetection 5
      //Collision points for breaking wings etc. upon crashing
      //Core
      CollisionPoint 20 2 0 core
      CollisionPoint 40 2 0 core
      //LeftWing
      CollisionPoint 9 -3 80 leftWing
      CollisionPoint 9 -3 60 leftWing
      CollisionPoint 9 -3 40 leftWing
      CollisionPoint 9 -3 20 leftWing
      CollisionPoint 9 -3 -80 leftWing
      CollisionPoint 9 -3 -60 leftWing
      CollisionPoint 9 -3 -40 leftWing
      CollisionPoint 9 -3 -20 leftWing
      //Tail
      CollisionPoint -60 2 0 tail
      CollisionPoint -40 2 0 tail
      CollisionPoint -80 2 0 tail
      IsExplosionWhenDestroyed true
      CollisionDamageEnable true
      CollisionDamageThrottle 0.21
      CollisionDamageTimes 0
      HasFlare True
      FlareDelay 300
      FlareSound Flare
      TimeFlareUsing 5
      //déjà vu aussi!
      

      Bon, comme vous avez pu le constater, l’avion reprend à peu près le code du véhicule.
      On va pouvoir passer aux textures et aux modèles(je vous promet qu’on fait le java après!)

      Les ressources(texture, modèle,son)

      Oki! On s’approche très doucement de la fin et on va commencer le truc un tout petit peu chaud(mais vraiment un tout petit peu…)
      Dans le dossier assets qu’on avait créé, on va créer un dossier flansmod.
      Dedans, on met plusieurs dossier

      • lang
      • skins
      • sounds
      • textures
      • sounds.json(fichier, pas dossier, bien entendu)

      On va commencer par sounds.json:
      Pour être sur de tout avoir, on va mettre tout les sons de flan’s(attention, ça fait plus de 1000 lignes, donc ça va dérouler)

      {
      	"BDreload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:BDreload" ]
      	},
      
      	"BDshoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:BDshoot" ]
      	},
      
      	"DBDreload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:DBDreload" ]
      	},
      
      	"DBDshoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:DBDshoot" ]
      	},
      
      	"cz75_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:cz75_reload" ]
      	},
      
      	"cz75_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:cz75_shoot" ]
      	},
      
      	"ColtMono": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ColtMono" ]
      	},
      
      	"colt_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:colt_reload" ]
      	},
      
      	"colt_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:colt_shoot" ]
      	},
      
      	"toz34_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:toz34_shoot" ]
      	},
      
      	"stenLR": {
      		"category" : "player",
      		"sounds" : [ "flansmod:stenLR" ]
      	},
      
      	"BreakAction1911_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:BreakAction1911_reload" ]
      	},
      
      	"usas12_shoot_4": {
      		"category" : "player",
      		"sounds" : [ "flansmod:usas12_shoot_4" ]
      	},
      
      	"G11reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:G11reload" ]
      	},
      
      	"G11shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:G11shoot" ]
      	},
      
      	"G36Reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:G36Reload" ]
      	},
      
      	"grozaReload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:grozaReload" ]
      	},
      
      	"grozaShoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:grozaShoot" ]
      	},
      
      	"MG34_Shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MG34_Shoot" ]
      	},
      
      	"m16_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m16_reload" ]
      	},
      
      	"m16_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m16_shoot" ]
      	},
      
      	"aug_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:aug_shoot" ]
      	},
      
      	"aug_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:aug_reload" ]
      	},
      
      	"aug_a1_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:aug_a1_reload" ]
      	},
      
      	"sg550_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:sg550_reload" ]
      	},
      
      	"sg550_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:sg550_shoot" ]
      	},
      
      	"l85_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:l85_reload" ]
      	},
      
      	"l85_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:l85_shoot" ]
      	},
      
      	"g36_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:g36_reload" ]
      	},
      
      	"g36_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:g36_shoot" ]
      	},
      
      	"M14reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:M14reload" ]
      	},
      
      	"M14shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:M14shoot" ]
      	},
      
      	"m14_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m14_reload" ]
      	},
      
      	"m14_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m14_shoot" ]
      	},
      
      	"hk417_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:hk417_reload" ]
      	},
      
      	"hk417_shoot_sil": {
      		"category" : "player",
      		"sounds" : [ "flansmod:hk417_shoot_sil" ]
      	},
      
      	"hk417_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:hk417_shoot" ]
      	},
      
      	"wa2000_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:wa2000_reload" ]
      	},
      
      	"wa2000_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:wa2000_shoot" ]
      	},
      
      	"awp_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:awp_reload" ]
      	},
      
      	"awp_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:awp_shoot" ]
      	},
      
      	"m82_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m82_reload" ]
      	},
      
      	"m82_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m82_shoot" ]
      	},
      
      	"m95_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m95_reload" ]
      	},
      
      	"m95_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m95_shoot" ]
      	},
      
      	"ak105_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak105_shoot" ]
      	},
      
      	"ak105_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak105_reload" ]
      	},
      
      	"AK-47_Fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:AK-47_Fire" ]
      	},
      
      	"AK-47_Reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:AK-47_Reload" ]
      	},
      
      	"ak47_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak47_reload" ]
      	},
      
      	"ak47_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak47_shoot" ]
      	},
      
      	"ak74u_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak74u_reload" ]
      	},
      
      	"ak74u_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak74u_shoot" ]
      	},
      
      	"ak74_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak74_reload" ]
      	},
      
      	"ak74_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ak74_shoot" ]
      	},
      
      	"an94_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:an94_reload" ]
      	},
      
      	"an94_shoot_2": {
      		"category" : "player",
      		"sounds" : [ "flansmod:an94_shoot_2" ]
      	},
      
      	"lr300_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:lr300_reload" ]
      	},
      
      	"lr300_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:lr300_shoot" ]
      	},
      
      	"p226_shoot_sil": {
      		"category" : "player",
      		"sounds" : [ "flansmod:p226_shoot_sil" ]
      	},
      
      	"p226_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:p226_shoot" ]
      	},
      
      	"p226_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:p226_reload" ]
      	},
      
      	"vss_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:vss_reload" ]
      	},
      
      	"vss_shoot_old": {
      		"category" : "player",
      		"sounds" : [ "flansmod:vss_shoot_old" ]
      	},
      
      	"vss_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:vss_shoot" ]
      	},
      
      	"MGXM8shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MGXM8shoot" ]
      	},
      
      	"MGXM8reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MGXM8reload" ]
      	},
      
      	"g36c_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:g36c_shoot" ]
      	},
      
      	"rpd_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:rpd_reload" ]
      	},
      
      	"MG4KEshoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MG4KEshoot" ]
      	},
      
      	"MG4KEreload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MG4KEreload" ]
      	},
      
      	"mk11_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mk11_shoot" ]
      	},
      
      	"mk11_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mk11_reload" ]
      	},
      
      	"pkp_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:pkp_shoot" ]
      	},
      
      	"pkp_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:pkp_reload" ]
      	},
      
      	"fg42LR": {
      		"category" : "player",
      		"sounds" : [ "flansmod:fg42LR" ]
      	},
      
      	"Mac10reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Mac10reload" ]
      	},
      
      	"Mac10shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Mac10shoot" ]
      	},
      
      	"MmacReload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MmacReload" ]
      	},
      
      	"MmacShoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MmacShoot" ]
      	},
      
      	"mp5_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp5_reload" ]
      	},
      
      	"mp5_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp5_shoot" ]
      	},
      
      	"mp5_silent": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp5_silent" ]
      	},
      
      	"mp5sd_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp5sd_shoot" ]
      	},
      
      	"mp7_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp7_reload" ]
      	},
      
      	"mp7_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp7_shoot" ]
      	},
      
      	"mp7_shoot_sil": {
      		"category" : "player",
      		"sounds" : [ "flansmod:mp7_shoot_sil" ]
      	},
      
      	"SMG_PPSh-41_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:SMG_PPSh-41_fire" ]
      	},
      
      	"SMG_PPSh-41_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:SMG_PPSh-41_reload" ]
      	},
      
      	"bizon_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:bizon_reload" ]
      	},
      
      	"bizon_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:bizon_shoot" ]
      	},
      
      	"pp2000_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:pp2000_reload" ]
      	},
      
      	"ares_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ares_reload" ]
      	},
      
      	"ares_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ares_shoot" ]
      	},
      
      	"Railgun": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Railreload" ]
      	},
      
      	"saigaShoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:saigaShoot" ]
      	},
      
      	"saigaReload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:saigaReload" ]
      	},
      
      	"saiga_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:saiga_shoot" ]
      	},
      
      	"saiga_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:saiga_reload" ]
      	},
      
      	"Auto-5_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Auto-5_reload" ]
      	},
      
      	"M4Super90_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:M4Super90_reload" ]
      	},
      
      	"spas12_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:spas12_shoot" ]
      	},
      
      	"KS-23_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:KS-23_reload" ]
      	},
      
      	"rem870_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:rem870_shoot" ]
      	},
      
      	"XM8reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:XM8reload" ]
      	},
      
      	"XM8shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:XM8shoot" ]
      	},
      
      	"416reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:416reload" ]
      	},
      
      	"416shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:416shoot" ]
      	},
      
      	"SF2TYPE89reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:SF2TYPE89reload" ]
      	},
      
      	"SF2TYPE89shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:SF2TYPE89shoot" ]
      	},
      
      	"Kar98k_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Kar98k_fire" ]
      	},
      
      	"FR-F2reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FR-F2reload" ]
      	},
      
      	"FR-F2shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FR-F2shoot" ]
      	},
      
      	"Mosin-Nagant_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Mosin-Nagant_fire" ]
      	},
      
      	"MosinNagantSniperReload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MosinNagantSniperReload" ]
      	},
      
      	"MosinNagantReload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MosinNagantReload" ]
      	},
      
      	"464SPX_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:464SPX_reload" ]
      	},
      
      	"464SPX_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:464SPX_fire" ]
      	},
      
      	"Pilebunker_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pilebunker_fire" ]
      	},
      
      	"Pilebunker_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pilebunker_reload" ]
      	},
      
      	"RockBuster_Hitsound": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RockBuster_Hitsound" ]
      	},
      
      	"RockBuster_Reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RockBuster_Reload" ]
      	},
      
      	"RockBuster_Shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RockBuster_Shoot" ]
      	},
      
      	"RocketPunch_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RocketPunch_reload" ]
      	},
      
      	"RocketPunch_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RocketPunch_fire" ]
      	},
      
      	"RifleGrenade_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:RifleGrenade_reload" ]
      	},
      
      	"garandgrenfire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:garandgrenfire" ]
      	},
      
      	"m134_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m134_reload" ]
      	},
      
      	"m134_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:m134_shoot" ]
      	},
      
      	"MinigunWarmup": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MinigunWarmup" ]
      	},
      
      	"MinigunSpin": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MinigunSpin" ]
      	},
      
      	"MinigunCooldown": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MinigunCooldown" ]
      	},
      
      	"rpg7_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:rpg7_reload" ]
      	},
      
      	"rpg7_shoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:rpg7_shoot" ]
      	},
      
      	"FN40GL(SINGLE)Reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FN40GL(SINGLE)Reload" ]
      	},
      
      	"22LRshoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:22LRshoot" ]
      	},
      
      	"Flash": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Flash" ]
      	},
      
      	"39_43MLR": {
      		"category" : "player",
      		"sounds" : [ "flansmod:39_43MLR" ]
      	},
      
      	"bomb_timer": {
      		"category" : "player",
      		"sounds" : [ "flansmod:bomb_timer" ]
      	},
      
      	"bayonet1": {
      		"category" : "player",
      		"sounds" : [ "flansmod:bayonet1" ]
      	},
      
      	"NETA_Crossbow_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:NETA_Crossbow_reload" ]
      	},
      
      	"NETA_Crossbow_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:NETA_Crossbow_fire" ]
      	},
      
      	"YoC": {
      		"category" : "player",
      		"sounds" : [ "flansmod:YoC" ]
      	},
      
      	"KBJNSKK": {
      		"category" : "player",
      		"sounds" : [ "flansmod:KBJNSKK" ]
      	},
      
      	"ArisakaType38_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:ArisakaType38_fire" ]
      	},
      
      	"Rifle_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Rifle_reload" ]
      	},
      
      	"FLShoot": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FLShoot" ]
      	},
      
      	"DShK38_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:DShK38_fire" ]
      	},
      
      	"DT1928_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:DT1928_reload" ]
      	},
      
      	"HMG_BrowningM2_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM2_fire" ]
      	},
      
      	"HMG_BrowningM2_release": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM2_release" ]
      	},
      
      	"12,7mm_2": {
      		"category" : "player",
      		"sounds" : [ "flansmod:12,7mm_2" ]
      	},
      
      	"Browning7.7mm_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Browning7.7mm_fire" ]
      	},
      
      	"HMG_BrowningM1919A4Fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM1919A4Fire" ]
      	},
      
      	"HMG_BrowningM1919A4_fire2": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM1919A4_fire2" ]
      	},
      
      	"HMG_BrowningM1919A4Reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM1919A4Reload" ]
      	},
      
      	"HMG_BrowningM1919A4Reload2": {
      		"category" : "player",
      		"sounds" : [ "flansmod:HMG_BrowningM1919A4Reload2" ]
      	},
      
      	"MG81Z_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MG81Z_fire" ]
      	},
      
      	"MG81Z_release": {
      		"category" : "player",
      		"sounds" : [ "flansmod:MG81Z_release" ]
      	},
      	
      	"B1_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "B1_PlaceSound" ]
      	},
      	
      	"B1_IdleSound": {
      		"category" : "player",
      		"sounds" : [ "B1_IdleSound" ]
      	},
      
      	"B1_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "flansmod:B1_EngineSound" ]
      	},
      
      	"FT-17_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FT-17_fire" ]
      	},
      
      	"FT-17_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:FT-17_reload" ]
      	},
      	
      	"Pz,IV_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Pz,IV_PlaceSound" ]
      	},
      	
      	"Panzer4G_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "Panzer4G_EngineSound" ]
      	},
      
      	"Pz4_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz4_fire" ]
      	},
      
      	"Pz4_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz4_reload" ]
      	},
      
      	"Hummel_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Hummel_fire" ]
      	},
      
      	"Hunmmel_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Hunmmel_reload" ]
      	},
      
      	"Navy12cmSPG_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Navy12cmSPG_fire" ]
      	},
      
      	"Navy12cmSPG_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Navy12cmSPG_reload" ]
      	},
      	
      	"T-34_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "T-34_PlaceSound" ]
      	},
      	
      	"T34_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "T34_EngineSound" ]
      	},
      
      	"T-34-85_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:T-34-85_fire" ]
      	},
      
      	"T-34-85_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:T-34-85_reload" ]
      	},
      
      	"Pz5_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz5_PlaceSound" ]
      	},
      
      	"Pz5_IdleSound": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz5_IdleSound" ]
      	},
      
      	"Pz5_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz5_EngineSound" ]
      	},
      
      	"Pz5_fire": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz5_fire" ]
      	},
      
      	"Pz5_reload": {
      		"category" : "player",
      		"sounds" : [ "flansmod:Pz5_reload" ]
      	},
      	
      	"Sherman_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Sherman_PlaceSound" ]
      	},
      	
      	"Jeep_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "Jeep_EngineSound" ]
      	},
      	
      	"kubel_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "kubel_EngineSound" ]
      	},
      	
      	"BMW_R75_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "BMW_R75_PlaceSound" ]
      	},
      	
      	"BMW_R75_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "BMW_R75_EngineSound" ]
      	},
      	
      	"BMW_R75_IdleSound": {
      		"category" : "player",
      		"sounds" : [ "BMW_R75_IdleSound" ]
      	},
      	
      	"GMC_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "GMC_EngineSound" ]
      	},
      	
      	"GMC_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "GMC_PlaceSound" ]
      	},
      	
      	"Blitz_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "Blitz_EngineSound" ]
      	},
      	
      	"Blitz_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Blitz_PlaceSound" ]
      	},
      	
      	"HL42_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "HL42_PlaceSound" ]
      	},
      	
      	"HL42_IdleSound": {
      		"category" : "player",
      		"sounds" : [ "HL42_IdleSound" ]
      	},
      	
      	"HL42_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "HL42_EngineSound" ]
      	},
      	
      	"Hummel_EngineSound": {
      		"category" : "player",
      		"sounds" : [ "Hummel_EngineSound" ]
      	},
      	
      	"BF109_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "BF109_PlaceSound" ]
      	},
      	
      	"BF109_PropSound": {
      		"category" : "player",
      		"sounds" : [ "BF109_PropSound" ]
      	},
      	
      	"BF109_StartSound": {
      		"category" : "player",
      		"sounds" : [ "BF109_StartSound" ]
      	},
      	
      	"Camel_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Camel_PlaceSound" ]
      	},
      	
      	"Camel_PropSound": {
      		"category" : "player",
      		"sounds" : [ "Camel_PropSound" ]
      	},
      	
      	"Camel_StartSound": {
      		"category" : "player",
      		"sounds" : [ "Camel_StartSound" ]
      	},
      	
      	"Lancaster_PropSound": {
      		"category" : "player",
      		"sounds" : [ "Lancaster_PropSound" ]
      	},
      	
      	"Lancaster_StartSound": {
      		"category" : "player",
      		"sounds" : [ "Lancaster_StartSound" ]
      	},
      	
      	"Spitfire_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Spitfire_PlaceSound" ]
      	},
      	
      	"Spitfire_PropSound": {
      		"category" : "player",
      		"sounds" : [ "Spitfire_PropSound" ]
      	},
      	
      	"Spitfire_StartSound": {
      		"category" : "player",
      		"sounds" : [ "Spitfire_StartSound" ]
      	},
      	
      	"Yak9_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "Yak9_PlaceSound" ]
      	},
      	
      	"Yak9_PropSound": {
      		"category" : "player",
      		"sounds" : [ "Yak9_PropSound" ]
      	},
      	
      	"Yak9_StartSound": {
      		"category" : "player",
      		"sounds" : [ "Yak9_StartSound" ]
      	},
      	
      	"A6M2_PlaceSound": {
      		"category" : "player",
      		"sounds" : [ "A6M2_PlaceSound" ]
      	},
      	
      	"A6M2_PropSound": {
      		"category" : "player",
      		"sounds" : [ "A6M2_PropSound" ]
      	},
      	
      	"A6M2_PropSound2": {
      		"category" : "player",
      		"sounds" : [ "A6M2_PropSound2" ]
      	},
      	
      	"A6M2_StartSound": {
      		"category" : "player",
      		"sounds" : [ "A6M2_StartSound" ]
      	},
      	
      	"jetengine": {
      		"category" : "player",
      		"sounds" : [ "jetengine" ]
      	},
      	
      	"PlaceSound1": {
      		"category" : "player",
      		"sounds" : [ "PlaceSound1" ]
      	},
      	
      	"PG_BK3,7_fire": {
      		"category" : "player",
      		"sounds" : [ "PG_BK3,7_fire" ]
      	},
      	
      	"Bomb": {
      		"category" : "player",
      		"sounds" : [ "Bomb" ]
      	},
      	
      	"PG_BrowningM2Fire": {
      		"category" : "player",
      		"sounds" : [ "PG_BrowningM2Fire" ]
      	},
      	
      	"PG_BrowningM2Reload": {
      		"category" : "player",
      		"sounds" : [ "PG_BrowningM2Reload" ]
      	},
      	
      	"PlaneShoot": {
      		"category" : "player",
      		"sounds" : [ "PlaneShoot" ]
      	},
      	
      	"PlaneShootShort": {
      		"category" : "player",
      		"sounds" : [ "PlaneShootShort" ]
      	},
      	
      	"PG_reload": {
      		"category" : "player",
      		"sounds" : [ "PG_reload" ]
      	},
      	
      	"PlaneBomb_reload1": {
      		"category" : "player",
      		"sounds" : [ "PlaneBomb_reload1" ]
      	},
      	
      	"WarpSter_Engine": {
      		"category" : "player",
      		"sounds" : [ "WarpSter_Engine" ]
      	},
      	
      	"Truck_Stop": {
      		"category" : "player",
      		"sounds" : [ "Truck_Stop" ]
      	}
      }
      

      Je vous avais prévenu.
      Bref, comme ça, on a tout les sons dont on pouvait rêver.
      On va logiquement continuer vers le dossier sounds(va falloir les importer, les sons…).
      Comme je suis super sympa, je vous ai préparé un fichier sounds tout fait: C’est ici!!!
      Pour les textures, on va dans textures, on créé le dossier items et on met dedans les fichier de textures en .png. Ils doivent faire 16*16px.
      Le nom du fichier doit être le même que celui que vous avez défini dans le fichier .txt de l’item!!!

      Pour les skins des véhicules par exemple, on va dans le dossier skins et on importe le skin du véhicule. C’est bien évidemment la même chose pour les armes. Sauf qu’elles ont un truc en plus: des models 3d. On va donc créer un nouveau dossier models dans lequel on mettra les modèles de nos armes en .obj.
      Dans lang, créez un fichier fr_FR.txt. On le complétera plus tard.
      On peut créer un dossier gui, qu’on ne vas pas fournir pour le moment.
      Oncréé ensuite un dossier armor dans lequel on met les skins de nos armures.
      On passe au java!

      Le Java

      Vous vous souvenez du dossier com? On y retourne!
      On créé un dossier flansmod à l’intérieur puis, à l’intérieur du dossier flansmod, un dossier client.
      On met ensuite models puis on créé un fichier pour notre ak47 custom qu’on nomme ModelAK47Custom.class.
      A l’intérieur de celui-ci:

      /* Decompiler 55ms, total 1020ms, lines 56 */
      package com.flansmod.client.model;
      
      import com.flansmod.client.model.EnumAnimationType;
      import com.flansmod.client.model.ModelGun;
      import com.flansmod.client.tmt.ModelRendererTurbo;
      import com.flansmod.common.vector.Vector3f;
      
      /* On fait les imports */
      
      public class ModelAK74 extends ModelGun {
         public ModelAK74() {
            int textureX = 64;
            int textureY = 16;
            this.gunModel = new ModelRendererTurbo[7];
            this.gunModel[0] = new ModelRendererTurbo(this, 0, 0, textureX, textureY);
            this.gunModel[0].addBox(-1.0F, 3.0F, -1.0F, 9, 1, 2);
            this.gunModel[1] = new ModelRendererTurbo(this, 0, 3, textureX, textureY);
            this.gunModel[1].addShapeBox(-1.0F, 4.0F, -1.0F, 12, 1, 2, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -1.0F, 0.0F, 0.0F);
            this.gunModel[2] = new ModelRendererTurbo(this, 0, 6, textureX, textureY);
            this.gunModel[2].addShapeBox(8.0F, 3.0F, -1.0F, 3, 1, 2, 0.0F, 0.0F, 0.25F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.25F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
            this.gunModel[3] = new ModelRendererTurbo(this, 10, 6, textureX, textureY);
            this.gunModel[3].addBox(-1.0F, 2.0F, -1.0F, 2, 1, 2);
            this.gunModel[4] = new ModelRendererTurbo(this, 28, 0, textureX, textureY);
            this.gunModel[4].addBox(-0.75F, -3.0F, -0.75F, 1.5F, 4.0F, 1.5F);
            this.gunModel[4].func_78793_a(-0.2F, 2.0F, 0.0F);
            this.gunModel[4].field_78808_h = -0.5F;
            this.gunModel[5] = new ModelRendererTurbo(this, 0, 13, textureX, textureY);
            this.gunModel[5].addBox(11.0F, 3.75F, -0.25F, 0.5F, 2.0F, 0.5F);
            this.gunModel[6] = new ModelRendererTurbo(this, 4, 14, textureX, textureY);
            this.gunModel[6].addBox(11.0F, 3.25F, -0.25F, 3.0F, 0.5F, 0.5F);
            this.ammoModel = new ModelRendererTurbo[2];
            this.ammoModel[0] = new ModelRendererTurbo(this, 12, 12, textureX, textureY);
            this.ammoModel[0].addShapeBox(4.0F, 1.0F, -1.0F, 2, 2, 2, 0.0F, -0.5F, 0.5F, 0.0F, 0.5F, 0.0F, 0.0F, 0.5F, 0.0F, 0.0F, -0.5F, 0.5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
            this.ammoModel[1] = new ModelRendererTurbo(this, 20, 12, textureX, textureY);
            this.ammoModel[1].addShapeBox(4.0F, -1.0F, -1.0F, 2, 2, 2, 0.0F, -2.0F, 0.0F, 0.0F, 1.25F, -1.25F, 0.0F, 1.25F, -1.25F, 0.0F, -2.0F, 0.0F, 0.0F, -0.5F, -0.5F, 0.0F, 0.5F, 0.0F, 0.0F, 0.5F, 0.0F, 0.0F, -0.5F, -0.5F, 0.0F);
            this.stockAttachPoint = new Vector3f(0.1875F, 0.3125F, 0.0F);
            this.defaultStockModel = new ModelRendererTurbo[4];
            this.defaultStockModel[0] = new ModelRendererTurbo(this, 12, 10, textureX, textureY);
            this.defaultStockModel[0].addBox(-2.0F, 3.0F, -0.5F, 1, 1, 1);
            this.defaultStockModel[1] = new ModelRendererTurbo(this, 16, 10, textureX, textureY);
            this.defaultStockModel[1].addShapeBox(-7.0F, 1.0F, -0.5F, 5, 1, 1, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -2.0F, 0.0F, 0.0F, -2.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.5F, 0.0F, 0.0F, 1.5F, 0.0F, 0.0F, 1.5F, 0.0F, 0.0F, -0.5F, 0.0F);
            this.defaultStockModel[2] = new ModelRendererTurbo(this, 18, 8, textureX, textureY);
            this.defaultStockModel[2].addBox(-7.0F, 3.5F, -0.5F, 5.0F, 0.5F, 1.0F);
            this.defaultStockModel[3] = new ModelRendererTurbo(this, 28, 12, textureX, textureY);
            this.defaultStockModel[3].addBox(-8.0F, 1.0F, -0.5F, 1, 3, 1);
            this.barrelAttachPoint = new Vector3f(0.734375F, 0.21875F, 0.0F);
            this.defaultBarrelModel = new ModelRendererTurbo[1];
            this.defaultBarrelModel[0] = new ModelRendererTurbo(this, 32, 14, textureX, textureY);
            this.defaultBarrelModel[0].addBox(11.5F, 3.0F, -0.5F, 2, 1, 1);
            this.scopeAttachPoint = new Vector3f(0.1875F, 0.3125F, 0.0F);
            this.defaultScopeModel = new ModelRendererTurbo[1];
            this.defaultScopeModel[0] = new ModelRendererTurbo(this, 38, 14, textureX, textureY);
            this.defaultScopeModel[0].addBox(4.0F, 5.0F, -0.5F, 1, 1, 1);
            this.gunSlideDistance = 0.25F;
            this.animationType = EnumAnimationType.BOTTOM_CLIP;
         }
      }
      

      Comme vous le voyez, ce code va fixer le modèle et le spécifier.
      Je vous laisse traiter le code, potentiellement le modifier et l’appliquer à votre projet!

      Bon, je crois qu’on a fini…

      Résultat

      Je vous mettrai un lien vers le GitHub de mon Content Pack une fois qu’il sera créé(et oui, il est toujours en développement…)

      Licence et attribution

      Creative Commons

      Ce tutoriel rédigé par Aegirios corrigé par <correcteur> et publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      retourSommaire des tutoriels

      1 réponse Dernière réponse Répondre Citer 0
      • 1 / 1
      • Premier message
        Dernier message
      Design by Woryk
      Contact / Mentions Légales

      MINECRAFT FORGE FRANCE © 2018

      Powered by NodeBB