Créer un content pack pour flan's mod en 1.7.10
-
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éationDossiers
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
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