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

ah oui et j'ai bien fait pareil pour le import java.util.map, le souci n'est pas de la mais que les paramètre qui sont à l'intérieur ... et c'est pas ma spécialité java c'est pour sa que je galère un peu ...

Enfin bref je n'est pas testé car mon mob ne passe pas pour le moment ( je bug sur la déclaration ) ...

Tu peut tester sa : ( je ne sais pas trop à quoi tous correspond, la 3e argument est ok j'ai vérifier, par contre les deux premier ce n'est qu'une suposition, le premier serait le nom du mob en question, le second un ID ? et le dernier je ne sais pas trop comment le déclarer si ce n'est de la manière dont je l'ai faite )

AddSpawn("nom du mob ?", ?, EnumCreatureType.monster, BiomeGenHell)

et sa c'est la déclaration du biome en question :
public static final BiomeGenBase hell = (new BiomeGenHell()).setColor(0xff0000).setBiomeName("Hell").setDisableRain();
 
xD j'en demande pas tant :) mais merci lool

D'après le code que j'ai lu sa devrait être quelque chose comme sa, mais je n'est pas tester donc je ne garanti rien ...

Et je bloque toujours à la déclaration de mon mob dans la main class -_-' il faut que je trouve un mode qui n'est pas codé "bizarement"
 
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 craftingbox
		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
		ModLoader.AddRecipe(new ItemStack(myamethyste, 1), new Object[] {"#XY",
		Character.valueOf('#'), myfiolerubis, Character.valueOf('X'), myfiolediamant, Character.valueOf('Y'), myfioleor});
		//Recette amethyste
		
		//Recette Four
		ModLoader.AddSmelting(Item.ingotGold.shiftedIndex, new ItemStack(myfioleor, 1));
		ModLoader.AddSmelting(Item.diamond.shiftedIndex, new ItemStack(myfiolediamant, 1));
		ModLoader.AddSmelting(myrubis.shiftedIndex, new ItemStack(myfiolerubis, 1));
		
		
		//Mobs spawn
		ModLoader.RegisterEntityID(EntityMyGorille.class, "Gorille", ModLoader.getUniqueEntityId());
		ModLoader.RegisterEntityID(EntityGiantZombie.class, "Giant Zombie", ModLoader.getUniqueEntityId());
		ModLoader.RegisterEntityID(EntityMyYetizombie.class, "Yeti Zombie", ModLoader.getUniqueEntityId());
		ModLoader.RegisterEntityID(EntityMyYeti.class, "Yeti", ModLoader.getUniqueEntityId());
		ModLoader.RegisterEntityID(EntityMyMorse.class, "Morse", ModLoader.getUniqueEntityId());
		
		
		ModLoader.AddSpawn(EntityMyGorille.class, 1, EnumCreatureType.monster);
		ModLoader.AddSpawn(EntityGiantZombie.class, 1, EnumCreatureType.monster); //Génération du zombie Géant
		ModLoader.AddSpawn(EntityMyYetizombie.class, 1, EnumCreatureType.monster, BiomeGenHell); //Génération du Yeti zombie
		ModLoader.AddSpawn(EntityMyYeti.class, 1, EnumCreatureType.monster); //Génération du Yeti
		ModLoader.AddSpawn(EntityMyMorse.class, 1, EnumCreatureType.monster); //Génération du Morse
		
		}
		
		public void AddARenderer(Map map)
		
			{
			map.put(EntityMyGorille.class, new RenderBiped(new ModelBiped(),0.5F));//Formation du gorille
			map.put(EntityMyYetizombie.class, new RenderBiped(new ModelBiped(),0.5F));//Formation du yetizombie
			map.put(EntityMyYeti.class, new RenderBiped(new ModelBiped(),0.5F));//Formation du yeti
			map.put(EntityMyMorse.class, new RenderBiped(new ModelBiped(),0.5F));//Formation du morse
			
			}
        
		public void addItems()
			{
			ModLoader.AddName(mybowlMilk, "Bol de lait");
			ModLoader.AddName(mybanane, "Banane");
			ModLoader.AddName(myamethyste, "Amethyste");
			ModLoader.AddName(myrubis, "Rubis");
			ModLoader.AddName(myfioleor, "Orium");
			ModLoader.AddName(myfiolediamant, "Diamonsium");
			ModLoader.AddName(myfiolerubis, "Rubissium");
			ModLoader.AddName(myswordamethyste, "Epee Amethyste");
			}
			
	public static final Item mybowlMilk = 
        (new ItemMybowlMilk(1820,3)).setItemName("mybowlMilk").setIconIndex
        (ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/boldelait.png"));
		//Propriété du bol de lait
		
	public static final Item mybanane =
		(new ItemMyBanane(2010,4)).setItemName("mybanane").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/banane.png"));
		//Propriété de la banane
        
    public static final Item myamethyste =
		(new ItemMyAmethyste(2011)).setItemName("myamethyste").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/amethyste.png"));
		//propriété de l'amethyste
	public static final Item myrubis =
		(new ItemMyRubis(2012)).setItemName("myrubis").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/rubis.png"));
		//Propriété du rubis
	public static final Item myfioleor =
		(new ItemMyFioleOr(2013)).setItemName("myfioleor").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/fioleor.png"));
		//Propiété de la fiole or
	public static final Item myfiolediamant =
		(new ItemMyFioleDiamant(2014)).setItemName("myfiolediamant").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/fiolediamant.png"));
		//Propriété de la fiole diamant
	public static final Item myfiolerubis =
		(new ItemMyFioleRubis (2015)).setItemName("myfiolerubis").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/fiolerubis.png"));
		//Propriété de la fiole rubis
	public static final Item myswordamethyste =
		(new ItemSword(2016, EnumToolMaterial.AMETHYSTE)).setItemName("myswordamethyste").setIconIndex
		(ModLoader.addOverride("/gui/items.png", "/mod/junglecraft/swordamethyste.png"));
		//Propriété de l'épée en amethyste
	
	
	public static final BiomeGenBase hell = (new BiomeGenHell()).setColor(0xff0000).setBiomeName("Hell").setDisableRain();//Biome spawn
	}

Y'a un peu de tout et de n'importe quoi, mais je pense que ça peu aider :).

Sinon ça ne fonctionne pas, il ne reconnait pas la variable BiomeGenHell ni la method .setDisableRain.
 
Hum d'accord, je pense qu'il faudrait faire comme pour EnumCreatureType.monster

Trouver ce qui vas : BiomeGenBase.hell par exemple, je vais regarder comment déclarer mon mob gr

Bon ok déjà grace à toi mes mobs passe, je ne les ai pas encore vue, mais je suppose qu'il sont la mdr.

Donc je test dessuite pour trouver le code d'appartition dans le nether

public static final BiomeGenBase hell = (new BiomeGenHell()).setColor(0xff0000).setBiomeName("Hell").setDisableRain();//Biome spawn

sa tu n'as pas besoin de le mettre dans ton code, c'est pour créer un nouveau biome, du moins je pense, sa fait partit de la déclaration de tout les biome à la fin du fichier BiomeGenBase

Alors très bonne nouvelle :

ModLoader.AddSpawn(EntityDamned.class, 1, EnumCreatureType.monster, BiomeGenBase.hell);

SA MARCHE !

Mauvaise, j'ai eu beau chercher je n'est pas trouver mes mobs ... faut'il les ajouter à la spawnlist ? xD

ou le second argument n'est pas une ID mais la valeur du spawrate ...

ah non j'ai une erreur -_-' j'ai du oublier de compiller :s

ah et j'ai bien raison, le second argument est un pourcentage d'apparition ... :

spawnlistentry.spawnRarityRate = i;

i = int i le second args

C'est bien cette méthode qu'il faut utiliser ( public static void AddSpawn(Class class1, int i, EnumCreatureType enumcreaturetype, BiomeGenBase abiomegenbase[]) ), mais comment ...

Je viens de tester environ une vingtaine de syntax et rien n'y fais :s ...

Apparement ( bien que le java ne soit pas ma spécialité ), l'argument abiomegenbase à l'air d'être un tableau, sans doute pour appliquer plusieurs biome pour les spawn, mais moi je ne sais pas comment on utilise les tableau en java ...
 
je n'irais pas dormir avant d'avoir trouver la solution -_-'

AddSpawn

public static void AddSpawn(java.lang.Class<? extends kw> entityClass,
int weightedProb,
ko spawnList,
jj... biomes)

Add entity to spawn list for selected biomes.

Parameters:
entityClass - Class of entity to spawn.
weightedProb - Higher number means more likely to spawn.
spawnList - The type of list to add entity to. Monster, Creature, or Water.
biomes - Array of biomes to add entity spawning to.

Voila une méga doc super détailler ...
un seul exemple n'aurais pas été de trop !

Un moment de soulagement pour indiquer qu'après plusieurs heure de dure recherche ...
J'ai enfin trouver la solution :') j'en pleur de joie ...

San plus vous faire attendre voici la syntax pour ajouter les mobs bans le nether :

ModLoader.AddSpawn(EntityDamned.class, 80, EnumCreatureType.monster, (new BiomeGenBase[]{BiomeGenBase.hell}));

Un grand merci à moi même mdr, maintenant je vais pouvoir allez reposer en paix PTDRRR
 
Merci beaucoup, malgrès que je ne puisse pas testé de suite, j'essaierai de testé, si ça fonctionne, promis tu as une petite place dans le crédit du mod :).
 
Non, la rareté d'appartition ?

Dans mon cas ce n'est pas le but, mon mod est éxclusivement dans le nether, et dans le nether apar les fantome qui sont agressif, les cochon zombie ne l'étant qu'a moitier, j'ai carrement repeupler le nether avec 3 nouveau mob, totalement agressif avec des spawn de fou xD je suis sado sur ce jeux !!!

Et derien j'ai vraiment passé beaucoup de temps à chercher comment faire ...

Maintenant j'éssai de faire comme pour le pigzombie, rajouter de l'équipement à mes mobs, ou du moins juste une épée ... avec ce bout de code :

public ItemStack getHeldItem()
{
return defaultHeldItem;
}

private static final ItemStack defaultHeldItem;

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

mais sa passe pas pour mes mobs