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

voilà les code :
du mod_MonMod:
package net.minecraft.src;
public abstract class mod_MonMod extends BaseMod
{
public static final Block monBloc2 = (new BlockMonBloc2(135, false))
.setHardness(1.5F)
.setResistance(10F)
.setStepSound(Block.soundStoneFootstep)
.setBlockName("Redstone dalle")
.setLightValue(0.5F);

public static final Block monBloc = (new BlockMonBloc(136, 235))
.setHardness(1.5F)
.setResistance(10F)
.setStepSound(Block.soundStoneFootstep)
.setBlockName("Redstone bloc")
.setLightValue(0.5F);

public mod_MonMod()
{
ModLoader.RegisterBlock(monBloc2);
ModLoader.AddRecipe(
new ItemStack(monBloc2, 1),
new Object[] {"###", "###", Character.valueOf('#'), Item.redstone});
ModLoader.AddName(monBloc2, "Redstone dalle");

ModLoader.RegisterBlock(monBloc);
ModLoader.AddRecipe(
new ItemStack(monBloc, 1),
new Object[] {"###", "###", "###", Character.valueOf('#'), Item.redstone});
ModLoader.AddName(monBloc, "Redstone bloc");
}

public String Version()
{
return "1.0.0";
}
}

et des deux blockMonBloc:
numéro 1:
package net.minecraft.src;
import java.util.Random;

public class BlockMonBloc extends Block
{
public BlockMonBloc(int i, int j)
{
super(i, 235, Material.rock);

}


public int idDropped(int i, Random random)
{
return mod_MonMod.monBloc.blockID;
}
}

numéro 2:
package net.minecraft.src;
import java.util.Random;

public class BlockMonBloc2 extends Block
{
public BlockMonBloc2(int i, boolean flag)
{
super(i, 235, Material.rock);

blockType = flag;
if(!flag)
{
setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
}
}

public void onBlockAdded(World world, int i, int j, int k)
{
if(this != Block.stairSingle)
{
super.onBlockAdded(world, i, j, k);
}
int l = world.getBlockId(i, j - 1, k);
int i1 = world.getBlockMetadata(i, j, k);
int j1 = world.getBlockMetadata(i, j - 1, k);
if(i1 != j1)
{
return;
}
if(l == stairSingle.blockID)
{
world.setBlockWithNotify(i, j, k, 0);
world.setBlockAndMetadataWithNotify(i, j - 1, k, Block.stairDouble.blockID, i1);
}
}
public boolean isOpaqueCube()
{
return blockType;
}
public int idDropped(int i, Random random)
{
return mod_MonMod.monBloc2.blockID;
}
private boolean blockType;
}
 
Moi j'ai le mêm problème que toi Luk, alors voila ce que j'ai essayé de faire mais sans succés :

mod_LightMod :

package net.minecraft.src;

public abstract class mod_LightMod extends BaseMod
{
public mod_LightMod()
{
ModLoader.RegisterBlock(lightBloc);
ModLoader.AddRecipe(new ItemStack(lightBloc, 1), new Object[]
{"#",Character.valueOf('#'), Block.cobblestone});
}
public static final Block lightBloc = (new
BlockLightBloc(383,154)).setHardness(2.0F).setResistance(10F)
.setStepSound(Block.soundStoneFootstep);
public abstract String getVersion()
{
return "1.0.0";
}
}

J'ai mis en police 6 (gros) ce que j'avais changé.
Cordialement
 
Code:
package net.minecraft.src;

public class mod_MyMod extends BaseMod
{
  @override
    public void load()
    {
        //RegisterBlock
        ModLoader.RegisterBlock(******);

        //AddNameBlock
        ModLoader.AddName(****** "*******");

        //RecipeBlock
        ModLoader.AddRecipe(new ItemStack (*******, 1),new Object[]
        {"###","ZXZ","ZXZ",Character.valueOf('#'),new ItemStack(Block.stairSingle,3, 2),Character.valueOf('Z'),Item.stick});
    }

    public static final Block ****** = (new******(200, ModLoader.addOverride("/terrain.png", "/***/***.png"))
    .setHardness(3F))
    .setBlockName("*****")
    .setResistance(10F);

@override
    public String getVersion()
    {
        return "1.8.1";
    }

}
voila un exemple d'un code qui marche, il faut maitenant mettre public void load() et public String getVersion() pour que cela marche (ou garder l'ancienne façon mais rajouter celle la vide a la fin de votre code)
 
Même sans ça ne marche pas
Voici à quoi ressemble mon code désormais :

mod_LightMod :
package net.minecraft.src;

public class mod_LightMod extends BaseMod
{
public void load()
{
ModLoader.RegisterBlock(lightBloc);
ModLoader.AddName(lightBloc, "Pas Beau");
ModLoader.AddRecipe(new ItemStack(lightBloc, 1), new Object[]
{"#",Character.valueOf('#'), Block.cobblestone});
}
public static final Block lightBloc = (new
BlockLightBloc(383,154)).setHardness(2.0F).setResistance(10F)
.setStepSound(Block.soundStoneFootstep);
public String getVersion()
{
return "1.0.0";
}
}

et le message d'erreur qui va avec lorsque je lance le startclient.bat :
Mods loaded: 1
ModLoader 1.0.0

Minecraft has crashed!
----------------------

Minecraft has stopped running because it encountered a problem.

If you wish to report this, please copy this entire text and email it to [email protected].
Please include a description of what you did when the error occured.



--- BEGIN ERROR REPORT 141ccf11 --------
Generated 11/12/11 13:43

Minecraft: Minecraft 1.0.0
OS: Windows 7 (amd64) version 6.1
Java: 1.7.0_01, Oracle Corporation
VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
LWJGL: 2.4.2
OpenGL: ATI Radeon HD 3450 version 3.3.11259 Compatibility Profile Context, ATI Technologies Inc.

java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at net.minecraft.src.ModLoader.addMod(ModLoader.java:265)
at net.minecraft.src.ModLoader.readFromClassPath(ModLoader.java:1214)
at net.minecraft.src.ModLoader.init(ModLoader.java:733)
at net.minecraft.src.ModLoader.AddAllRenderers(ModLoader.java:162)
at net.minecraft.src.RenderManager.<init>(RenderManager.java:104)
at net.minecraft.src.RenderManager.<clinit>(RenderManager.java:42)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:314)
at net.minecraft.client.Minecraft.run(Minecraft.java:613)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 383
at net.minecraft.src.Block.<init>(Block.java:209)
at net.minecraft.src.Block.<init>(Block.java:238)
at net.minecraft.src.BlockLightBloc.<init>(BlockLightBloc.java:9)
at net.minecraft.src.mod_LightMod.<clinit>(mod_LightMod.java:12)
... 15 more
--- END ERROR REPORT d9f8862d ----------

Et pour ce qui se poserai la question de pourquoi light alors que ça n'éclaire pas, c'est que j'essaye d'abord de matérialiser mon bloc.
Cordialement
 
Alors dans ton code ajoute ces 2 méthode a la fin :

Code:
        public void load()
        {
        }

Code:
        public String getVersion()
        {
            return "Met ce que tu veut ou alors met return null;";
        }