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

De toute façon,je doute que tu joue avec le test_game.

Pour testé,installe directement ton mod dans le "vrai" minecraft.jar,celui de dossier .minecraft\bin.
 
Donc mes mobs sont bien en 64x32, par contre mais objets sont en 16x16 est-ce que je doit les mettre dans un seul et même "chipset" c'est à dire dans la même image ? Parce que sinon y'a que ça comme problème au niveau des tailles.
 
@Sorax: Non,généralement on utilise des images séparé.
Vérifie plutôt ton code alors,il doit y avoir une erreur quelque part.

@Ryffe: Ben dans le dossier MCP pourquoi ?
 
Bon bah je vais repasser mon code alors, parce que là je vois vraiment pas (attention y'a beaucoup de truc :)).

Alors, mod_JungleCraft :

Code:
package net.minecraft.src;
	import java.util.*;
	import java.util.Map;
	public class mod_JungleCraft extends BaseMod
	{
        public String Version()
        {
            return "1.5_01";
        }
        
        public mod_JungleCraft()
        {//Recette
        ModLoader.AddRecipe(new ItemStack(mybowlMilk, 1), new Object[] {"A", "B", 
		Character.valueOf('A'), ItemBucket.bucketMilk, Character.valueOf('B'), Item.bowlEmpty}); //Recette du bol de lait
        
		//Mobs spawn
		ModLoader.AddSpawn(EntityMyGorille.class, 5, EnumCreatureType.monster); //Génération du gorille
		ModLoader.RegisterEntityID(EntityMyGorille.class, "Gorille", ModLoader.getUniqueEntityId());
		ModLoader.AddSpawn(EntityGiantZombie.class, 1, EnumCreatureType.monster); //Génération du zombie Géant
		ModLoader.RegisterEntityID(EntityGiantZombie.class, "Giant Zombie", ModLoader.getUniqueEntityId());
		
		
		}
		
		 public void AddARenderer(Map map)
		
			{
			map.put(EntityMyGorille.class, new RenderBiped(new ModelBiped(),0.9F));//Formation du gorille !modification possible!	
			}
        
		public void addItems()
			{
			ModLoader.AddName(mybowlMilk, "Bol de lait");
			ModLoader.AddName(mybanane, "Banane");
			}
		
			
	public static final Item mybowlMilk = 
        (new ItemMybowlMilk(100,226)).setIconIndex
        (ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/boldelait.png"));
		//Propriété du bol de lait
		
	public static final Item mybanane =
		(new ItemMyBanane(101,226)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/banane.png"));
		//Propriété de la banane
        
        
    }

ItemMybowlMilk :

Code:
package net.minecraft.src;
public class ItemMybowlMilk extends ItemFood
{
    public ItemMybowlMilk(int i, int j)
        {
          super(i, j, false);
          maxStackSize = 1;
        }
    public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
        {
          entityplayer.heal(1);
          super.onItemRightClick(itemstack, world, entityplayer);
          return new ItemStack(Item.bowlEmpty);
        }    
}

ItemMyBanane :

Code:
package net.minecraft.src;
public class ItemMyBanane extends ItemFood
{
	public ItemMyBanane(int i, int j)
		{
		  super(i, j, false);
		  maxStackSize = 1;
		  healAmount = 1;
		}

private int healAmount;		
}

EntityMyGorille :

Code:
package net.minecraft.src;

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

public class EntityMyGorille extends EntityMob
{

    public EntityMyGorille(World world)
    {
        super(world);
        texture = "/mob/gorille.png";
        moveSpeed = 1.0F;
        isImmuneToFire = true;
		attackStrength = 5;

	}

    public int getMaxSpawnedInChunk()
    {
    return 6;
    }

    public boolean getCanSpawnHere()
    {
             if(worldObj.countEntities(this.getClass()) >= 1500){
            return false;
        }
        int i = MathHelper.floor_double(posX);
        int j = MathHelper.floor_double(boundingBox.minY);
        int k = MathHelper.floor_double(posZ);
        int l = worldObj.getBlockId(i, j - 1, k);
        return worldObj.checkIfAABBIsClear(boundingBox) && worldObj.getCollidingBoundingBoxes(this, boundingBox).size() == 0 && worldObj.getBlockLightValue(i, j, k) > 8 && !worldObj.getIsAnyLiquid(boundingBox);
    }
	
	public void readEntityFromNBT(NBTTagCompound nbttagcompound)
    {
        super.readEntityFromNBT(nbttagcompound);
    }
	
    public void onLivingUpdate()
    {
        super.onLivingUpdate();
    }
	
	protected String getLivingSound()
    {
        return "junglecraft.gorille";
    }

    protected String getHurtSound()
    {
        return "junglecraft.gorille";
    }

    protected String getDeathSound()
    {
        return "junglecraft.gorille";
    }

    protected int getDropItemId()
    {
        return mod_JungleCraft.mybanane.shiftedIndex;
    }
}

RenderGorille :

Code:
package net.minecraft.src;

public class RenderGorille extends RenderLiving
{
    public RenderGorille(ModelBase modelbase, float f)
    {
        super(modelbase, f);
    }

    public void doRenderLiving(EntityLiving entityliving, double d, double d1, double d2, 
            float f, float f1)
    {
        super.doRenderLiving((EntityMyGorille)entityliving, d, d1, d2, f, f1);
    }

    public void doRender(Entity entity, double d, double d1, double d2, 
            float f, float f1)
    {
        doRenderLiving((EntityMyGorille)entity, d, d1, d2, f, f1);
    }
}

Et enfin ModelGorille :

Code:
package net.minecraft.src;
public class ModelGorille extends ModelBiped
{

    public ModelGorille()
    {
    }

    public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
    {
        super.setRotationAngles(f, f1, f2, f3, f4, f5);
        float f6 = MathHelper.sin(onGround * 3.141593F);
        float f7 = MathHelper.sin((1.0F - (1.0F - onGround) * (1.0F - onGround)) * 3.141593F);
        bipedRightArm.rotateAngleZ = 0.0F;
        bipedLeftArm.rotateAngleZ = 0.0F;
        bipedRightArm.rotateAngleY = -(0.1F - f6 * 0.6F);
        bipedLeftArm.rotateAngleY = 0.1F - f6 * 0.6F;
        bipedRightArm.rotateAngleX = -1.570796F;
        bipedLeftArm.rotateAngleX = -1.570796F;
        bipedRightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F;
        bipedLeftArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F;
        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;
    }
}

Merci d'avance pour la grande aide que tu va me fournir, de plus quand je saurais mon mode passera en vitesse grand V !