16 août 2013, 22:47

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 !