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

Ha :s tu à tester sa avec la SwordGold ou une autre ?

Car moi j'ai tester avec :

defaultHeldItem = new ItemStack(Item.swordSteel, 1);

ou encore :

defaultHeldItem = new ItemStack(mod_Nether.netherSword, 1);

et sa n'as pas marcher ...

voila le code de mon bestio :

Code:
package net.minecraft.src;

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

public class EntityWarrior extends EntityMob {

    public EntityWarrior(World world) {
        super(world);
        texture = "/Nether/warrior.png";
        moveSpeed = 1.4F;
        isImmuneToFire = true;
        attackStrength = 5;
    }

    public int getMaxSpawnedInChunk() {
		return 3;
    }

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

    protected int getDropItemId() {
        return mod_Nether.netherPowder.shiftedIndex;
    }
}

et ma main class :

Code:
package net.minecraft.src;

import java.util.*;
import java.util.Map;

public class mod_Nether extends BaseMod {
	
	public mod_Nether() {
		
		// Adding stick
		netherStick = (new Item(901)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/stick.png")).setItemName("NeoStick");
		ModLoader.AddName(netherStick, "NeoStick");
		ModLoader.AddRecipe(new ItemStack(netherStick, 4), new Object[] { "#", "#", Character.valueOf('#'), Block.netherrack });
		
		// Adding ingot
		netherIngot = (new Item(902)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/ingot.png")).setItemName("NeoIngot");
		ModLoader.AddName(netherIngot, "NeoIngot");
		ModLoader.AddRecipe(new ItemStack(netherIngot, 2), new Object[] { "#", Character.valueOf('#'), Block.netherrack });
		
		// Adding Sword
		netherSword = (new ItemSword(903, EnumToolMaterial.IRON)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/sword.png")).setItemName("NeoSword");
		ModLoader.AddName(netherSword, "NeoSword");
		ModLoader.AddRecipe(new ItemStack(netherSword, 1), new Object[] { "#", "#", "%", Character.valueOf('#'), netherIngot, Character.valueOf('%'), netherStick });
		
		// Adding Shovel
		netherShovel = (new ItemSpade(904, EnumToolMaterial.IRON)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/shovel.png")).setItemName("NeoShovel");
		ModLoader.AddName(netherShovel, "NeoShovel");
		ModLoader.AddRecipe(new ItemStack(netherShovel, 1), new Object[] { "#", "%", "%", Character.valueOf('#'), netherIngot, Character.valueOf('%'), netherStick });
		
		// Adding Pickaxe
		netherPickaxe = (new ItemPickaxe(905, EnumToolMaterial.IRON)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/pickaxe.png")).setItemName("NeoPickaxe");
		ModLoader.AddName(netherPickaxe, "NeoPickaxe");
		ModLoader.AddRecipe(new ItemStack(netherPickaxe, 1), new Object[] { "###", " % ", " % ", Character.valueOf('#'), netherIngot, Character.valueOf('%'), netherStick });
		
		// Adding Axe
		netherAxe = (new ItemAxe(906, EnumToolMaterial.IRON)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/axe.png")).setItemName("NeoAxe");
		ModLoader.AddName(netherAxe, "NeoAxe");
		ModLoader.AddRecipe(new ItemStack(netherAxe, 1), new Object[] { "##", "#%", " %", Character.valueOf('#'), netherIngot, Character.valueOf('%'), netherStick });
		
		// Adding powder
		netherPowder = (new Item(907)).setIconIndex(ModLoader.addOverride("/gui/items.png", "/Nether/powder.png")).setItemName("NeoPowder");
		ModLoader.AddName(netherPowder, "NeoPowder");
		ModLoader.AddRecipe(new ItemStack(netherPowder, 1), new Object[] { "#", Character.valueOf('#'), netherIngot });
		
		// Adding Workbench
		ModLoader.RegisterBlock(netherWorkbench);
		ModLoader.AddRecipe(new ItemStack(netherWorkbench, 1), new Object[] { "##", "##", Character.valueOf('#'), netherIngot });
		ModLoader.AddName(netherWorkbench, "NeoWorkbench");
		
		// Adding chest
		ModLoader.RegisterBlock(netherChest);
		ModLoader.AddRecipe(new ItemStack(netherChest, 1), new Object[] { "###", "# #", "###", Character.valueOf('#'), netherIngot });
		ModLoader.AddName(netherChest, "NeoChest");
		
		// Mobs regisration and spawn
		ModLoader.RegisterEntityID(EntityDamned.class, "Damned", ModLoader.getUniqueEntityId());
		ModLoader.AddSpawn(EntityDamned.class, 80, EnumCreatureType.monster, (new BiomeGenBase[]{BiomeGenBase.hell}));
		
		ModLoader.RegisterEntityID(EntitySpirit.class, "Spirit", ModLoader.getUniqueEntityId());
		ModLoader.AddSpawn(EntitySpirit.class, 30, EnumCreatureType.monster, (new BiomeGenBase[]{BiomeGenBase.hell}));
		
		ModLoader.RegisterEntityID(EntityWarrior.class, "Warrior", ModLoader.getUniqueEntityId());
		ModLoader.AddSpawn(EntityWarrior.class, 60, EnumCreatureType.monster, (new BiomeGenBase[]{BiomeGenBase.hell}));
	}
	
	// Version
	public String Version() {
		return "1.5_01";
	}
	
	// Add render to mobs
	public void AddARenderer(Map map) {
		map.put(EntityDamned.class, new RenderBiped(new ModelBiped(),0.5F));
		map.put(EntitySpirit.class, new RenderBiped(new ModelBiped(),0.5F));
		map.put(EntityWarrior.class, new RenderBiped(new ModelBiped(),0.5F));
	}
	
	// Items declaration
	public static Item netherStick;	
	public static Item netherIngot;
	public static Item netherShovel;
	public static Item netherPickaxe;	
	public static Item netherAxe;
	public static Item netherSword;
	public static Item netherPowder;
	
	// Blocks declarations
	public static final Block netherWorkbench = (new Block(100, ModLoader.addOverride("/terrain.png", "/Nether/ingot.png"), Material.wood)).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundWoodFootstep).setBlockName("NeoWorkbench");
	public static final Block netherChest = (new Block(101, ModLoader.addOverride("/terrain.png", "/Nether/ingot.png"), Material.wood)).setHardness(2.0F).setResistance(10F).setStepSound(Block.soundWoodFootstep).setBlockName("NeoChest");
}
 
J'ai encore un problème. J'ai besoin de faire des plants de tomate qui poussent comme le blé mais je sais vraiment pas comment faire.

Quelqu'un sait?
 
Oula, sa je ne sais pas, j'ai pas encore chercher pour faire ce genre de chose, à mon avis, et je dit bien à mon avis, c'est le même objet à la base, qui détect sur une durée exemple :

X-----X-----X-----X

Les X représente une étape dans le temps, ou par des action imaginon, les trais représente ... rien juste ce qu'il y a entre temps.

A chaque X tu fais une nouvelle action, du genre, redéfinir la texture de ton block, pour changer l'étape visuel de ton block ou encore pour changer le type de drop lors de cette étape.

Exemple au premier X tu a un bout de plante, si tu le casse tu n'as rien, le second tu a une pouce de plante et tu drop une graine ... la troisième une plante avec plusieurs graines, et le dernier l'objet final et plante mure ...

Par contre le code pour mettre sa en place je ne le connais pas trop. mais pour chaque étape, tu les ferais passer par une variable que tu pourrait transmettre par argument sur une méthode !
 
En gros sa serait sa, bien qu'il faut que tu fasse la détection de sur koi tu pose ta graine, apar si tu souhaite pouvoir la poser nimporte ou

[ Voici mes 5 minutes de silence ... ]
La personne qui finançai le serveur que j'administrai à fait un coup d'état ... car il n'as pas respecter le règlement et n'as pas supporter que je le rappel à l'ordre ...
[ -_-' ]

Sinon pour revenir au sujet, je n'arrive toujours pas à mettre une arme à mes mobs pourquoi ? :(

Tes mobs on le même modèle ? ( ModelBiped() ) ?
 
@sorax, tu pense que sa pourrait venir d'ou mon problème la ? :s

J'ai aussi essayer comme sa :

public ItemStack getHeldItem() {
return defaultHeldItem;
}

private static final ItemStack defaultHeldItem;

static {
defaultHeldItem = new ItemStack(Item.swordGold.shiftedIndex, 1, 0);
}

mais toujours pas de résultat :(
 
salut j'ai suivi ton tuto pour céer un mod mais je suis bloquer a la troisième partie je n'ai aucun fichier dans le fichier sources et je ne peut donc pas recompiler le mod et aussi quand j lance la décompilation C:\Documants n'est pas reconnu en tant que que commande interne ou externe, un programme exécutable ou un fichier commande et normale car a la fin sa me met quand même MCP 2.12 decompile script finished alors je te demande de l'aide en espéant que tu me réponde
 
Salut, peut tu rééxpliquer ton souci ? je vais essayer de t'aider !

Ah je pense avoir une idée !!! as-tu bien modifier le PATH ?

en fesant clic droit sur l'icone de ton poste de travail, propriété, avancé puis variables d'environement, de la tu clic et fait modifier sur la ligne qui s'appel Path, tu remplace son nom par PATH en majuscule et sa destination à "C:\Program Files\Java\jdk1.6.0_25\bin;C:\Program Files\Java\jre6\bin", sans les guillemets.

Sa devrait marché !
 
mais derien, et sorax, j'ai trouver d'ou venait le problème, mes class étendait EntityMob et non pas EntityZombie ...

Maintenant sa marche !

Quelqu'un aurait un exemple pour les armure ? xD