Modding FR

nostre

Aventurier
13 Novembre 2010
424
5
0
31
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

bé pour une fois je vais dire non car tu peux très bien télécharger le mod lost soul qui est sur se site et là tu devrais trouver facilement comment faire un mobs très simplement voilà désolé de dire non mais il faut se débrouiller un peu des fois
 
bon moi je up pour un problème toujours pas résolu alors voila j'ai créer un objet permettant de réparer les objets donc le but serai de le combiner avec l'objet utiliser pour réparer l'arme mais voila deux images expliquant mon problème.
 
Bonjour à tous.

J'ai un problème, je veux faire 2 objets pour un mod, mais voilà :

http://mineshack.olympe-network.com/upload/67BUG%20MCP.png

J'ai fait un mod_*.java
et 2 item*.java pour chaque objet donc.

Vous voulez les sources pour résoudre mon problème ?
 
mod_Interunity.java
package net.minecraft.src;
public class mod_Interunity extends BaseMod
{
public mod_Interunity()
{
Piece = (new ItemPiece(360)).setItemName("Piece d'or").setIconIndex(ModLoader.addOverride("/gui/items.png","mod/piece_or.png"));
ModLoader.AddName(Piece, "Piece d'or");
ModLoader.AddRecipe(new ItemStack(Piece, 1), new Object[]
{" # ","###"," # ",Character.valueOf('#'), Item.ingotGold});
Biere = (new ItemBiere(361)).setItemName("Biere").setIconIndex(ModLoader.addOverride("/gui/items.png","mod/biere.png"));
ModLoader.AddName(Biere, "Biere");
ModLoader.AddRecipe(new ItemStack(Biere, 1), new Object[]
{"# #","# #","###",Character.valueOf('#'), Block.glass});
}
public String Version()
{
return "1.6.6";
}
public static Item Piece;
public static Item Biere;
}

ItemPiece.java

package net.minecraft.src;
public class ItemPiece extends Item
{
public ItemPiece(int i)
{
super(i);
}
}


ItemBiere.java

package net.minecraft.src;

public class ItemBiere extends Item
{
private int healAmount;

public ItemBiere (int i, int j)
{
super(i);
healAmount = j;
maxStackSize = 1;
}

public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
itemstack.stackSize--;
entityplayer.heal(healAmount);
return itemstack;
}
}



Voilà, c'est pour le serveur Interunity.
 
Voila je ne peut pas t'aider attend un connaiseur bon val j'ai chercher mais sa me mais plein de NUL NUL NUL en majuscule surligner de noire...alors sa va pas vraiment m'aider tout sa ^^ pour ton probléme d'outil réparable:
LVL100 a dit:
Rebonjour, désolé de ma ( très ) longue absence inexpliquée. :(

Merci encore pour vos commentaires. :noel:
Le message d'ouverture à été édité afin de montrer la nouvelle version du mod Potions, ajoutant trois nouvelles potions. :noel:
( Même quatre, mais bon, la quatrième est plus ou moins inutile. :( )

Une petite question : pour ton mod qui rajoute de la glue, comment tu as fait pour rendre les armes et armures réparables ? Je planche moi-même sur un mod de réparation d'armures mais quand je fais mes recettes, je ne peut réparer que les armures neuves : dès qu'elles sont abimées, elles ne sont plus considérées comme faisant partit de mes recettes... peux tu m'expliquer comment contrer ça ?

J'ai eu le même problème : j'ai utilisé l'API de Plasticcraft, qui permet de réparer les outils avec le ducttape, pour ceux qui connaissent, et je l'ai adapté à ma façon. Bon, c'est plus ou moins du copier coller, mais 'faut pas le dire. :noel:

Pour permettre à l'item de réparer les outils, c'est comme ceci :
Code:
  private static ArrayList<ex> tools = new ArrayList(Arrays.asList(new ex[] { ITEM_REPARABLE_1, ITEM_REPARABLE2 }));
A insérer dans les premières lignes de ton mod, directement après le "public class mod_TONMOD extends BaseMod
{
"

Si j'ai bien compris, ça va permettre de définir une variable, nommé tools, contenant tout les objets que tu veux réparer. :(

Ensuite, dans les acolades du AddRecipes :
Code:
    for (int i = 0; i < tools.size(); i++) {
      ex localex = (ex)tools.get(i);
      paramfr.b(new gz(localex), new Object[] { new gz(TONITEM), new gz(TONITEM), new gz(localex, 1, -1) });

Ca va définir que les objets de la variable tools, même endommagés, peuvent être utilisé dans une formule comme suit :

X#X

Avec X ton objet qui répare,
et # l'objet réparé,
pour obtenir l'item #, tout neuf !

Ensuite, à la racine du mod ( après la première accolade, après public class mod_TONMOD, quoi. ), tu insères ça :
Code:
  public static void AddRepairs(int paramInt, ex paramex)
  {
    if (paramInt == 1) tools.add(paramex);
  }

  public static void AddRepairs(int paramInt, ex[] paramArrayOfex)
  {
    for (int i = 0; i < paramArrayOfex.length; i++)
      AddRepairs(paramInt, paramArrayOfex[i]);
  }

Et voilà, c'est c'que j'ai triffouillé dans l'API de Plastic Craft.
Si tu comprends pas c'que j'bafouille ( et ça m'étonnerai pas, je suis pas clair du tout, désolé. :noel: ), hésite pas à décompiler mon mod avec JD-Gui ou autre.

Voilà, bonne journée. :noel:
 
forceevent a dit:
Voila je ne peut pas t'aider attend un connaiseur bon val j'ai chercher mais sa me mais plein de NUL NUL NUL en majuscule surligner de noire...alors sa va pas vraiment m'aider tout sa ^^

tu mets les fichiers.class du mod dans minecraft.jar de MCP et tu décompile et là tu vas retrouver tout les fichiers que tu a rajouter au même endroits que tout les autres fichier donc dans src


mysterioxes a dit:
bon moi aussi j'ai un truc a demander a val dans enumtool
tu peut m'explique les valeur pliz avec le bois
WOOD("WOOD", 0, 0, 59, 2.0F, 0),

et bien enfaite j'en est aucune idée donc je pense que le 2.0F doit etre la résistance ou alors c'est le 59 enfin plutot le 59 et le 2.0F je pense que c'est pour l'épée les dégats que sa fait je pense voilà et le premier 0 j'en suis sur cette fois ^^ le nombre que tu ajouteras pour si tu fais des armure si tu veux qu'elle soit aussi résistance que le bois sa sera 0 et ainsi de suite donc voilà je te conseil de testé !
 
ok val j'ai compris enfete c'est écrit juste en bas bon enfin bref j'ai voulut créer des enumtool je c'est pas comment appeler sa mdr bon voila le code et les 35 erreurs mdr
Code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) braces deadcode 

package net.minecraft.src;


public enum EnumToolMaterial
{
    WOOD("WOOD", 0, 0, 59, 2.0F, 0),
    STONE("STONE", 1, 1, 131, 4F, 1),
    IRON("IRON", 2, 2, 250, 6F, 2),
    EMERALD("EMERALD", 3, 3, 1561, 8F, 3),
    GOLD("GOLD", 4, 0, 32, 12F, 0);
	MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
	DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
	CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
	ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
	PURE("PURE", 10, 10, 5000, 50F, 10);
/*
    public static EnumToolMaterial[] values()
    {
        return (EnumToolMaterial[])j.clone();
    }

    public static EnumToolMaterial valueOf(String s)
    {
        return (EnumToolMaterial)Enum.valueOf(net.minecraft.src.EnumToolMaterial.class, s);
    }
*/
    private EnumToolMaterial(String s, int i, int k, int l, float f, int i1)
    {
//        super(s, i);
        harvestLevel = k;
        maxUses = l;
        efficiencyOnProperMaterial = f;
        damageVsEntity = i1;
    }

    public int getMaxUses()
    {
        return maxUses;
    }

    public float getEfficiencyOnProperMaterial()
    {
        return efficiencyOnProperMaterial;
    }

    public int getDamageVsEntity()
    {
        return damageVsEntity;
    }

    public int getHarvestLevel()
    {
        return harvestLevel;
    }
/*
    public static final EnumToolMaterial WOOD;
    public static final EnumToolMaterial STONE;
    public static final EnumToolMaterial IRON;
    public static final EnumToolMaterial EMERALD;
    public static final EnumToolMaterial GOLD;
	public static final EnumToolMaterial MACHALITE;
	public static final EnumToolMaterial DRAGONITE;
	public static final EnumToolMaterial CARBALITE;
	public static final EnumToolMaterial ELTALITE;
	public static final EnumToolMaterial PURE;
*/
    private final int harvestLevel;
    private final int maxUses;
    private final float efficiencyOnProperMaterial;
    private final int damageVsEntity;
//    private static final EnumToolMaterial j[]; /* synthetic field */
/*
    static 
    {
        WOOD = new EnumToolMaterial("WOOD", 0, 0, 59, 2.0F, 0);
        STONE = new EnumToolMaterial("STONE", 1, 1, 131, 4F, 1);
        IRON = new EnumToolMaterial("IRON", 2, 2, 250, 6F, 2);
        EMERALD = new EnumToolMaterial("EMERALD", 3, 3, 1561, 8F, 3);
        GOLD = new EnumToolMaterial("GOLD", 4, 0, 32, 12F, 0);
		MACHALITE = new EnumToolMaterial("MACHALITE", 4, 3, 250, 50F, 1);
		DRAGONITE = new EnumToolMaterial("DRAGONITE", 10, 10, 500, 12F, 2);
		CARBALITE = new EnumToolMaterial("CARBALITE", 4, 6, 5000, 12F, 5);
		ELTALITE = new EnumToolMaterial("ELTALITE", 4, 9, 32, 12F, 10);
		PURE = new EnumToolMaterial("PURE", 10, 10, 5000, 50F, 10);
        j = (new EnumToolMaterial[] {
            WOOD, STONE, IRON, EMERALD, GOLD, MACHALITE, DRAGONITE, CARBALITE, ELTALITE,PURE
        });
    }
*/
}
puis ma console
Code:
== MCP v4.1 ==
> Recompiling client...
javac.exe -g -verbose -classpath "lib/;lib/*;jars/bin/minecraft.jar;jars/bin/jin
put.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\minec
raft\isom\*.java src/minecraft\net\minecraft\src\*.java  conf/patches/*.java fai
led.
Return code : 1

== ERRORS FOUND ==

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: invalid method declara
tion; return type required
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:15: illegal start of type
MACHALITE("MACHALITE", 4, 3, 250, 50F, 1);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: invalid method declara
tion; return type required
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:16: illegal start of type
DRAGONITE("DRAGONITE", 10, 10, 500, 5F, 2);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: invalid method declara
tion; return type required
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:17: illegal start of type
CARBALITE("CARBALITE", 4, 6, 5000, 10F, 5);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: invalid method declara
tion; return type required
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:18: illegal start of type
ELTALITE("ELTALITE", 4, 9, 32, 2F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: invalid method declara
tion; return type required
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

src\minecraft\net\minecraft\src\EnumToolMaterial.java:19: illegal start of type
PURE("PURE", 10, 10, 5000, 50F, 10);
^

35 errors
==================

> Done in 1.27 seconds
> Recompiling server...
!! Can not find server sources !!
Appuyez sur une touche pour continuer...
 
@ KiwiAtomique
Dans ton fichier bière.java, tu n'as qu'un constructeur avec deux entiers :

Code:
public ItemBiere (int i, int j)
{
super(i);
healAmount = j;
maxStackSize = 1;
}

Hors, tu utilise un constructeur avec un seul entier
Code:
Biere = (new ItemBiere(361)).setItemName("Biere").setIconIndex(ModLoader.addOverride("/gui/items.png","mod/biere.png"));

La solution serait de soit rajouter un constructeur avec un seul entier, soit rajouter une valeur à ItemBiere, comme ceci :
Code:
Biere = (new ItemBiere(361,[b]x[/b])).setItemName("Biere").setIconIndex(ModLoader.addOverride("/gui/items.png","mod/biere.png"));

où x serait la valeur de la restauration.