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

Okay, j'édit dans pas longtemps...

Edit:

Code:
package net.minecraft.src;
 
public class mod_MoreBlocks extends BaseMod
{
    public static final Block hay = (new BlockHay(3000,0)).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundGrassFootstep).setBlockName("Hay");
        public static final Block lantern = (new BlockLantern(3001,0)).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundGrassFootstep).setBlockName("Lantern").setLightValue(1.0F);
        public static final Block hintw = (new BlockHintw(3002,0)).setHardness(0.5F).setResistance(1F).setStepSound(Block.soundWoodFootStep).setBlockName ("Hint Wood");
 
        private static int Texture1;
        private static int Texture2;
        private static int Texture3;
        private static int Texture4;
        private static int Texture5;
        private static int Texture6;
 
    public mod_MoreBlocks()
    {
        ModLoader.RegisterBlock(blockHay);
            ModLoader.RegisterBlock(blockLantern);
            ModLoader.RegisterBlock(blockHintw);
            ModLoader.AddName(BlockHay, "Hay");
            ModLoader.AddName(BlockLantern, "Lantern");
            ModLoader.AddName(BlockHintw, "Hint Wood");
            blockHay.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/blockHay.png");
            blockLantern.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/blockLantern.png");
            blockHintw.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/mod/blockHintw.png");
     
            ModLoader.AddRecipe(new ItemStack(blockHay, 5), new Object[]{
                "###", "###", "###", Character.valueOf('#'), Item.wheat});
            ModLoader.AddOverride(new ItemStack(blockLantern, 2), new Object[]{
                "#X#", "XYX", "#X#", Character.valueOf('#'), Block.glass, Character.valueOf('X'), Item.ingotIron, Character.valueOf('Y'), Dye.black});
            ModLoader.AddRecipe(new ItemStack(blockHintw, 6), new Object[]{
                "###", " ##", " # ", Character.valueOf('#'), Block.wood});
        }
public String getVersion()
    {
        return "1.0";
    }
}

Code:
package net.minecraft.src;
import java.util.Random;
 
public class BlockHay extends Block
{
    public BlockHay (int i, int j)
    {
        super(i, j, Material.grass);
        Texture1 = ModLoader.addOverride("/terrain.png", "/mod/Texture2.png");
        Texture2 = ModLoader.addOverride("/terrain.png", "/mod/Texture1.png");
        Texture3 = ModLoader.addOverride("/terrain.png", "/mod/Texture2.png");
        Texture4 = ModLoader.addOverride("/terrain.png", "/mod/Texture1.png");
        Texture5 = ModLoader.addOverride("/terrain.png", "/mod/Texture1.png");
        Texture6 = ModLoader.addOverride("/terrain.png", "/mod/Texture1.png");
    }
 
        public int getBlockTextureFromSide(int i)
        {
                if(i == 0)
                {
                        return Texture1;
                }
                        if(i == 1)
                {
                        return Texture2;
                }
                        if(i == 2)
                {
                        return Texture3;
                }
                        if(i == 3)
                {
                        return Texture4;
                }
                        if(i == 4)
                {
                        return Texture5;
                }else
                {
                        return Texture6;
                }
    }
 
    public int idDropped(int i, Random random)
    {
        return mod_moreBlocks.hay.blockID;
    }
}

Code:
package net.minecraft.src;
import java.util.Random;
 
public class BlockLantern extends Block
{
    public BlockLantern (int i, int j)
    {
        super(i, j, Material.glowstone);
        Texture1 = ModLoader.addOverride("/terrain.png", "/mod/Texture4.png");
        Texture2 = ModLoader.addOverride("/terrain.png", "/mod/Texture4.png");
        Texture3 = ModLoader.addOverride("/terrain.png", "/mod/Texture4.png");
        Texture4 = ModLoader.addOverride("/terrain.png", "/mod/Texture3.png");
        Texture5 = ModLoader.addOverride("/terrain.png", "/mod/Texture4.png");
        Texture6 = ModLoader.addOverride("/terrain.png", "/mod/Texture3.png");
    }
   
        public int getBlockTextureFromSide(int i)
        {
                if(i == 0)
                {
                        return Texture1;
                }
                        if(i == 1)
                {
                        return Texture2;
                }
                        if(i == 2)
                {
                        return Texture3;
                }
                        if(i == 3)
                {
                        return Texture4;
                }
                        if(i == 4)
                {
                        return Texture5;
                }else
                {
                        return Texture6;
                }
        }
 
    public int idDropped(int i, Random random)
    {
        return mod_moreBlocks.lantern.blockID;
    }
}

Code:
package net.minecraft.src;
import java.util.Random;
 
public class BlockHintw extends Block
{
    public BlockHintw (int i, int j)
    {
        super(i, j, Material.grass);
        Texture1 = ModLoader.addOverride("/terrain.png", "/mod/Texture5.png");
        Texture2 = ModLoader.addOverride("/terrain.png", "/mod/Texture6.png");
        Texture3 = ModLoader.addOverride("/terrain.png", "/mod/Texture6.png");
        Texture4 = ModLoader.addOverride("/terrain.png", "/mod/Texture6.png");
        Texture5 = ModLoader.addOverride("/terrain.png", "/mod/Texture6.png");
        Texture6 = ModLoader.addOverride("/terrain.png", "/mod/Texture6.png");
    }
   
        public int getBlockTextureFromSide(int i)
        {
                if(i == 0)
                {
                        return Texture1;
                }
                        if(i == 1)
                {
                        return Texture2;
                }
                        if(i == 2)
                {
                        return Texture3;
                }
                        if(i == 3)
                {
                        return Texture4;
                }
                        if(i == 4)
                {
                        return Texture5;
                }else
                {
                        return Texture6;
                }
        }
 
    public int idDropped(int i, Random random)
    {
        return mod_moreBlocks.hintw.blockID;
    }
}
 
Salut, jai recommencer a modder et sa fait longtemp que j'ai pas modder ..
Bon voila j'explique, j'ai fait la base d'un mod et je trouve 2 erreur mais je ne comprend pas les erreur pourtant j'ai rien changer a la base.
Voici l'erreur:

== MCP 5.6 (data: 5.6, client: 1.1, server: 1.1) ==
> Recompiling client...
'"C:\Program Files\Java\jdk1.6.0_27\bin\javac.exe" -g -source 1.6 -target 1.6 -c
lasspath "lib;lib\*;jars\bin\minecraft.jar;jars\bin\jinput.jar;jars\bin\lwjgl.ja
r;jars\bin\lwjgl_util.jar" -sourcepath src\minecraft -d bin\minecraft src\minecr
aft\net\minecraft\client\*.java src\minecraft\net\minecraft\isom\*.java src\mine
craft\net\minecraft\src\*.java conf\patches\ga.java conf\patches\Start.java' fai
led : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\BlockMyBloc.java:15: incompatible types
found : net.minecraft.src.Block
required: int
return mod_MyMod.myBloc;
^

src\minecraft\net\minecraft\src\mod_MyMod.java:3: net.minecraft.src.mod_MyMod is
not abstract and does not override abstract method load() in net.minecraft.src.
BaseMod
public class mod_MyMod extends BaseMod
^

2 errors
==================

FATAL ERROR
Traceback (most recent call last):
File "runtime\recompile.py", line 31, in recompile
commands.recompile(CLIENT)
File "C:\Users\benjamin\Desktop\Mcp\runtime\commands.py", line 736, in recompi
le
self.runcmd(forkcmd)
File "C:\Users\benjamin\Desktop\Mcp\runtime\commands.py", line 779, in runcmd
raise CalledProcessError(returncode, forkcmd, output)
CalledProcessError: Command '"C:\Program Files\Java\jdk1.6.0_27\bin\javac.exe" -
g -source 1.6 -target 1.6 -classpath "lib;lib\*;jars\bin\minecraft.jar;jars\bin\
jinput.jar;jars\bin\lwjgl.jar;jars\bin\lwjgl_util.jar" -sourcepath src\minecraft
-d bin\minecraft src\minecraft\net\minecraft\client\*.java src\minecraft\net\mi
necraft\isom\*.java src\minecraft\net\minecraft\src\*.java conf\patches\ga.java
conf\patches\Start.java' returned non-zero exit status 1

Voici le mod_MyMod:

Code:
package net.minecraft.src;
 
public class mod_MyMod extends BaseMod
{
    public mod_MyMod()
    {
        ModLoader.RegisterBlock(myBloc);
        ModLoader.AddRecipe(new ItemStack(myBloc, 1), new Object[]
        {"#",Character.valueOf('#'), Block.cobblestone});
    }
   
    public static final Block myBloc = (new
    BlockMyBloc(99,224)).setHardness(2.0F).setResistance(10F)
    .setStepSound(Block.soundStoneFootstep);
 
    public String Version()
    {
        return "1.5_01";
    }
}
Et le BlockMyBloc

Code:
package net.minecraft.src;
 
import java.util.Random;
 
public class BlockMyBloc extends Block
{
 
    public BlockMyBloc(int i, int j)
    {
        super(i, j, Material.rock);
    }
 
    public int idDropped(int i, Random random)
    {
        return mod_MyMod.myBloc;
    }
}
 
Ton erreur fatale, je l'ai déjà eu ^^ c'est un soucis entre python et java -_- Moi j'ai du coder sur mon ordi portable pour résoudre cette erreur --' Je parle de cette erreur:

Code:
2 errors
==================
 
FATAL ERROR
Traceback (most recent call last):
File "runtime\recompile.py", line 31, in recompile
commands.recompile(CLIENT)
File "C:\Users\benjamin\Desktop\Mcp\runtime\commands.py", line 736, in recompi
le
self.runcmd(forkcmd)
File "C:\Users\benjamin\Desktop\Mcp\runtime\commands.py", line 779, in runcmd
raise CalledProcessError(returncode, forkcmd, output)
CalledProcessError: Command '"C:\Program Files\Java\jdk1.6.0_27\bin\javac.exe" -
g -source 1.6 -target 1.6 -classpath "lib;lib\*;jars\bin\minecraft.jar;jars\bin\
jinput.jar;jars\bin\lwjgl.jar;jars\bin\lwjgl_util.jar" -sourcepath src\minecraft
-d bin\minecraft src\minecraft\net\minecraft\client\*.java src\minecraft\net\mi
necraft\isom\*.java src\minecraft\net\minecraft\src\*.java conf\patches\ga.java
conf\patches\Start.java' returned non-zero exit status 1
 
@Ryyfe

Ce n'est pas dans le fichier de ton mod mais dans le fichier de ton block que tu dois mettre les "public static final int TextureX"

@Elias54

L'erreur générée par python est dû à au code...
Il faut corriger les 2 erreurs signalées, mais en aucun cas ne toucher aux fichier de recompilation !