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

leTheminecrafter a dit:
Bonjour,j'ai 2 problème pour mon bloc,voici le code

Code:
package net.minecraft.src;
public class mod_plasticglass extends BaseMod
{
public mod_plasticglass()
{
ModLoader.RegisterBlock(VerreEnPlastique);
ModLoader.AddRecipe(new ItemStack(VerreEnPlastique, 1), new Object[]
{"#",Character.valueOf('#'), Block.glass});
ModLoader.AddName(VerreEnPlastique, "VerreEnPlastique");
}
public void RegisterTextureOverrides()
{
ModLoader.addOverride("/gui/items.png", "/plasticglass/1.png");
}
public static final Block VerreEnPlastique = (new
BlockVerreEnPlastique(99,ModLoader.addOverride("/terrain.png", "/plasticglass/1.png"))).setHardness(2.0F).setResistance(10F)
.setStepSound(Block.soundglassFootstep).setBlockName("VerreEnPlastique");
public String Version()
{
return "1.7.3";
}
}

Voici mes problème :( :
-mon cube ne prend pas sa texture (bref il est tout rose)
et
-mon cube na pas de nom(j'ai essayée mais marche pas :( )
Voila,merci d'avence

leTheminecrafter

EDIT:c'est le code de mod_plasticglass

Salut, tous ton codage est coller comme sa ?
 
bon j'ai essayer de le refaire car c’était du bouillit donc voila

Code:
package net.minecraft.src;
public class mod_plasticglass extends BaseMod
{
public mod_plasticglass()
{
ModLoader.RegisterBlock(VerreEnPlastique);
ModLoader.AddName(VerreEnPlastique, "VerreEnPlastique");
}
{
ModLoader.AddRecipe(new ItemStack(VerreEnPlastique, 1), new Object[]
{"#",Character.valueOf('#'), Block.glass});
}
public static Block VerreEnPlastique = (new BlockVerreEnPlastique(99,ModLoader.addOverride("/terrain.png", "/plasticglass/1.png"))).setHardness(2.0F).setBlockName("VerreEnPlastique");
{
return "1.7.3";
}
}

voila tu avait mit des truc inutile

Bon a moi de mettre mon problème j'ai crée un mob et je voudrais qu'il attaque comme le loup donc qui soit passif puis des q'u'on l'attaque qu'il soit agressif mais le problème c'est que le mob fonce sur moi mais ne m’attaque pas

Code:
package net.minecraft.src;

import java.util.List;
import java.util.Random;

public class Entitymosswine extends EntityMob
{

    public Entitymosswine(World world)
    {
        super(world);
        angerLevel = 0;
        randomSoundDelay = 0;
        texture = "/mob/mosswinne.png";
        moveSpeed = 0.4F;
        health *= 10;
        attackStrength = 10;
        setSize(2.0F, 2.0F);
        isImmuneToFire = true;
    }

    public void onUpdate()
    {
        moveSpeed = playerToAttack != null ? 0.95F : 0.5F;
        if(randomSoundDelay > 0 && --randomSoundDelay == 0)
        {
            worldObj.playSoundAtEntity(this, "mob.mosswineangry", getSoundVolume() * 2.0F, ((rand.nextFloat() - rand.nextFloat()) * 0.2F + 1.0F) * 1.8F);
        }
        super.onUpdate();
    }

    public void writeEntityToNBT(NBTTagCompound nbttagcompound)
    {
        super.writeEntityToNBT(nbttagcompound);
        nbttagcompound.setShort("Anger", (short)angerLevel);
    }

    public void readEntityFromNBT(NBTTagCompound nbttagcompound)
    {
        super.readEntityFromNBT(nbttagcompound);
        angerLevel = nbttagcompound.getShort("Anger");
    }

    protected Entity findPlayerToAttack()
    {
        if(angerLevel == 0)
        {
            return null;
        } else
        {
            return super.findPlayerToAttack();
        }
    }

    public void onLivingUpdate()
    {
        super.onLivingUpdate();
    }

    public boolean attackEntityFrom(Entity entity, int i)
    {
        if(entity instanceof EntityPlayer)
        {
            List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.expand(32D, 32D, 32D));
            for(int j = 0; j < list.size(); j++)
            {
                Entity entity1 = (Entity)list.get(j);
                if(entity1 instanceof Entitymosswine)
                {
                    Entitymosswine Entitymosswine = (Entitymosswine)entity1;
                    Entitymosswine.becomeAngryAt(entity);
                }
            }

            becomeAngryAt(entity);
        }
        return super.attackEntityFrom(entity, i);
    }

    private void becomeAngryAt(Entity entity)
    {
        playerToAttack = entity;
        angerLevel = 400 + rand.nextInt(400);
        randomSoundDelay = rand.nextInt(40);
    }

    protected String getLivingSound()
    {
        return "mob.pig";
    }

    protected String getHurtSound()
    {
        return "mob.pig";
    }

    protected String getDeathSound()
    {
        return "mob.pigdeath";
    }

    protected int getDropItemId()
    {
        if(fire > 0)
        {
            return Item.porkCooked.shiftedIndex;
        } else
        {
            return Item.porkRaw.shiftedIndex;
        }
    }

    public ItemStack getHeldItem()
    {
        return defaultHeldItem;
    }

    private int angerLevel;
    private int randomSoundDelay;
    private static final ItemStack defaultHeldItem;

    static 
    {
        defaultHeldItem = new ItemStack(Item.swordStone, 1);
    }
}
 
b0e0n0 a dit:
leTheminecrafter a dit:
Bonjour,j'ai 2 problème pour mon bloc,voici le code

Code:
package net.minecraft.src;
public class mod_plasticglass extends BaseMod
{
public mod_plasticglass()
{
ModLoader.RegisterBlock(VerreEnPlastique);
ModLoader.AddRecipe(new ItemStack(VerreEnPlastique, 1), new Object[]
{"#",Character.valueOf('#'), Block.glass});
ModLoader.AddName(VerreEnPlastique, "VerreEnPlastique");
}
public void RegisterTextureOverrides()
{
ModLoader.addOverride("/gui/items.png", "/plasticglass/1.png");
}
public static final Block VerreEnPlastique = (new
BlockVerreEnPlastique(99,ModLoader.addOverride("/terrain.png", "/plasticglass/1.png"))).setHardness(2.0F).setResistance(10F)
.setStepSound(Block.soundglassFootstep).setBlockName("VerreEnPlastique");
public String Version()
{
return "1.7.3";
}
}

Voici mes problème :( :
-mon cube ne prend pas sa texture (bref il est tout rose)
et
-mon cube na pas de nom(j'ai essayée mais marche pas :( )
Voila,merci d'avence

leTheminecrafter

EDIT:c'est le code de mod_plasticglass

Salut, tous ton codage est coller comme sa ?

Nan,c'est le bloc-note qui fait sa sinon en jeux il marche le mod mais le cube et rose (pourtant j'ai fait comme il y est écrit sur le tuto pour d'autre possibilitée de bloc mais marche pas :( )pareil pour le nom,alors c'est grave docteur :hap:
 
Déjà, quand tu appelles deux fois la même texture, tu peut être certain que çe ne marchera pas... Le ModLoader essayera de mettre deux fois la même texture, donc évite d'appeler AddOverdrive plusieurs fois pour le même fichier :)

Retire ton RegisterTextureOverrides(), il ne sert pas à grand chose ici et ça devrait éviter bien de problèmes ^^"

Pour le problème du nom, essaye d'inverser les lignes RegisterBlock et addName pour créer le nom avant d'enregistrer le block.
 
Essaye de remplacer ta fonction corresspondante par ça :

Code:
public boolean attackEntityFrom(Entity entity, int i)
    {
        if(entity instanceof EntityPlayer)
        {
            List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.expand(32D, 32D, 32D));
            for(int j = 0; j < list.size(); j++)
            {
                Entity entity1 = (Entity)list.get(j);
                if(entity1 instanceof Entitymosswine)
                {
                    Entitymosswine Entitymosswine = (Entitymosswine)entity1;
                    Entitymosswine.becomeAngryAt(entity);
                }
            }

            becomeAngryAt(entity);                   
            attackEntity(entity, 1.0F); // Rajoute ça voir
        }
        return super.attackEntityFrom(entity, i);
    }
 
Bonsoir !

J'aimerais créer un mob "humain" en quelques sortes, comme vous et moi dans Minecraft. Seulement voilà mon ModelMonMob bug apparemment :( voici le code que j'ai fait :

Code:
package net.minecraft.src;

 public class ModelMonMob extends ModelBiped
 {

      public ModelMonMob()
      {
          field_1279_h = false;
         field_1278_i = false;
         isSneak = false;
         bipedCloak = new ModelRenderer(0, 0);
         bipedCloak.addBox(-5F, 0.0F, -1F, 10, 16, 1, f);
         bipedEars = new ModelRenderer(24, 0);
         bipedEars.addBox(-3F, -6F, -1F, 6, 6, 1, f);
         bipedHead = new ModelRenderer(0, 0);
         bipedHead.addBox(-4F, -8F, -4F, 8, 8, 8, f);
         bipedHead.setRotationPoint(0.0F, 0.0F + f1, 0.0F);
         bipedHeadwear = new ModelRenderer(32, 0);
         bipedHeadwear.addBox(-4F, -8F, -4F, 8, 8, 8, f + 0.5F);
         bipedHeadwear.setRotationPoint(0.0F, 0.0F + f1, 0.0F);
         bipedBody = new ModelRenderer(16, 16);
         bipedBody.addBox(-4F, 0.0F, -2F, 8, 12, 4, f);
         bipedBody.setRotationPoint(0.0F, 0.0F + f1, 0.0F);
         bipedRightArm = new ModelRenderer(40, 16);
         bipedRightArm.addBox(-3F, -2F, -2F, 4, 12, 4, f);
         bipedRightArm.setRotationPoint(-5F, 2.0F + f1, 0.0F);
         bipedLeftArm = new ModelRenderer(40, 16);
         bipedLeftArm.mirror = true;
         bipedLeftArm.addBox(-1F, -2F, -2F, 4, 12, 4, f);
         bipedLeftArm.setRotationPoint(5F, 2.0F + f1, 0.0F);
         bipedRightLeg = new ModelRenderer(0, 16);
         bipedRightLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, f);
         bipedRightLeg.setRotationPoint(-2F, 12F + f1, 0.0F);
         bipedLeftLeg = new ModelRenderer(0, 16);
         bipedLeftLeg.mirror = true;
         bipedLeftLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, f);
         bipedLeftLeg.setRotationPoint(2.0F, 12F + f1, 0.0F);
     
     }

      public void render(float f, float f1, float f2, float f3, float f4, float f5)
      {
          setRotationAngles(f, f1, f2, f3, f4, f5);
         bipedHead.render(f5);
         bipedBody.render(f5);
         bipedRightArm.render(f5);
         bipedLeftArm.render(f5);
         bipedRightLeg.render(f5);
         bipedLeftLeg.render(f5);
         bipedHeadwear.render(f5);
      }

      public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
      {
          bipedHead.rotateAngleY = f3 / 57.29578F;
         bipedHead.rotateAngleX = f4 / 57.29578F;
         bipedHeadwear.rotateAngleY = bipedHead.rotateAngleY;
         bipedHeadwear.rotateAngleX = bipedHead.rotateAngleX;
         bipedRightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
         bipedLeftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;
         bipedRightArm.rotateAngleZ = 0.0F;
         bipedLeftArm.rotateAngleZ = 0.0F;
         bipedRightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1;
         bipedLeftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 1.4F * f1;
         bipedRightLeg.rotateAngleY = 0.0F;
         bipedLeftLeg.rotateAngleY = 0.0F;
         if(isRiding)
         {
             bipedRightArm.rotateAngleX += -0.6283185F;
             bipedLeftArm.rotateAngleX += -0.6283185F;
             bipedRightLeg.rotateAngleX = -1.256637F;
             bipedLeftLeg.rotateAngleX = -1.256637F;
             bipedRightLeg.rotateAngleY = 0.3141593F;
             bipedLeftLeg.rotateAngleY = -0.3141593F;
         }
         if(field_1279_h)
         {
             bipedLeftArm.rotateAngleX = bipedLeftArm.rotateAngleX * 0.5F - 0.3141593F;
         }
         if(field_1278_i)
         {
             bipedRightArm.rotateAngleX = bipedRightArm.rotateAngleX * 0.5F - 0.3141593F;
         }
         bipedRightArm.rotateAngleY = 0.0F;
         bipedLeftArm.rotateAngleY = 0.0F;
         if(onGround > -9990F)
         {
             float f6 = onGround;
             bipedBody.rotateAngleY = MathHelper.sin(MathHelper.sqrt_float(f6) * 3.141593F * 2.0F) * 0.2F;
             bipedRightArm.rotationPointZ = MathHelper.sin(bipedBody.rotateAngleY) * 5F;
             bipedRightArm.rotationPointX = -MathHelper.cos(bipedBody.rotateAngleY) * 5F;
             bipedLeftArm.rotationPointZ = -MathHelper.sin(bipedBody.rotateAngleY) * 5F;
             bipedLeftArm.rotationPointX = MathHelper.cos(bipedBody.rotateAngleY) * 5F;
             bipedRightArm.rotateAngleY += bipedBody.rotateAngleY;
             bipedLeftArm.rotateAngleY += bipedBody.rotateAngleY;
             bipedLeftArm.rotateAngleX += bipedBody.rotateAngleY;
             f6 = 1.0F - onGround;
             f6 *= f6;
             f6 *= f6;
             f6 = 1.0F - f6;
             float f7 = MathHelper.sin(f6 * 3.141593F);
             float f8 = MathHelper.sin(onGround * 3.141593F) * -(bipedHead.rotateAngleX - 0.7F) * 0.75F;
             bipedRightArm.rotateAngleX -= (double)f7 * 1.2D + (double)f8;
             bipedRightArm.rotateAngleY += bipedBody.rotateAngleY * 2.0F;
             bipedRightArm.rotateAngleZ = MathHelper.sin(onGround * 3.141593F) * -0.4F;
         }
         if(isSneak)
         {
             bipedBody.rotateAngleX = 0.5F;
             bipedRightLeg.rotateAngleX -= 0.0F;
             bipedLeftLeg.rotateAngleX -= 0.0F;
             bipedRightArm.rotateAngleX += 0.4F;
             bipedLeftArm.rotateAngleX += 0.4F;
             bipedRightLeg.rotationPointZ = 4F;
             bipedLeftLeg.rotationPointZ = 4F;
             bipedRightLeg.rotationPointY = 9F;
             bipedLeftLeg.rotationPointY = 9F;
             bipedHead.rotationPointY = 1.0F;
         } else
         {
             bipedBody.rotateAngleX = 0.0F;
             bipedRightLeg.rotationPointZ = 0.0F;
             bipedLeftLeg.rotationPointZ = 0.0F;
             bipedRightLeg.rotationPointY = 12F;
             bipedLeftLeg.rotationPointY = 12F;
             bipedHead.rotationPointY = 0.0F;
         }
         bipedRightArm.rotateAngleZ += MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
         bipedLeftArm.rotateAngleZ -= MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
         bipedRightArm.rotateAngleX += MathHelper.sin(f2 * 0.067F) * 0.05F;
         bipedLeftArm.rotateAngleX -= MathHelper.sin(f2 * 0.067F) * 0.05F;
     }
 
Vekoros pour créer un mob humain tu n'a pas besoin de recréer le model, il te suffit de créer une nouvelle entité. Pour plus d'information rend-toi sur mon tutoriel (signature) et si cela te parait toujours flou demande moi par MP.

Je suis de retour et bien décidé à aider tout ceux qui en on besoin ! :p