SOLVED Comment faire pousser ses plantes avec sa BoneMeal?

  • Modérateurs

    Bonjour, voilà récemment, j’ai créé une bonemeal et je souhaiterais l’utiliser sur mes plantes et arbres, pour les faire pousser, mais je n’y arrives pas même en me basant sur le code de la Bonemeal vanilla.

    Cordialement,

    Superloup10


  • Sa m’intéresserai beaucoup a savoirs sa aussi, si qu’elle qu’un peu répondre si il vous plais, merci :).


  • Je ne sais pas si j’ai le droit de faire un lien vers ce site, mais il y un tuto en tout cas : http://forum.ironcraft.fr/topic/2990-15-faire-pousser-vos-plantes/.


  • sa sera dans mon tuto sur l’arbre de A à Z ^^

  • Modérateurs

    @Minecraftienne : J’ai déjà créer un plante mais je veux la faire pousser avec la bonemeal que j’ai créé pas avec celle de Minecraft.

    @0nit : J’en aurais besoin assez rapidement de ce code.


  • tien…
    class principale(dans Init):

    MinecrftForge.EVENT_BUS.register(New NomDeLaClassEvent());
    

    dans la classe de l’event que tu a créer:

    @ForgeSuscribe
    public void nomDeTaMethode(BonemealEvent event)
    {
    if(event.ID == NomDeTaClassePrincipale.NomClasseDeTaPlante.blockID)
    {
    if(!event.world.isRemote)
    {
    ((NomClasseDeTaPlante)NomDeTaClassePrincipale.NomClasseDeTaPlante).nomDeLaMethodeFaisantPoucerLaplante(event.world, event.X, event.Y, event.Z, event.world.rand);
    event.setResult(Event.Result.ALLOW);
    }
    }
    }
    

  • Non Onit, sa c’est pour faire poussai une plante que l’on a créer avec la bone meal normal, PAS avec une bone meal que l’on a CRÉE.


  • avec sa bonemeal, j’avais mal lu ^^’


  • Je tiens à dire que toutes les sources originales sont disponibles, si vous cherchez comment faire quelque chose, vous n’avez qu’à aller voir le code de quelque chose d’existant et de modifier les parties qui relient celui du Vanilla pour les votres


  • Personnellement, c’est se que je fais quand je ne trouve pas de solution comme sa, je pense que Superloup10 en fais de même, si il poste se message, ce n’est pas pour rien, j’en aurai fais de même, car je ne trouve strictement rien.
    Sa m’évite de créer un sujet vue qu’il l’a fais x).
    Mais il ne faut pas croire, je continue a cherchai.


  • Le onItemUse du BoneMeal devrait suffire pourtant

  • Modérateurs

    J’ai essayé avec ce code

    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    {
    if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack))
    {
    return false;
    }
    else
    {
    if (par1ItemStack.getItemDamage() == 15)
    {
    if (applyBonemeal(par1ItemStack, par3World, par4, par5, par6, par2EntityPlayer))
    {
    if (!par3World.isRemote)
    {
    par3World.playAuxSFX(2005, par4, par5, par6, 0);
    }
    
    return true;
    }
    }
    else if (par1ItemStack.getItemDamage() == 3)
    {
    int i1 = par3World.getBlockId(par4, par5, par6);
    int j1 = par3World.getBlockMetadata(par4, par5, par6);
    
    if (i1 == Block.wood.blockID && BlockLog.limitToValidMetadata(j1) == 3)
    {
    if (par7 == 0)
    {
    return false;
    }
    
    if (par7 == 1)
    {
    return false;
    }
    
    if (par7 == 2)
    {
    –par6;
    }
    
    if (par7 == 3)
    {
    ++par6;
    }
    
    if (par7 == 4)
    {
    --par4;
    }
    
    if (par7 == 5)
    {
    ++par4;
    }
    
    if (par3World.isAirBlock(par4, par5, par6))
    {
    int k1 = Block.blocksList[Block.cocoaPlant.blockID].onBlockPlaced(par3World, par4, par5, par6, par7, par8, par9, par10, 0);
    par3World.setBlock(par4, par5, par6, Block.cocoaPlant.blockID, k1, 2);
    
    if (!par2EntityPlayer.capabilities.isCreativeMode)
    {
    –par1ItemStack.stackSize;
    }
    }
    
    return true;
    }
    }
    
    return false;
    }
    }
    
    public static boolean func_96604_a(ItemStack par0ItemStack, World par1World, int par2, int par3, int par4)
    {
    return applyBonemeal(par0ItemStack, par1World, par2, par3, par4, FakePlayerFactory.getMinecraft(par1World));
    }
    
    public static boolean applyBonemeal(ItemStack par0ItemStack, World par1World, int par2, int par3, int par4, EntityPlayer player)
    {
    int l = par1World.getBlockId(par2, par3, par4);
    
    BonemealEvent event = new BonemealEvent(player, par1World, l, par2, par3, par4);
    if (MinecraftForge.EVENT_BUS.post(event))
    {
    return false;
    }
    
    if (event.getResult() == Result.ALLOW)
    {
    if (!par1World.isRemote)
    {
    par0ItemStack.stackSize--;
    }
    return true;
    }
    
    if (l == Block.sapling.blockID)
    {
    if (!par1World.isRemote)
    {
    if ((double)par1World.rand.nextFloat() < 0.45D)
    {
    ((BlockSapling)Block.sapling).markOrGrowMarked(par1World, par2, par3, par4, par1World.rand);
    }
    
    --par0ItemStack.stackSize;
    }
    
    return true;
    }
    else if (l != Block.mushroomBrown.blockID && l != Block.mushroomRed.blockID)
    {
    if (l != Block.melonStem.blockID && l != Block.pumpkinStem.blockID)
    {
    if (l > 0 && Block.blocksList[l] instanceof BlockCrops)
    {
    if (par1World.getBlockMetadata(par2, par3, par4) == 7)
    {
    return false;
    }
    else
    {
    if (!par1World.isRemote)
    {
    ((BlockCrops)Block.blocksList[l]).fertilize(par1World, par2, par3, par4);
    –par0ItemStack.stackSize;
    }
    
    return true;
    }
    }
    else
    {
    int i1;
    int j1;
    int k1;
    
    if (l == Block.cocoaPlant.blockID)
    {
    i1 = par1World.getBlockMetadata(par2, par3, par4);
    j1 = BlockDirectional.getDirection(i1);
    k1 = BlockCocoa.func_72219_c(i1);
    
    if (k1 >= 2)
    {
    return false;
    }
    else
    {
    if (!par1World.isRemote)
    {
    ++k1;
    par1World.setBlockMetadataWithNotify(par2, par3, par4, k1 << 2 | j1, 2);
    --par0ItemStack.stackSize;
    }
    
    return true;
    }
    }
    else if (l != Block.grass.blockID)
    {
    return false;
    }
    else
    {
    if (!par1World.isRemote)
    {
    --par0ItemStack.stackSize;
    label102:
    
    for (i1 = 0; i1 < 128; ++i1)
    {
    j1 = par2;
    k1 = par3 + 1;
    int l1 = par4;
    
    for (int i2 = 0; i2 < i1 / 16; ++i2)
    {
    j1 += itemRand.nextInt(3) - 1;
    k1 += (itemRand.nextInt(3) - 1) * itemRand.nextInt(3) / 2;
    l1 += itemRand.nextInt(3) - 1;
    
    if (par1World.getBlockId(j1, k1 - 1, l1) != Block.grass.blockID || par1World.isBlockNormalCube(j1, k1, l1))
    {
    continue label102;
    }
    }
    
    if (par1World.getBlockId(j1, k1, l1) == 0)
    {
    if (itemRand.nextInt(10) != 0)
    {
    if (Block.tallGrass.canBlockStay(par1World, j1, k1, l1))
    {
    par1World.setBlock(j1, k1, l1, Block.tallGrass.blockID, 1, 3);
    }
    }
    else
    {
    ForgeHooks.plantGrass(par1World, j1, k1, l1);
    }
    }
    }
    }
    
    return true;
    }
    }
    }
    else if (par1World.getBlockMetadata(par2, par3, par4) == 7)
    {
    return false;
    }
    else
    {
    if (!par1World.isRemote)
    {
    ((BlockStem)Block.blocksList[l]).fertilizeStem(par1World, par2, par3, par4);
    –par0ItemStack.stackSize;
    }
    
    return true;
    }
    }
    else
    {
    if (!par1World.isRemote)
    {
    if ((double)par1World.rand.nextFloat() < 0.4D)
    {
    ((BlockMushroom)Block.blocksList[l]).fertilizeMushroom(par1World, par2, par3, par4, par1World.rand);
    }
    
    –par0ItemStack.stackSize;
    }
    
    return true;
    }
    }
    
  • Administrateurs Rédacteurs Moddeurs confirmés

    if (par1ItemStack.getItemDamage() == 15)
    

    Problème trouvé, il faut pas oublier que le metadata de la bone meal est 15 alors que celle de ton item est 0 (en passant tu peux virer la condition qui sert pour le placement du cacao)

  • Modérateurs

    Ok, merci, fallait le trouver celui là.

    J’ai tester, je peux faire pousser mon arbre, mais pas ma plante, d’où ça peux venir sachant que l’arbre et la plante sont tous les deux, dans l’event qui correspond à la bonemeal?

    Je suis con, j’ai oublié de mettre la plante dans l’event.