Une plante plantable sur un bloc moddé



  • Bonjour, désolé de faire encore un nouveau topic, mais voilà: J'ai fais une plante mais qui peut se planter sur un des blocs de mon mod mais quand j'en mets une autre à coté, ça update le bloc et la plante est cassée 😞

    Le code:

    public class ItemSeedsMod extends ItemSeeds
    {
    private Block bplant, bfarm;
    
    public ItemSeedsMod(Block plant, Block farm)
    {
    super(plant, farm);
    bplant = plant;
    bfarm = farm;
    }
    
    public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_)
    {
    if (p_77648_7_ != 1)
    {
    return false;
    }
    
    if (player.canPlayerEdit(x, y, z, z, stack) && player.canPlayerEdit(x, y + 1, z, p_77648_7_, stack))
    {
    if (world.getBlock(x, y, z) == bfarm && world.isAirBlock(x, y + 1, z))
    {
    world.setBlock(x, y + 1, z, bplant);
    –stack.stackSize;
    return true;
    }
    }
    return false;
    }
    }
    

    Voilà, j'espère grandement que vous m'aiderez 🙂



  • Le problème ne viens pas de l'item qui plante la plante mais de la plante en elle même, montre nous plutôt le class du block de la plante.



  • Il faut modifier la méthode canSustainPlant, et d'ailleurs tu devrais retirer le == bfarm et utiliser cette fonction plutôt : cela permettrait aux autre de créer un block sur lequel faire pousser ta plante



  • J'ai modifié, ça marche nickel
    le code:

    package com.mod.test.blocks;
    
    import com.mod.test.init.BlockMod;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockCrops;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    
    public class BlockCropsMod extends BlockCrops
    {
    protected boolean canPlaceBlockOn(Block block)
    {
    return block == BlockMod.binary_block;
    }
    
    private float func_149864_n(World world, int x, int y, int z)
    {
    float f = 1.0F;
    Block block = world.getBlock(x, x, z - 1);
    Block block1 = world.getBlock(x, x, z + 1);
    Block block2 = world.getBlock(x - 1, x, z);
    Block block3 = world.getBlock(x + 1, x, z);
    Block block4 = world.getBlock(x - 1, x, z - 1);
    Block block5 = world.getBlock(x + 1, x, z - 1);
    Block block6 = world.getBlock(x + 1, x, z + 1);
    Block block7 = world.getBlock(x - 1, x, z + 1);
    boolean flag = block2 == this || block3 == this;
    boolean flag1 = block == this || block1 == this;
    boolean flag2 = block4 == this || block5 == this || block6 == this || block7 == this;
    
    for (int l = x - 1; l <= x + 1; ++l)
    {
    for (int i1 = z - 1; i1 <= z + 1; ++i1)
    {
    float f1 = 0.0F;
    
    if (world.getBlock(l, x - 1, i1) == BlockMod.binary_block)
    {
    f1 = 1.0F;
    
    if (isFertile(world.getBlock(l, x - 1, i1), world, l, x - 1, i1))
    {
    f1 = 3.0F;
    }
    }
    
    if (l != x || i1 != z)
    {
    f1 /= 4.0F;
    }
    
    f += f1;
    }
    }
    
    if (flag2 || flag && flag1)
    {
    f /= 2.0F;
    }
    
    return f;
    }
    
    public boolean isFertile(Block block, World world, int x, int y, int z)
    {
    if (block == BlockMod.binary_block)
    {
    return true;
    }
    return false;
    }
    }
    
    

    @'SCAREX':

    Il faut modifier la méthode canSustainPlant, et d'ailleurs tu devrais retirer le == bfarm et utiliser cette fonction plutôt : cela permettrait aux autre de créer un block sur lequel faire pousser ta plante

    J'ai pas compris



  • euh Une plante plantable ? mince j'avais une idée pour une non plantable


Log in to reply