SOLVED Spawn mob + fix id + texture


  • Bonjour j’aimerais savoir comment faire spawn naturelement le mob créer
    ex : (biome spécifique, ou partout)

    et fixer l’id du mob genre je veux tout le temp 383:14 a la place de 383:3 car si on rajoute un mod qui rajoute des mobs (genre fake ores ou autres voir orespawn) ba l’id de mon oeuf change automatiquement
    l’id du spawner doit changer également
    donc pour certaine cjhoses c’est embettant

    et aussi changer la texture d’un mob du genre pas un steve mais un creeper ou un slime par exemple
    merci de vos réponse 😄


  • Spawn de mob : EntityRegistry

    Fix id : question déjà posée, il faut créer son propre oeuf.

    texture : il faut utiliser l’ASM pour çà, quel est ton but précis ? car l’utilisation de cette méthode entraîne des complications avec les autres mods et forge.


  • on met quoi avec entity registry et pour la texture c’est genre faire un slime a la place d’un steve


  • @‘monpetitflocon’:

    on met quoi avec entity registry et pour la texture c’est genre faire un slime a la place d’un steve

    
    EntityRegistry.addSpawn(entityClass, weightedProb, min, max, typeOfCreature, biomes…);
    

    Un slime à la place d’un steve ? c’est à dire ?

  • Administrateurs Rédacteurs Moddeurs confirmés

    Tu veux dire changer le modèle ? C’est dans la ligne RenderRegistry.


  • ok merci oui robin c’est sa genre avoir un slime car quand on creer le mob basic il y a un steve et apres tu lui met une texture mais si tu veonera un steve

  • Administrateurs Rédacteurs Moddeurs confirmés

    @‘monpetitflocon’:

    et apres tu lui met une texture mais si tu veonera un steve

    veonera ?

    J’ai rien compris ….


  • moi non plus j’ai rien compris c’est mon clavier qui bug un peu c’es un peu comme la corection auto des portables (c’est vrai) en gros tu auras un steve a la place du slime c’est sa que j’ai voulu dire

  • Administrateurs Rédacteurs Moddeurs confirmés

    Donc tu veux changer le modèle du slim ? Pas possible sans patch comme l’a dit SCAREX.


  • non je veux que mon mob soit un slime et pas un steve quand je le fait spawn et je lui apliquerait la texture du slime de base modifié genre un slime bleu

  • Administrateurs Rédacteurs Moddeurs confirmés

    Ah, dans ce cas suffit de changer le modèle. Dans le client Proxy remplace ModelBiped par ModelSlim. (il faut aussi changer RenderBiped par RenderLiving il me semble).


  • ok merci beaucoup je testerai tout sa 😉


  • @‘SCAREX’:

    
    EntityRegistry.addSpawn(entityClass, weightedProb, min, max, typeOfCreature, biomes…);
    

    je met sa ou et apres je met quoi pour weitghted prob car j’ai pas tout compris la classe enitityregistry
    l’option n’est pas complete et ya des lignes rouge partout sa me perturbe moi je veux un spawn partout avec un min de 10 et un max de 100 svp
    edit : j’ai peut etre trouver je suis en train de test


  • @‘monpetitflocon’:

    @‘SCAREX’:

    
    EntityRegistry.addSpawn(entityClass, weightedProb, min, max, typeOfCreature, biomes…);
    

    je met sa ou et apres je met quoi pour weitghted prob car j’ai pas tout compris la classe enitityregistry
    l’option n’est pas complete et ya des lignes rouge partout sa me perturbe moi je veux un spawn partout avec un min de 10 et un max de 100 svp
    edit : j’ai peut etre trouver je suis en train de test

    Cette ligne de code, tu la mets à la suite de l’enregistrement du mob. Et tu mets la rareté de ton mob à la place de weightedProb (plus l’integer est élevé plus ton mob sera fréquent)
    Et tu mets 10 à la place de min et 100 à la place de max.


  • déja fait ligne bonne mais le monstre ne spawn pas du tout j’ai test sur une superflat (donc biome plaine) et que des slimes et animaux pas mon mob

    addEntity(EntityMonMob.class, "MobTuto", 125, 255, 100);
    EntityRegistry.addSpawn(EntityMonMob.class, 50, 10, 100, EnumCreatureType.creature, BiomeGenBase.plains);
    

  • @‘monpetitflocon’:

    déja fait ligne bonne mais le monstre ne spawn pas du tout j’ai test sur une superflat (donc biome plaine) et que des slimes et animaux pas mon mob

    addEntity(EntityMonMob.class, "MobTuto", 125, 255, 100);
    EntityRegistry.addSpawn(EntityMonMob.class, 50, 10, 100, EnumCreatureType.creature, BiomeGenBase.plains);
    

    1-C’est une mauvaise idée de faire du copié-collé (“MobTuto”)
    2-le type creature est pour les animaux, si ton mob est un monstre il vaut mieux utiliser monster.


  • @‘monpetitflocon’:

    déja fait ligne bonne mais le monstre ne spawn pas du tout j’ai test sur une superflat (donc biome plaine) et que des slimes et animaux pas mon mob

    addEntity(EntityMonMob.class, "MobTuto", 125, 255, 100);
    EntityRegistry.addSpawn(EntityMonMob.class, 50, 10, 100, EnumCreatureType.creature, BiomeGenBase.plains);
    

    Ton code n’est pas totalement bon car ton mob ne spawnera que sur le biome plaine il faut ajouter un tableau de Biomes comportant tous les biomes et vu que je suis gentil je te le donne (ça t’évitera de longue minutes d’écriture ^^)

    ​public static BiomeGenBase[] allBiomes = 
    
    { 
    BiomeGenBase.plains, BiomeGenBase.extremeHills, BiomeGenBase.beach, BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.forest, BiomeGenBase.forestHills, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.river, BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, BiomeGenBase.coldBeach, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.deepOcean, BiomeGenBase.extremeHillsPlus, BiomeGenBase.jungleEdge, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, BiomeGenBase.mesa, BiomeGenBase.mesaPlateau, BiomeGenBase.mesaPlateau_F, BiomeGenBase.roofedForest, BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, BiomeGenBase.stoneBeach 
    };
    

    De + voici les lignes de code que j’utilise pour enregistrer et faire spawn mon mob copie et colle les en modifiant le nom de MON  mob par celui du TIEN. Pareil change le nom de ta classe principale et celui de ton mob. Quant à l’ID (integer après le String de la 2ème ligne : “camelJockey”) tu peux mettre tous les nombres que tu souhaites à partir de 420.

    ​EntityRegistry.registerGlobalEntityID(EntityCamelJockey.class, "camelJockey", EntityRegistry.findGlobalUniqueEntityId(), new Color(97, 0, 255).getRGB(), new Color(146, 91, 255).getRGB());
    
       EntityRegistry.registerModEntity(EntityCamelJockey.class, "camelJockey", 430, MoreCreepsAndWeirdosMod.instance, 40, 1, true);    
    EntityRegistry.addSpawn(EntityCamelJockey.class, 9, 1, 3, EnumCreatureType.creature, allBiomes);
    

    J’espère t’avoir bien aidé 😉
    Autre dernière petite chose encore je pense que les valeurs que tu utilises sont beaucoup trop élevés et que peut-être le jeu n’arrive pas à gérer cela.

    PS : Les valeurs de spawn que je t’ai mis (fréquence, min, max) sont les plus adaptés pour un mob fréquent n’y touches pas et dis moi si il spawn bien.


  • le jeu crash a cause de ses deux lignes la (oui j’ai changer le nom du mob et de la classe)
    :::

    EntityRegistry.registerGlobalEntityID(EntityCamelJockey.class, "camelJockey", EntityRegistry.findGlobalUniqueEntityId(), new Color(97, 0, 255).getRGB(), new Color(146, 91, 255).getRGB());
    
    EntityRegistry.registerModEntity(EntityCamelJockey.class, "camelJockey", 430, MoreCreepsAndWeirdosMod.instance, 40, 1, true);
    

    :::

    il y a quelque choses qui cloche avec car la premiere fois que j’ai fait mon premier mob j’avais cette méthode et crash
    puis celle de elias54 marchait tres tres bien


  • @‘monpetitflocon’:

    le jeu crash a cause de ses deux lignes la (oui j’ai changer le nom du mob et de la classe)

    :::

    EntityRegistry.registerGlobalEntityID(EntityCamelJockey.class, "camelJockey", EntityRegistry.findGlobalUniqueEntityId(), new Color(97, 0, 255).getRGB(), new Color(146, 91, 255).getRGB());
    
      EntityRegistry.registerModEntity(EntityCamelJockey.class, "camelJockey", 430, MoreCreepsAndWeirdosMod.instance, 40, 1, true);
    

    :::

    Envoies moi tes lignes à toi que je regarde ou au pire carrément ta classe principale. Si tu as un prob avec ces méthodes c’est sûrement toi qui t’ais trompé elle sont dans le tuto de mff pour créer une entity basique ^^


  • oui je sais j’ai commrncer par le tuto ecrit justement suivi a la lettre et comme sa marchait pas et bah j’ai pris la vidéo
    :::

    package com.google.monpetitflocon.modtest.common;
    
    import java.awt.Color;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.enchantment.Enchantment;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EnumCreatureType;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraft.item.Item.ToolMaterial;
    import net.minecraft.item.ItemArmor.ArmorMaterial;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.biome.BiomeGenBase;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.common.util.EnumHelper;
    
    import com.google.monpetitflocon.modtest.common.blocks.BlockOreTutoriel;
    import com.google.monpetitflocon.modtest.common.blocks.BlockTutorialStairs;
    import com.google.monpetitflocon.modtest.common.blocks.BlockTutoriel;
    import com.google.monpetitflocon.modtest.common.blocks.BlockTutorielMetadata;
    import com.google.monpetitflocon.modtest.common.blocks.FantasyBlock;
    import com.google.monpetitflocon.modtest.common.blocks.FenceBlock;
    import com.google.monpetitflocon.modtest.common.blocks.GreenWall;
    import com.google.monpetitflocon.modtest.common.blocks.WallBlock;
    import com.google.monpetitflocon.modtest.common.entity.Aznching;
    import com.google.monpetitflocon.modtest.common.entity.Darkheaven;
    import com.google.monpetitflocon.modtest.common.entity.EntityMonMob;
    import com.google.monpetitflocon.modtest.common.entity.Oxilac;
    import com.google.monpetitflocon.modtest.common.items.FantasyNugget;
    import com.google.monpetitflocon.modtest.common.items.FufuAple;
    import com.google.monpetitflocon.modtest.common.items.HautEpee;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoArmor;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoAxe;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoHoe;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoPickaxe;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoShovel;
    import com.google.monpetitflocon.modtest.common.items.ItemTutoSword;
    import com.google.monpetitflocon.modtest.common.items.Letest;
    import com.google.monpetitflocon.modtest.common.items.MancheEpee;
    import com.google.monpetitflocon.modtest.common.items.MilieuEpee;
    import com.google.monpetitflocon.modtest.proxy.CommonProxy;
    
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.EntityRegistry;
    import cpw.mods.fml.common.registry.GameRegistry;
    
    @Mod(modid = "ModTest.MODID", name = "Fantasy Mod", version = "1.0.0")
    public class ModTest
    {
    public static final String MODID = "modtest";
    @Instance("MODID")
    public static ModTest instance;
    
    @SidedProxy(clientSide = "com.google.monpetitflocon.modtest.proxy.ClientProxy", serverSide ="com.google.monpetitflocon.modtest.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    public static Item letest, fufuaple, helmetTuto, chestPlateTuto, leggingsTuto, bootsTuto, swordTuto, pickaxeTuto, axeTuto, shovelTuto, hoeTuto, MancheEpee, MilieuEpee, HautEpee,FantasyNugget,record_tuto;
    public static Block blockTutoriel, blockTutoriel2, blockMetadataTuto, blockTutoriel3, blocktutorialstairs,Wallblock, FantasyBlock,GreenFence,GreenStair,GreenWall,RedFence,RedStair,RedWall,PinkFence,PinkStair,PinkWall,OrangeFence,OrangeStair,OrangeWall;
    
    public static ArmorMaterial armorTuto = EnumHelper.addArmorMaterial("armorTuto", 45, new int[] {4, 9, 7, 4}, 30);
    public static ToolMaterial toolTuto = EnumHelper.addToolMaterial("toolTuto", 3, 1000, 12.0F, 4.0F, 20);
    public static ToolMaterial toolsword = EnumHelper.addToolMaterial("toolTuto", 3, 1000, 12.0F, 14.0F, 20);
    public static CreativeTabs FantasyBlockCreativeTabs = new FantasyBlockCreativeTabs("fantasy_block_creative_tabs");
    public static CreativeTabs tutorialCreativeTabs = new TutorialCreativeTabs("tutorial_creative_tabs");
    
    WorldGeneration worldgeneration = new WorldGeneration();
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    letest = new Letest().setUnlocalizedName("letest").setTextureName(MODID + ":Item_letest");
    fufuaple = new FufuAple(5, 1.5F, false).setAlwaysEdible().setUnlocalizedName("fufuaple").setTextureName(MODID + ":Item_fufuaple");
    helmetTuto = new ItemTutoArmor(armorTuto, 0).setUnlocalizedName("helmetTuto").setTextureName(MODID + ":helmet_tutoriel");
    chestPlateTuto = new ItemTutoArmor(armorTuto, 1).setUnlocalizedName("chestPlateTuto").setTextureName(MODID + ":chestplate_tutoriel");
    leggingsTuto = new ItemTutoArmor(armorTuto, 2).setUnlocalizedName("leggingsTuto").setTextureName(MODID + ":leggings_tutoriel");
    bootsTuto = new ItemTutoArmor(armorTuto, 3).setUnlocalizedName("bootsTuto").setTextureName(MODID + ":boots_tutoriel");
    swordTuto = new ItemTutoSword(toolsword).setUnlocalizedName("swordTuto").setTextureName(MODID + ":sword_tutoriel");
    pickaxeTuto = new ItemTutoPickaxe(toolTuto).setUnlocalizedName("pickaxeTuto").setTextureName(MODID + ":pickaxe_tutoriel");
    axeTuto = new ItemTutoAxe(toolTuto).setUnlocalizedName("axeTuto").setTextureName(MODID + ":axe_tutoriel");
    shovelTuto = new ItemTutoShovel(toolTuto).setUnlocalizedName("shovelTuto").setTextureName(MODID + ":shovel_tutoriel");
    hoeTuto = new ItemTutoHoe(toolTuto).setUnlocalizedName("hoeTuto").setTextureName(MODID + ":hoe_tutoriel");
    MancheEpee = new MancheEpee().setUnlocalizedName("MancheEpee").setTextureName(MODID + ":manche_epee");
    MilieuEpee = new MilieuEpee().setUnlocalizedName("MilieuEpee").setTextureName(MODID + ":milieu_epee");
    HautEpee = new HautEpee().setUnlocalizedName("HautEpee").setTextureName(MODID + ":haut_epee");
    FantasyNugget = new FantasyNugget().setUnlocalizedName("FantasyNugget").setTextureName(MODID + ":fantasy_nugget");
    record_tuto = new MusicDisc("tutomusique").setUnlocalizedName("tutomusiqueRecord");
    
    GameRegistry.registerItem(letest, "item_letest");
    GameRegistry.registerItem(fufuaple, "item_fufuaple");
    GameRegistry.registerItem(helmetTuto, "item_tuto_helmet");
    GameRegistry.registerItem(chestPlateTuto, "item_tuto_chestplate");
    GameRegistry.registerItem(leggingsTuto, "item_tuto_leggings");
    GameRegistry.registerItem(bootsTuto, "item_tuto_boots");
    GameRegistry.registerItem(swordTuto, "item_tuto_sword");
    GameRegistry.registerItem(pickaxeTuto, "item_tuto_pickaxe");
    GameRegistry.registerItem(axeTuto, "item_tuto_axe");
    GameRegistry.registerItem(shovelTuto, "item_tuto_shovel");
    GameRegistry.registerItem(hoeTuto, "item_tuto_hoe");
    GameRegistry.registerItem(MancheEpee, "manche_epee");
    GameRegistry.registerItem(MilieuEpee, "milieu_epee");
    GameRegistry.registerItem(HautEpee, "haut_epee");
    GameRegistry.registerItem(FantasyNugget, "fantasy_nugget");
    GameRegistry.registerItem(record_tuto,"tutomusiqueRecord");
    
    blockTutoriel = new BlockOreTutoriel(Material.rock).setHardness(15.0F).setResistance(10.0F).setBlockName("tutoriel").setBlockTextureName(MODID + ":block_tutoriel");
    blockTutoriel2 = new BlockTutoriel(Material.wood).setHardness(1.5F).setResistance(10.0F).setBlockName("tutoriel2").setBlockTextureName(MODID + ":block_tutoriel2");
    blockMetadataTuto = new BlockTutorielMetadata().setBlockName("metadataTuto").setHardness(1.5F).setResistance(10.0F).setCreativeTab(ModTest.FantasyBlockCreativeTabs);
    blockTutoriel3 = new FenceBlock(MODID +":fantasy_block", Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("tutoriel3");
    blocktutorialstairs = new BlockTutorialStairs(ModTest.blockTutoriel3, 0, Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("TutorialStairs").setBlockTextureName(MODID + ":fantasy_block");
    Wallblock = new WallBlock(blockTutoriel3).setBlockName("WallBlock");
    FantasyBlock = new FantasyBlock(Material.rock).setHardness(5.0F).setResistance(10.0F).setBlockName("FantasyBlock").setBlockTextureName(MODID + ":fantasy_block");
    GreenFence = new FenceBlock(MODID +":block4", Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("green_fence");
    GreenStair = new BlockTutorialStairs(ModTest.GreenFence, 0, Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("green_stair").setBlockTextureName(MODID + ":block4");
    GreenWall = new GreenWall(ModTest.GreenFence).setBlockName("GreenWall");
    RedFence = new FenceBlock(MODID +":block1", Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("red_fence");
    RedStair = new BlockTutorialStairs(ModTest.RedFence, 0, Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("red_stair").setBlockTextureName(MODID + ":block1");
    RedWall = new com.google.monpetitflocon.modtest.common.blocks.RedWall(ModTest.RedFence).setBlockName("RedWall");
    PinkFence = new FenceBlock(MODID +":block2", Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("pink_fence");
    PinkStair = new BlockTutorialStairs(ModTest.PinkFence, 0, Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("pink_stair").setBlockTextureName(MODID + ":block2");
    PinkWall = new com.google.monpetitflocon.modtest.common.blocks.PinkWall(ModTest.PinkFence).setBlockName("PinkWall");
    OrangeFence = new FenceBlock(MODID +":block3", Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("orange_fence");
    OrangeStair = new BlockTutorialStairs(ModTest.OrangeFence, 0, Material.wood).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("orange_stair").setBlockTextureName(MODID + ":block3");
    OrangeWall = new com.google.monpetitflocon.modtest.common.blocks.OrangeWall(ModTest.OrangeFence).setBlockName("OrangeWall");
    
    GameRegistry.registerBlock(blockTutoriel, "block_tutoriel");
    GameRegistry.registerBlock(blockTutoriel2, "block_tutoriel2");
    GameRegistry.registerBlock(blockMetadataTuto, ItemBlockMetadataTutoriel.class, "block_tuto_metadata", new Object[]{BlockTutorielMetadata.subBlock});
    GameRegistry.registerBlock(blockTutoriel3, "block_tutoriel3");
    GameRegistry.registerBlock(blocktutorialstairs, "TutorialStairs");
    GameRegistry.registerBlock(Wallblock, "Wall_block");
    GameRegistry.registerBlock(FantasyBlock, "Fantasy_block");
    GameRegistry.registerBlock(GreenFence, "green_fence");
    GameRegistry.registerBlock(GreenStair, "green_stair");
    GameRegistry.registerBlock(GreenWall, "green_wall");
    GameRegistry.registerBlock(RedFence, "red_fence");
    GameRegistry.registerBlock(RedStair, "red_stair");
    GameRegistry.registerBlock(RedWall, "red_wall");
    GameRegistry.registerBlock(PinkFence, "pink_fence");
    GameRegistry.registerBlock(PinkStair, "pink_stair");
    GameRegistry.registerBlock(PinkWall, "pink_wall");
    GameRegistry.registerBlock(OrangeFence, "orange_fence");
    GameRegistry.registerBlock(OrangeStair, "orange_stair");
    GameRegistry.registerBlock(OrangeWall, "orange_wall");
    
    GameRegistry.registerWorldGenerator(worldgeneration, 0);
    }
    public static BiomeGenBase[] allBiomes =
    
    {
    BiomeGenBase.plains, BiomeGenBase.extremeHills, BiomeGenBase.beach, BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.forest, BiomeGenBase.forestHills, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.river, BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, BiomeGenBase.coldBeach, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.deepOcean, BiomeGenBase.extremeHillsPlus, BiomeGenBase.jungleEdge, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, BiomeGenBase.mesa, BiomeGenBase.mesaPlateau, BiomeGenBase.mesaPlateau_F, BiomeGenBase.roofedForest, BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, BiomeGenBase.stoneBeach
    };
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    MinecraftForge.EVENT_BUS.register(new LivingEventHandler());
    FMLCommonHandler.instance().bus().register(new PlayerEventHandler());
    MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
    
    addEntity(EntityMonMob.class, "MobTuto", 125, 255, 100);
    addEntity(Darkheaven.class, "Darkheaven", 126, 255, 100);
    addEntity(Aznching.class, "Aznching", 127, 255, 100);
    addEntity(Oxilac.class, "Oxilac", 128, 255, 100);
    
    EntityRegistry.registerGlobalEntityID(EntityMonMob.class, "MobTuto", EntityRegistry.findGlobalUniqueEntityId(), new Color(97, 0, 255).getRGB(), new Color(146, 91, 255).getRGB());
    
    EntityRegistry.registerModEntity(EntityMonMob.class, "MobTuto", 430, ModTest.instance, 40, 1, true);
    EntityRegistry.addSpawn(EntityMonMob.class, 9, 1, 3, EnumCreatureType.creature, allBiomes);
    
    proxy.registerRender();
    
    ItemStack itemenchante = new ItemStack(swordTuto, 1, 0);
    itemenchante.addEnchantment(Enchantment.knockback, 5);
    itemenchante.addEnchantment(Enchantment.looting, 2);
    itemenchante.addEnchantment(Enchantment.baneOfArthropods, 2);
    itemenchante.addEnchantment(Enchantment.sharpness, 5);
    itemenchante.addEnchantment(Enchantment.smite, 4);
    //Recipes
    GameRegistry.addRecipe(new ItemStack(helmetTuto), new Object[]{"XXX", "X X", " ", 'X', ModTest.letest});
    GameRegistry.addRecipe(new ItemStack(chestPlateTuto), new Object[]{"X X", "XXX", "XXX", 'X', ModTest.letest});
    GameRegistry.addRecipe(new ItemStack(leggingsTuto), new Object[]{"XXX", "X X", "X X", 'X', ModTest.letest});
    GameRegistry.addRecipe(new ItemStack(bootsTuto), new Object[]{" ", "X X", "X X", 'X', ModTest.letest});
    GameRegistry.addRecipe(itemenchante, new Object[]{"X ", " Y ", " Z", 'X', ModTest.HautEpee,
    'Y', new ItemStack(ModTest.MilieuEpee),
    'Z', new ItemStack(ModTest.MancheEpee),});
    GameRegistry.addRecipe(new ItemStack(pickaxeTuto), new Object[]{"XXX", " Y ", " Y ", 'X', ModTest.letest,
    'Y', new ItemStack(Items.stick),});
    GameRegistry.addRecipe(new ItemStack(axeTuto), new Object[]{" XX", " YX", " Y ", 'X', ModTest.letest,
    'Y', new ItemStack(Items.stick),});
    GameRegistry.addRecipe(new ItemStack(shovelTuto), new Object[]{" X ", " Y ", " Y ", 'X', ModTest.letest,
    'Y', new ItemStack(Items.stick),});
    GameRegistry.addRecipe(new ItemStack(hoeTuto), new Object[]{"XX ", " Y ", " Y ", 'X', ModTest.letest,
    'Y', new ItemStack(Items.stick),});
    GameRegistry.addRecipe(new ItemStack(blockTutoriel2), new Object[]{"XY ", "ZA ", " ", 'X', ModTest.fufuaple,
    'Y', new ItemStack(Items.cooked_porkchop),
    'Z', new ItemStack(Blocks.wool),
    'A', new ItemStack(Blocks.wool, 1, 15),});
    GameRegistry.addRecipe(new ItemStack(fufuaple), new Object[]{"XXX", "XYX", "XXX", 'X',ModTest.letest,
    'Y', new ItemStack(Items.golden_apple),});
    GameRegistry.addRecipe(new ItemStack(FantasyBlock), new Object[]{"XXX", "XXX", "XXX", 'X',ModTest.letest,
    });
    GameRegistry.addRecipe(new ItemStack(letest, 9), new Object[]{"X ", " ", " ", 'X',ModTest.FantasyBlock,
    });
    GameRegistry.addRecipe(new ItemStack(FantasyNugget , 9), new Object[]{"X ", " ", " ", 'X',ModTest.letest,
    });
    GameRegistry.addRecipe(new ItemStack(letest), new Object[]{"XXX", "XXX", "XXX", 'X',ModTest.FantasyNugget,
    });
    GameRegistry.addRecipe(new ItemStack(blockTutoriel3, 3), new Object[]{" ", "XYX", "XYX", 'X',ModTest.FantasyNugget,
    'Y', new ItemStack(Items.stick),});
    GameRegistry.addRecipe(new ItemStack(Wallblock, 6), new Object[]{" ", "XXX", "XXX", 'X',ModTest.FantasyNugget,
    });
    GameRegistry.addRecipe(new ItemStack(blocktutorialstairs, 4), new Object[]{" X", " XX", "XXX", 'X',ModTest.FantasyNugget,
    });
    GameRegistry.addRecipe(new ItemStack(blockMetadataTuto, 1, 0), new Object[]{"XY ", " ", " ", 'X',ModTest.FantasyBlock,
    'Y', new ItemStack(Items.dye, 1, 1),});
    GameRegistry.addRecipe(new ItemStack(blockMetadataTuto, 1, 1), new Object[]{"XY ", " ", " ", 'X',ModTest.FantasyBlock,
    'Y', new ItemStack(Items.dye, 1, 9),});
    GameRegistry.addRecipe(new ItemStack(blockMetadataTuto, 1, 2), new Object[]{"XY ", " ", " ", 'X',ModTest.FantasyBlock,
    'Y', new ItemStack(Items.dye, 1, 14),});
    GameRegistry.addRecipe(new ItemStack(blockMetadataTuto, 1, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.FantasyBlock,
    'Y', new ItemStack(Items.dye, 1, 10),});
    GameRegistry.addRecipe(new ItemStack(GreenWall, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.Wallblock,
    'Y', new ItemStack(Items.dye, 3, 10),});
    GameRegistry.addRecipe(new ItemStack(RedWall, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.Wallblock,
    'Y', new ItemStack(Items.dye, 3, 1),});
    GameRegistry.addRecipe(new ItemStack(PinkWall, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.Wallblock,
    'Y', new ItemStack(Items.dye, 3, 9),});
    GameRegistry.addRecipe(new ItemStack(OrangeWall, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.Wallblock,
    'Y', new ItemStack(Items.dye, 3, 14),});
    GameRegistry.addRecipe(new ItemStack(GreenFence, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blockTutoriel3,
    'Y', new ItemStack(Items.dye, 3, 10),});
    GameRegistry.addRecipe(new ItemStack(RedFence, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blockTutoriel3,
    'Y', new ItemStack(Items.dye, 3, 1),});
    GameRegistry.addRecipe(new ItemStack(PinkFence, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blockTutoriel3,
    'Y', new ItemStack(Items.dye, 3, 9),});
    GameRegistry.addRecipe(new ItemStack(OrangeFence, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blockTutoriel3,
    'Y', new ItemStack(Items.dye, 3, 14),});
    GameRegistry.addRecipe(new ItemStack(GreenStair, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blocktutorialstairs,
    'Y', new ItemStack(Items.dye, 3, 10),});
    GameRegistry.addRecipe(new ItemStack(RedStair, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blocktutorialstairs,
    'Y', new ItemStack(Items.dye, 3, 1),});
    GameRegistry.addRecipe(new ItemStack(PinkStair, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blocktutorialstairs,
    'Y', new ItemStack(Items.dye, 3, 9),});
    GameRegistry.addRecipe(new ItemStack(OrangeStair, 3), new Object[]{"XY ", " ", " ", 'X',ModTest.blocktutorialstairs,
    'Y', new ItemStack(Items.dye, 3, 14),});
    
    //Parts
    GameRegistry.addRecipe(new ItemStack(ModTest.MancheEpee), new Object[]{" Y", " Y ", "X ", 'X',ModTest.letest,
    'Y', new ItemStack(Items.stick),}); // Manche Epee
    GameRegistry.addRecipe(new ItemStack(ModTest.MilieuEpee), new Object[]{"X X", " X ", " ", 'X',ModTest.letest,}); // Milieu Epee
    GameRegistry.addRecipe(new ItemStack(ModTest.HautEpee), new Object[]{" X ", "XYX", "XYX", 'X',ModTest.letest,
    'Y', new ItemStack(Items.diamond),}); // Haut Epee
    
    }
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    
    }
    
    public void addEntity(Class entityClass, String name, int id, int backgroundEggColour,int foregroundEggColour)
    {
    EntityRegistry.registerGlobalEntityID(entityClass, name, EntityRegistry.findGlobalUniqueEntityId(), backgroundEggColour, foregroundEggColour);
    EntityRegistry.registerModEntity(entityClass, name, id, this, 40, 1, true);
    }
    }
    

    :::