Modding FR

nostre

Aventurier
13 Novembre 2010
424
5
0
30
subject_mods_32.png

Minecraft est un jeu en plein développement,aussi bien du coté de chez Mojang que de celui de la communauté, qui ne cesse de développer toujours plus de mods et de extures packs.

Cependant, pour toute personne voulant tenter le modding de Minecraft,il faudra passer par les tutoriaux du forum officiel,où le français n'est pas vraiment courant.
De plus,si la personne en question ne connait pas un minimum certaines bases de code,sa devient vite un enfer de se lancer dans le domaines...

C'est pourquoi,devant l'absence total de tutoriel français sur le sujet,et afin d'encourager de nouveaux modder français,j'ai décidé de créer le 1er Tutoriel de Modding Minecraft FR.

Le but n'est pas seulement de créer un tutoriel en français,j'esseye de faire en sorte qu'il sois le plus accessible possible pour toutes personnes, compréhensible même pour des non initiés a toutes formes de codes (ou presque).

tutorial.gif


changelog.png
ChangeLog:
changelog.png

*27-02-11: Mise a jour des tutos I et III pour MCP 29a et ModLoader Beta 1.3_01v4.
*27-02-11: Correction d'une erreur dans le tuto II,merci a Woreck de me l'avoir fait remarquer !
*11-04-11: Mise a jour complète pour Minecraft Beta 1.4_01,MCP211 et ModLoader B1.4_01 v1.
*27-04-2011: Mise a jour pour Minecraft B1.5_01,MCP v2.12 et ModLoader v3 B1.5_01.
*30-04-2011: Correction d'une erreur avec les recettes,et mise a disposition des fichiers mod_MyMod.java et BlockMyBloc.java.
exclamation.gif
*29-05-11: Mise a jour pour Minecraft B1.6.5,MCP v3.3 et ModLoader v1 B1.6.5.


! Les liens suivants sont morts !

tuto.png

green-download-arrow-grey-line.png
Tutorial Modding FR - Téléchargement:
green-download-arrow-grey-line.png

asus_download_arrow004.gif
Tuto I - Téléchargement et installation
asus_download_arrow004.gif
Tuto II - Création d'un mod simple,ajout de nouveaux blocs
asus_download_arrow004.gif
Tuto III - Compilation et tests
asus_download_arrow004.gif
Tuto IV - Quelques petits trucs a savoir avant de continuer
asus_download_arrow004.gif
Tuto - Création de nouveaux objets
asus_download_arrow004.gif
Tuto - Ajouter des blocs et objets pour le four
asus_download_arrow004.gif
Tuto - Blocs – Autres possibilités
asus_download_arrow004.gif
Tuto - Autres possibilités - objets
asus_download_arrow004.gif
Sources du mod du Tuto II

Nouveaux fichiers ajoutés suite aux liens morts à la fin du message.
Il manque juste les "Sources du mod du Tuto II".
Je précise que ce sont les fichiers d'origine, le code est parfois obsolète !
 

Fichiers joints

bon sa fait très longtemps que je n'ai pas eu de problème (enfin la c'est un énorme trou de mémoire) j'aimerais quand faisant clique droit sur un bloc avec un item bien particulier ( des colorants) sa puisse changer la texture du bloc quelqu'un serais comment faire ?


Mouai un énorme trou de mémoire vraiment très gros :gni:

Rajoute ça dans le code de ton block :
Code:
public boolean onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
     Item item = entityplayer.inventory.mainInventory.getCurrentItem();

     if(item != null && item == (new ItemStack(Item.dye, 1, numeroDuColorant)))
     {
           // Action...
           blockIndexInTexture = ModLoader.addOverride("/terrain.png","taTexture.png");

           return true;
     }
     return false;
}
Après reste a actualiser ta texture, mais je pense que ça devrais marcher comme ça ?
 
Bonjour! Je continue de demander votre aide car j'aimerais créer une fontaine avec un nouveau liquide(que je ne sais pas faire) qui redonne des vies quand on se baigne dedans. On ne pourrais pas reprendre le liquide et la fontaine aparaisserait de manière aléatoire sur la carte mais uniquement sur l'herbe.
J'aimerais aussi créer des trappes, des coffres et des fours.

Aidez-moi s'il-vous-plaît!
 
rafoudiablol a dit:
bon sa fait très longtemps que je n'ai pas eu de problème (enfin la c'est un énorme trou de mémoire) j'aimerais quand faisant clique droit sur un bloc avec un item bien particulier ( des colorants) sa puisse changer la texture du bloc quelqu'un serais comment faire ?


Mouai un énorme trou de mémoire vraiment très gros :gni:

Rajoute ça dans le code de ton block :
Code:
public boolean onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
     Item item = entityplayer.inventory.mainInventory.getCurrentItem();

     if(item != null && item == (new ItemStack(Item.dye, 1, numeroDuColorant)))
     {
           // Action...
           blockIndexInTexture = ModLoader.addOverride("/terrain.png","taTexture.png");

           return true;
     }
     return false;
}
Après reste a actualiser ta texture, mais je pense que ça devrais marcher comme ça ?

merci pour ta réponse ^^
 
Bonjour, c'est encore moi!

Dernièrement, j'ai essayé de faire un bloc avec une texture différente sur chaque face. Tout vas bien, aucune erreur à la recompilation, aucune non plus au lancement du jeu mais dès que je lance un monde, le chargement du monde s'arrête sur "Simulating world for a bit" et mon ordi rame à mort.

Voici le code du bloc:
Code:
public class BlockCobbledRoad extends Block
{
	public int getBlockTextureFromSide(int i)
    {
        if(i == 0)
        {
            return Texture1;
        }
		else
        {
            return Texture2;
        }
    }
	public BlockCobbledRoad(int i, int j)
	{
		super(i, j, Material.rock);
		Texture1 = ModLoader.addOverride("/terrain.png", "/trotFunky's/BClayCobblestone.png");
		Texture2 = ModLoader.addOverride("/terrain.png", "/trotFunky's/OriginalStone.png");
	}

	public int idDropped(int i, Random random)
	{
		return mod_Deco.roadBlock.blockID;
	}
	
	public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
    {
        float f = 0.125F;
        return AxisAlignedBB.getBoundingBoxFromPool(i, j, k, i + 1, (float)(j + 1) - f, k + 1);
    }

    public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity)
    {
        entity.motionX *= 1.12D;
        entity.motionZ *= 1.12D;
    }
	public int Texture1;
	public int Texture2;
}

Voilà, si vous avez besoin de celui du mod, demandez!
 
Code:
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
    {
        float f = 0.125F;
        return AxisAlignedBB.getBoundingBoxFromPool(i, j, k, i + 1, (float)(j + 1) - f, k + 1);
    }

Je sais pas si c'est un problème de re-compilation ( celui utilisé par MCP est un peu pourri )
Mais je pense ta fonction s'appelles elle-même !
Cela génère une boucle infinie, pas étonnant qu'il rame à mort ^^

Essaye au moins de retirer ce bout de code, je pense que ça marchera
 
rafoudiablol a dit:
Code:
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
    {
        float f = 0.125F;
        return AxisAlignedBB.getBoundingBoxFromPool(i, j, k, i + 1, (float)(j + 1) - f, k + 1);
    }
Mais je pense ta fonction s'appelles elle-même !

Non, la fonction appelée dans le return est dans le fichier AxisAlignedBB, c'est pas le même nom et pas les mêmes arguments non plus
 
POur le code que tu as signalé, aucun bug, je l'avais testé avant. C'est juste le code de la soulsand mais avec des valeurs positives!

Sinon, voici le code du mod:

Code:
package net.minecraft.src;

public class mod_Deco extends BaseMod
{
	public mod_Deco()
	{
//Crafts des Items, ID et textures
			cobblestoneTile = (new ItemCobblestoneTile(201)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/trotFunky's/ICobbleTile.png")).setItemName("cobblestoneTile");
			ModLoader.AddName(cobblestoneTile, "Cobblestone Tile");
			ModLoader.AddRecipe(new ItemStack(cobblestoneTile, 2), new Object[] 
			{"# "," #",Character.valueOf('#'), Block.cobblestone});
			ModLoader.AddRecipe(new ItemStack(Item.silk, 4), new Object[] 
			{"#",Character.valueOf('#'), Block.cloth});
			stoneTile = (new ItemStoneTile(202)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/trotFunky's/IStoneTile.png")).setItemName("stoneTile");
			ModLoader.AddName(stoneTile, "Stone Tile");
			ModLoader.AddRecipe(new ItemStack(stoneTile, 2), new Object[] 
			{"# "," #",Character.valueOf('#'), Block.stone});
			clayCobblestone = (new ItemClayCobblestone(203)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/trotFunky's/IClayCobblestone.png")).setItemName("clayCobblestone");
			ModLoader.AddName(clayCobblestone, "Clay Cobblestone");
			ModLoader.AddRecipe(new ItemStack(clayCobblestone, 4), new Object[] 
			{" # ","# #"," # ",Character.valueOf('#'), Item.brick});
			cookedCobblestone = (new ItemCookedCobblestone(204)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/trotFunky's/ICookedCobblestone.png")).setItemName("cookedCobblestone");
			ModLoader.AddName(cookedCobblestone, "Cooked Clay Cobblestone");
			cimentBucket = (new ItemCimentBucket(205)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/trotFunky's/ICimentBucket.png")).setItemName("cimentBucket");
			ModLoader.AddName(cimentBucket, "Ciment Bucket");
			ModLoader.AddRecipe(new ItemStack(cimentBucket, 1), new Object[] 
			{"WXW"," # ",Character.valueOf('#'), Item.bucketWater ,Character.valueOf('W'), Block.sand ,Character.valueOf('X'), Item.clay});
//Déclaration des blocs
	ModLoader.RegisterBlock(cobblestoneBrick);
	ModLoader.RegisterBlock(tilesBlock);
	ModLoader.RegisterBlock(lampBlock);
	ModLoader.RegisterBlock(roadBlock);
//Craft et combien il donne
	ModLoader.AddRecipe(new ItemStack(cobblestoneBrick, 4), new Object[] {"##","##",Character.valueOf('#'), Block.cobblestone});
	ModLoader.AddRecipe(new ItemStack(tilesBlock, 1), new Object[] {"#X","X#",Character.valueOf('#'), mod_Deco.cobblestoneTile, Character.valueOf('X'), mod_Deco.stoneTile});
	ModLoader.AddRecipe(new ItemStack(lampBlock, 1), new Object[] {" # ","#X#"," # ",Character.valueOf('#'), Block.glass, Character.valueOf('X'), Block.glowStone});
	ModLoader.AddRecipe(new ItemStack(roadBlock, 1), new Object[] {"###","WXW",Character.valueOf('#'), mod_Deco.cookedCobblestone ,Character.valueOf('X'), mod_Deco.cimentBucket,Character.valueOf('W'), Block.stone});
//Ajouts pour le four
	ModLoader.AddSmelting(clayCobblestone.shiftedIndex, new ItemStack(cookedCobblestone, 1));
//Nom du bloc(Quand on passe la souris) 
	ModLoader.AddName(cobblestoneBrick, "Cobblestone Brick");
	ModLoader.AddName(tilesBlock, "Tiles");
	ModLoader.AddName(lampBlock, "Lamp");
	ModLoader.AddName(roadBlock, "Cobbled Road");
	}
//Ligne de définition du bloc(ID,texture,nom,dûretée...):
	public static final Block cobblestoneBrick = (new BlockCobblestoneBrick(101,ModLoader.addOverride("/terrain.png", "/trotFunky's/BCobbleBrick.png"))).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundStoneFootstep).setBlockName("Cobblestone Brick");
	public static final Block tilesBlock = (new BlockTiles(102,ModLoader.addOverride("/terrain.png", "/trotFunky's/BTiles.png"))).setHardness(0.4F).setResistance(0.1F).setStepSound(Block.soundStoneFootstep).setBlockName("Tiles");
	public static final Block lampBlock = (new BlockLamp(103,ModLoader.addOverride("/terrain.png", "/trotFunky's/BLamp.png"))).setHardness(0.3F).setResistance(0.3F).setStepSound(Block.soundGlassFootstep).setBlockName("Lamp").setLightValue(1.0F);
	public static final Block roadBlock = (new BlockCobbledRoad(0,224)).setHardness(0.4F).setResistance(0.1F).setStepSound(Block.soundStoneFootstep).setBlockName("Cobbled Road").setLightValue(0.75F);
	public String Version()
	{
	return "1.7.3";
	}
//Déclaration des items
	public static Item cobblestoneTile;
	public static Item stoneTile;
	public static Item clayCobblestone;
	public static Item cookedCobblestone;
	public static Item cimentBucket;
}

Voilà!
 
Gg le tuto!
Un problème m'est survenus au tuto III, j'ai fait un petit retour en arrière au tuto I :
Tuto I a dit:
Maintenant,rendez vous dans le dossier "src" qui vient d’être créé. Vérifiez que s'y trouve bien un
dossier nommé"minecraft".Celui ci contient les sources décompilé du jeu.

Le dossier s'est créer, mais il n'y a rien dedans . . .
Je n'en trouve pas la cause ._.