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

Oui j'ai trouver sa aussi dans les sources, je vien juste à l'instant de trouver une meilleur technique ... en une seul ligne pour être précis et sans rien toucher, serte les paramètres seront ceux par défaut mais c'est ce que je souhaite !

exemple pour l'épée :

netherSword = (new ItemSword(903, EnumToolMaterial.IRON)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/sword.png")).setItemName("Nether Sword");

Au lieu de mettre notre class personalisé on peut aussi mettre celle par défaut directement.

Au lieu de ( précédement ) : new Nether_NetherSword, j'ai maintenant : new ItemSword et tout ce fait sans aucune difficulté.

En revanche, je vien de tester sur les block c'est plus problématique ... je souhaite faire un établie de craft spécial nether + un coffre spécial nether, mais en utilisant cette technique je ne sais plus comment mettre un skin personnalisé ...

Mais merci pour ta réponse !
 
Salut, j'ai déjà posté ma question sur le fofo anglais, mais j'aimerais savoir si vous saviez comment faire pour que mon mob spawn uniquement dans tels biome (par exemple le nether).

Merci à vous !
 
Hum tien je suis dessus justement :) enfin du moin je regarde comment faire mais j'ai trouver sa :

public boolean getCanSpawnHere()
{
return worldObj.difficultySetting > 0 && worldObj.checkIfAABBIsClear(boundingBox) && worldObj.getCollidingBoundingBoxes(this, boundingBox).size() == 0 && !worldObj.getIsAnyLiquid(boundingBox);
}

C'est dans le fichier des pig zombies ... soit : EntityPigZombie, peut tu me passer un exemple de fichier pour les mobs ?

enfin juste m'éxpliquer comment faire pour les créer, je n'ai pas trouver de tuto pour sa ...
 
Code:
package net.minecraft.src;

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

public class EntityMyYetizombie extends EntityMob
{

    public EntityMyYetizombie(World world)
    {
        super(world);
        texture = "/mob/yetimutant.png";
        moveSpeed = 1.3F;
        isImmuneToFire = true;
		attackStrength = 4;
	}

    public int getMaxSpawnedInChunk()
    {
    return 1;
    }

    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.yeti";
    }

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

    protected String getDeathSound()
    {
        return null;
    }

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

Ca ressemble à ça :).
 
Ok merci, j'espère que ce que je t'ai passer sera bon pour le nether ... c'est le code qui est pour les pig zombie et vue qu'il spawn la bas ...

Tient moi au courant si c'est sa, vue que sa m'intérraisse aussi xD et merci pour le code !
 
Nan c'est pas ça, désolé :). En faite c'est dans le fichier approprié du biome qu'il est inscrit qu'il spawn là. En faite je pense qu'il faut faire appelle à la class BiomeGenBase dans EntityMyMob. Mais maintenant faut savoir comment on peu faire ça :).
 
Désoler de te déranger de nouveau, mais comment tu le déclare dans ta main class ?

J'ai regarder dans un autre mod, il fait comme sa :

public void AddRenderer(Map<Class<? extends nl>, ba> map) {
map.put(EntityMob.class, new RenderMob(new cw(), new cw(0.5F), 0.7F));
}

Et avec sa :

ModLoader.RegisterEntityID(EntityGhoul.class, "Ghoul", ModLoader.getUniqueEntityId());

Enfin bref, je ne sais pas comment le déclarer dans ma main class ...

tien j'ai sa pour toi :

// 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;

import java.util.List;

// Referenced classes of package net.minecraft.src:
// BiomeGenBase, SpawnListEntry, EntityGhast, EntityPigZombie

public class BiomeGenHell extends BiomeGenBase
{

public BiomeGenHell()
{
spawnableMonsterList.clear();
spawnableCreatureList.clear();
spawnableWaterCreatureList.clear();
spawnableMonsterList.add(new SpawnListEntry(net.minecraft.src.EntityGhast.class, 10));
spawnableMonsterList.add(new SpawnListEntry(net.minecraft.src.EntityPigZombie.class, 10));
}
}

spawnableMonsterList.add(new SpawnListEntry(net.minecraft.src.EntityPigZombie.class, 10));

tu peut sans doute placer sa dans ta main class en remplacant par ton mob a toi, je vais voir s'il éxiste une méthode sur modloader pour l'intégrer de manière propre.

Je pense avoir sa :

plusieurs méthode avec différent argument :

AddSpawn qui repgroupe plusieurs argument comme je l'ai dit dont la gestion des biomes ...

public static void AddSpawn(Class class1, int i, EnumCreatureType enumcreaturetype)
{
AddSpawn(class1, i, enumcreaturetype, null);
}

public static void AddSpawn(Class class1, int i, EnumCreatureType enumcreaturetype, BiomeGenBase abiomegenbase[])
{
if(class1 == null)
{
throw new IllegalArgumentException("entityClass cannot be null");
}
if(enumcreaturetype == null)
{
throw new IllegalArgumentException("spawnList cannot be null");
}
if(abiomegenbase == null)
{
abiomegenbase = standardBiomes;
}
for(int j = 0; j < abiomegenbase.length; j++)
{
List list = abiomegenbase[j].getSpawnableList(enumcreaturetype);
if(list != null)
{
boolean flag = false;
for(Iterator iterator = list.iterator(); iterator.hasNext();)
{
SpawnListEntry spawnlistentry = (SpawnListEntry)iterator.next();
if(spawnlistentry.entityClass == class1)
{
spawnlistentry.spawnRarityRate = i;
flag = true;
break;
}
}

if(!flag)
{
list.add(new SpawnListEntry(class1, i));
}
}
}

}

public static void AddSpawn(String s, int i, EnumCreatureType enumcreaturetype)
{
AddSpawn(s, i, enumcreaturetype, null);
}

public static void AddSpawn(String s, int i, EnumCreatureType enumcreaturetype, BiomeGenBase abiomegenbase[])
{
Class class1 = (Class)classMap.get(s);
if(class1 != null && (net.minecraft.src.EntityLiving.class).isAssignableFrom(class1))
{
AddSpawn(class1, i, enumcreaturetype, abiomegenbase);
}
}
 
Ok, bah moi je fait import.java.util.Map dans le main pour que AddRender(Map map) fonctionne. Si c'est t'as question.

Sinon je me douté pour AddSpawn, maintenant il faut voir comment faire pour que ça fonctionne :).