Triez vos classes !



  • Je ne sais pas vraiment si on peux appeler ça un tutoriel car moins de 33 % du tuto est du code , enfin bref.

    Bonjour a tous , voila un petit tuto pour vous apprendre a adopter un style de triage pour vos mods minecraft.

    #1) Des préfixes !(1) Des préfixes !)

    Une méthode simple et efficace , ajoutez de préfixes au noms de vos classes.

    Les +

    Les catégories seront regroupés ensemble ( Items , Blocks , etc )

    Les -

    Si votre classe est déjà crée , vous perdrez du temps a la renommer.

    Exemple :

    :::
    Voici quelques préfixes que j'utilise , a vous de créer les votre !
    D_ ( data ) : Fichier concernant l'IA , les trad de villageois , etc etc
    B_ (blocs) : Blocs
    Mi_ ( Minerais ) : Minerais
    TE_ ( Tile Entity ) : Les Tile Entity ( coffre , blocs a animations et models )
    I_ (Items ) : Objet Lambda
    Ge_ (gemme) : Objet Gemme , issu d'un minerai
    G_ (gear) : Armures
    W_ ( weapons ) : Armes
    Pio_ : Pioches
    H_ (hoe) : Houes
    A_ (axe) : Haches
    Pe_ : pelles
    E_ (entity) : une entité
    M_ ( Mob ) : …
    Mod_ (model) : Model 3D d'un mob/block/item etc
    R_ (Render) : Render
    GUI_ : GUI
    Misc_ (miscellanous) : Divers
    Sounds_ : Les fichiers servant aux sons
    :::

    #2)Des Packages !(2)Des Packages !)

    Créez des packages pour effectuer un classement rapide.

    Les +

    Plus de clarté
    Perdre moins de temps a chercher dans chaque package

    Les -

    Peut sembler bord*lique au début

    :::

    Voici quelques packages que j'utilise :
    Common : Contient le commonProxy , la classe principale , les les fichiers D_
    Client : Contient le ClientProxy , et les models/renders
    Items : Contient les Objets ( tous , I_ , Ge_ , W_ ... )
    Blocs : Contient les blocs ( B_ , TE_ , Mi_ ... )
    Entités : Contient les entités
    Sounds : Contient les fichiers Sounds_ + les sons en eux-mêmes
    :::

    Exemple :

    #3)Déclarez vos Items, blocs et crafts ailleurs(3)Déclarez vos Items, blocs et crafts ailleurs)
    (merci a robin4002 pour cette partie , il m'a aidé sans le vouloir )

    Du codage ! Enfin !
    Je vais ici utiliser 3 fichiers D_ :
    D_Items , D_Crafts , D_Blocs.

    Créez les trois classes.

    D_Items :

    package mods.nono.MGSmod.common;
    
    public class D_Items{
    
    public static void loadItems()
    {
    // votre code ici
    }
    }
    
    

    D_Crafts

    package mods.nono.MGSmod.common;
    
    public class D_Items{
    
    public static void loadCrafts()
    {
    // votre code ici
    }
    }
    

    D_Blocs

    package mods.nono.MGSmod.common;
    
    public class D_Items{
    
    public static void loadBlocs()
    {
    // votre code ici
    }
    }
    

    Ensuite dans votre classe principale ,
    a @Init :
    insérez ceci

    D_Items.loadItems();
    D_Blocs.loadBlocs();
    

    Et a la fin de @Init /!\Très important !!!

    D_Crafts.loadrecipe();
    

    Maintenant , copiez/collez les déclarations de vos Items dans D_Items , de vos Blocs dans D_Blocs et des crafts dans D_crafts , la ou est inscris

    // votre code ici
    

    Vous aurez une erreur. Pour l'enlever , collez devant le nom de la variable qui déclare :

    votreclasseprincipale.
    

    Exemple :

    package mods.nono.MGSmod.common;
    
    import mods.nono.MGSmod.ammo.I_Akammo;
    import mods.nono.MGSmod.ammo.I_PKMammo;
    import mods.nono.MGSmod.ammo.I_Plomb;
    import mods.nono.MGSmod.ammo.I_Rocket;
    import mods.nono.MGSmod.ammo.I_SOammo;
    import mods.nono.MGSmod.ammo.I_SniperAmmo;
    import mods.nono.MGSmod.items.I_Box;
    import cpw.mods.fml.common.registry.LanguageRegistry;
    
    public class D_Items {
    
    public static void loadItems()
    {
    Main.Box = new I_Box(3998).setUnlocalizedName("Box");
    Main.SOammo = new I_SOammo(3999).setUnlocalizedName("SOammo");
    Main.Akammo = new I_Akammo(4000).setUnlocalizedName("Akammo");
    Main.PKMammo = new I_PKMammo(4001).setUnlocalizedName("PKMammo");
    Main.Rocket = new I_Rocket(4002).setUnlocalizedName("Rocket");
    Main.SniperAmmo = new I_SniperAmmo(4003).setUnlocalizedName("SniperAmmo");
    Main.plomb = new I_Plomb(4004).setUnlocalizedName("plomb");
    
    }
    }
    

    Vous voyez que j'ai n'ai pas les

    LanguageRegistry.addName(Main.Box, "Boite en carton");
    

    Si vous en avez peur , regardez plus bas.

    #4) Pour aller plus loin(4) Pour aller plus loin)
    Vous pouvez modifier ce système en décomposant en plusieurs catégories :

    package mods.nono.MGSmod.common;
    
    import mods.nono.MGSmod.items.I_Knife;
    import mods.nono.MGSmod.weapons.W_AK47;
    import mods.nono.MGSmod.weapons.W_Famas;
    import mods.nono.MGSmod.weapons.W_MK22;
    import mods.nono.MGSmod.weapons.W_Mosin;
    import mods.nono.MGSmod.weapons.W_Patriot;
    import mods.nono.MGSmod.weapons.W_Railgun;
    import mods.nono.MGSmod.weapons.W_SOCOM;
    import mods.nono.MGSmod.weapons.W_SPAS12;
    import mods.nono.MGSmod.weapons.W_SVD;
    import mods.nono.MGSmod.weapons.W_Unikita;
    import mods.nono.MGSmod.weapons.W_nikita;
    import mods.nono.MGSmod.weapons.W_pkm;
    import cpw.mods.fml.common.registry.LanguageRegistry;
    
    public class D_Weapons {
    
    public static void loadCQC()
    {
    Main.Knife = new I_Knife(3500, Main.MKnife).setUnlocalizedName("Knife");
    }
    public static void loadguns()
    {
    Main.Ak47 = new W_AK47(4005).setUnlocalizedName("Ak47");
    Main.Patriot = new W_Patriot(4006).setUnlocalizedName("Patriot");
    Main.FAMAS = new W_Famas(4007).setUnlocalizedName("FAMAS");
    Main.PKM = new W_pkm(4008).setUnlocalizedName("PKM");
    Main.SOCOM = new W_SOCOM(4009).setUnlocalizedName("SOCOM");
    Main.nikita = new W_nikita(4010).setUnlocalizedName("nikita");
    Main.MK22 = new W_MK22(4011).setUnlocalizedName("MK22");
    Main.SPAS12 = new W_SPAS12(4012).setUnlocalizedName("SPAS12");
    Main.MosinNagant = new W_Mosin(4013).setUnlocalizedName("MosinNagant");
    Main.SVD = new W_SVD(4014).setUnlocalizedName("SVD");
    Main.Unikita = new W_Unikita(666).setUnlocalizedName("Unikita");
    Main.Railgun = new W_Railgun(4015).setUnlocalizedName("Railgun");
    
    }
    }
    

    Vous voyez ici que j'ai loadCQC et loadguns
    N'oubliez pas de les importez dans la classe principale !

    
    D_Weapons.loadguns();
    D_Weapons.loadCQC();
    

    Ici , ma classe D_weapons est composé de deux catégories : loadCQC et loadguns.
    A quoi ça sert ? Quasiment a rien , juste a espacer , et surtout a ça :

    Revenons au fait que je n'ai pas ça

    LanguageRegistry.addName(Main.Box, "Boite en carton");
    

    Dans mes codes.

    Créez une classe D_Name.

    package mods.nono.MGSmod.common;
    
    import cpw.mods.fml.common.registry.LanguageRegistry;
    
    public class D_Names {
    
    public static void loadItems()
    {
    
    }
    }
    
    

    Importez la dans la classe principale

    D_Names.loadItems();
    

    Et dedans , copiez/collez tout simplement les LanguageRegistry.addName !
    Exemple :

    package mods.nono.MGSmod.common;
    
    import cpw.mods.fml.common.registry.LanguageRegistry;
    
    public class D_Names {
    
    public static void loadItems()
    {
    LanguageRegistry.addName(Main.Box, "Boite en carton");
    LanguageRegistry.addName(Main.SOammo, "munitions Mk.23");
    LanguageRegistry.addName(Main.Akammo, "munitions Ak-47");
    LanguageRegistry.addName(Main.PKMammo, "munitions PKM");
    LanguageRegistry.addName(Main.Rocket, "Roquette");
    LanguageRegistry.addName(Main.SniperAmmo, "Muntion de fusil Sniper");
    LanguageRegistry.addName(Main.plomb, "Muntion de SPAS12");
    
    }
    
    public static void loadCQC()
    {
    LanguageRegistry.addName(Main.Knife, "Couteau de survie");
    }
    
    public static void loadguns()
    {
    LanguageRegistry.addName(Main.Ak47, "Ak-47");
    LanguageRegistry.addName(Main.Patriot, "Patriot");
    LanguageRegistry.addName(Main.FAMAS, "FAMAS");
    LanguageRegistry.addName(Main.PKM, "Mitrailleuse lourde PKM");
    LanguageRegistry.addName(Main.SOCOM, "SOCOM Mk.23");
    LanguageRegistry.addName(Main.nikita, "nikita");
    LanguageRegistry.addName(Main.MK22, "MK.22");
    LanguageRegistry.addName(Main.SPAS12, "SPAS12");
    LanguageRegistry.addName(Main.MosinNagant, "MosinNagant");
    LanguageRegistry.addName(Main.SVD, "SVD");
    LanguageRegistry.addName(Main.Unikita, "nikita ubercharge");
    LanguageRegistry.addName(Main.Railgun, "Canon a rampe");
    
    }
    
    public static void loadArmors()
    {
    LanguageRegistry.addName(Main.OctocamoV, "Octocamo");
    LanguageRegistry.addName(Main.OctocamoJ, "Octocamo");
    LanguageRegistry.addName(Main.OctocamoB, "Octocamo");
    LanguageRegistry.addName(Main.CamoT, "Tenue de camouflage");
    LanguageRegistry.addName(Main.CamoV, "Tenue de camouflage");
    LanguageRegistry.addName(Main.CamoJ, "Tenue de camouflage");
    LanguageRegistry.addName(Main.CamoB, "Tenue de camouflage");
    }
    }
    

    Couplez tout ça avec ce que vous avez appris , et amusez vous !



  • Bien sympa se petit tuto ^^, par contre c'est un fail ou l'image que tu voulais montrai n’apparais pas ?
    Juste au dessus de : " 3)Déclarez vos Items, blocs et crafts ailleurs "


  • Administrateurs

    Honnêtement je n'aime pas ce genre de rangement. J'utilise plutot le nom du mod et ensuite les classes. 🙂 Ou bien un package par type de classes. 🙂

    Ex1 : MONMOD_BlockMyBlock

    Ex2: monmod.common.items/blocks/core/etc… 🙂



  • @'sevenno07':

    Bien sympa se petit tuto ^^, par contre c'est un fail ou l'image que tu voulais montrai n’apparais pas ?
    Juste au dessus de : " 3)Déclarez vos Items, blocs et crafts ailleurs "

    Pourtant moi je la vois


  • Moddeurs confirmés Rédacteurs Administrateurs

    Pour ton problème de rouge, c'était un /color qui n'avait rien à faire là.
    Le tutoriel est pas mal, mais :

    • Comme elias, j'aime pas ta façon de trier. En fait j'ai surtout horreur de mettre des _ dans mes noms de classes. En générale je mets ItemNomDeItem.
    • Chacun a ça propre façon de s'organiser, on peut pas vraiment globaliser ça dans un tutoriel.
    • Créer des void static et les appeler dans une autre classe, c'est du java, pas du modding forge. Je ferai peut-être une section tutoriel java, mais je suis pas sûr que ça sera super utile.

    Donc je refuse le tutoriel.


Log in to reply