Problème Plantes Houblons et Cannabis [1.7.10]



  • Bonjour, jessaye de faire des plante de cannabis et houblons pour mon serveur MC, mais jarrive pas surtous sur le repeat quand je casse la plante, voila le Code :

    Base pour les plantes :

    package com.nostalgie.mod.nrpp.block;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockBush;
    import net.minecraft.block.IGrowable;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.World;
    
    public class RecipeBlockCrops extends BlockBush implements IGrowable
    {
        protected int maxGrowthStage = 7;
        protected int repeat = 0;
        protected int repeatI = 0;
        protected String plant = ""; 
        protected Block canPlace;
        protected Item drop; 
        
        @SideOnly(Side.CLIENT)
        protected IIcon[] iIcon;
    
        public RecipeBlockCrops(String plantA, int repeatA, Block canPlaceA, Item dropA)
        {
         // Basic block setup
            setTickRandomly(true);
            float f = 0.5F;
            setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.25F, 0.5F + f);
            setCreativeTab((CreativeTabs)null);
            setHardness(0.0F);
            setStepSound(soundTypeGrass);
            disableStats();
            plant = plantA;
            repeat = repeatA;
            canPlace = canPlaceA;
            drop = dropA;        
        }
    
        /**
         * le block que vous voulez pouvoir le placer dessu, aka de l'herbe (grass)
         */
        @Override
        protected boolean canPlaceBlockOn(Block parBlock)
        {
            return parBlock == Blocks.grass;
        }
    
        public void incrementGrowStage(World parWorld, Random parRand, int parX, int parY, int parZ)
        {
            int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 
                  MathHelper.getRandomIntegerInRange(parRand, 2, 5);
    
            if (growStage > maxGrowthStage)
            {
             growStage = maxGrowthStage;
            }
    
            parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2);
        }
        
        @Override
        public Item getItemDropped(int p_149650_1_, Random parRand, int parFortune)
        {
            return Item.getItemFromBlock(this);
        }
    
        /**
         * comment vous voulez que il safiche
         */
        @Override
        public int getRenderType()
        {
            return 1; // croix comme une fleur
        }
        
        public void func_149674_a(World parWorld, int parX, int parY, int parZ, Random parRand)
        {
          if (repeatI == 0) {
            super.func_149674_a(parWorld, parX, parY, parZ, parRand);
            int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1;
            
            if (growStage > 7)
            {
              growStage = 7;
            }
            
            parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2);
            repeatI = repeat;
          }
          else {
            repeatI -= 1;
          }
        }
        
        /**
         * Texture du block. Args: side, meta
         */
        @Override
        @SideOnly(Side.CLIENT)
        public IIcon getIcon(int parSide, int parGrowthStage)
        {
         return iIcon[parGrowthStage];
        }
       
        /*
         * Need to implement the IGrowable interface methods
         */
    
        /*
         * (non-Javadoc)
         * @see net.minecraft.block.IGrowable#func_149851_a(net.minecraft.world.World, 
         * int, int, int, boolean)
         */
        @Override
        // Verifie que ca a fini de pousser (Stage 7 es le stat final)
        public boolean func_149851_a(World parWorld, int parX, int parY, int parZ, 
              boolean p_149851_5_)
        {
            return parWorld.getBlockMetadata(parX, parY, parZ) != 7;
        }
    
        /*
         * (non-Javadoc)
         * @see net.minecraft.block.IGrowable#func_149852_a(net.minecraft.world.World, 
         * java.util.Random, int, int, int)
         */
        @Override
        public boolean func_149852_a(World p_149852_1_, Random parRand, int p_149852_3_, 
              int p_149852_4_, int p_149852_5_)
        {
            return true;
        }
    
        /*
         * (non-Javadoc)
         * @see net.minecraft.block.IGrowable#func_149853_b(net.minecraft.world.World, 
         * java.util.Random, int, int, int)
         */
        @Override
        public void func_149853_b(World parWorld, Random parRand, int parX, int parY, 
              int parZ)
        {
            incrementGrowStage(parWorld, parRand, parX, parY, parZ);
        }
    }
    

    Cannabis :

    package com.nostalgie.mod.nrpp.block;
    
    import java.util.Random;
    
    import com.nostalgie.mod.nrpp.init.ItemMod;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockCrops;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraft.util.IIcon;
    import net.minecraft.world.World;
    
    public class CannabisCrops extends RecipeBlockCrops
    {
    
        public CannabisCrops()
        {
            // Setup basique du block
            setBlockName("CannabisCrops");
            setBlockTextureName("nrpp:CannabisCrops_stage_0");
        }
    
        /**
         * les graine que ca vas drop
         */
        @Override
        public int quantityDropped(int parMetadata, int parFortune, Random parRand)
        {
            return (parMetadata/7);
        }
    
        @Override
        public Item getItemDropped(int parMetadata, Random parRand, int parFortune)  
        {
         // DEBUG
         System.out.println("CannabisCrops getItemDropped()");
            return (ItemMod.cannabis_leaf);
        }
        
        @Override
        public void updateTick(World parWorld, int parX, int parY, int parZ, Random parRand)
        {
            super.updateTick(parWorld, parX, parY, parZ, parRand);
            int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1;
    
            if (growStage > 7)
            {
                growStage = 7;
            }
    
            parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2);
        }
    
        
        @Override
        @SideOnly(Side.CLIENT)
        public void registerBlockIcons(IIconRegister parIIconRegister)
        {
              iIcon = new IIcon[maxGrowthStage+1];
              // les plante ont 8 etapes, donc tu peux repeter des etape comme 0, 0, 0, 1, 1, 1, 
              // pour donner l'impression que c'est plus lent
              iIcon[0] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_0");
              iIcon[1] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_1");
              iIcon[2] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_2");
              iIcon[3] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_3");
              iIcon[4] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_4");
              iIcon[5] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_5");
              iIcon[6] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_6");
              iIcon[7] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_7");
        }
    }
    

    Houblons :

    package com.nostalgie.mod.nrpp.block;
    
    import java.util.Random;
    
    import com.nostalgie.mod.nrpp.init.ItemMod;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockCrops;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraft.util.IIcon;
    import net.minecraft.world.World;
    
    public class HoublonsCrops extends RecipeBlockCrops
    {
    
        public HoublonsCrops()
        {
            // Setup basique du block
            setBlockName("HoublonsCrops");
            setBlockTextureName("nrpp:houblons_stage_0");
        }
    
        /**
         * a quelle etape ca vas drop l'item
         */
        @Override
        public int quantityDropped(int parMetadata, int parFortune, Random parRand)
        {
            return (parMetadata/7);
        }
    
        @Override
        public Item getItemDropped(int parMetadata, Random parRand, int parFortune)  
        {
         // DEBUG
         System.out.println("HoublonsCrops getItemDropped()");
            return (ItemMod.houblons_leaf);
        }
        
        @Override
        @SideOnly(Side.CLIENT)
        public void registerBlockIcons(IIconRegister parIIconRegister)
        {
              iIcon = new IIcon[maxGrowthStage+1];
              // les plante ont 8 etapes, donc tu peux repeter des etape comme 0, 0, 0, 1, 1, 1, 
              // pour donner l'impression que c'est plus lent
              iIcon[0] = parIIconRegister.registerIcon("nrpp:houblons_stage_0");
              iIcon[1] = parIIconRegister.registerIcon("nrpp:houblons_stage_1");
              iIcon[2] = parIIconRegister.registerIcon("nrpp:houblons_stage_2");
              iIcon[3] = parIIconRegister.registerIcon("nrpp:houblons_stage_3");
              iIcon[4] = parIIconRegister.registerIcon("nrpp:houblons_stage_5");
              iIcon[6] = parIIconRegister.registerIcon("nrpp:houblons_stage_6");
              iIcon[7] = parIIconRegister.registerIcon("nrpp:houblons_stage_7");
        }
    }
    

    jai aussi un probleme avec la texture de stage 5 de mon houblons, il se mes en texture noir et rose alors que ca texture es dans le dossier blocks

    (desoler si il y a des faute d’orthographe),

    AZ_The_Froggie



  • ok, jai trouvee le debut du probleme qui ete de changer

    
        public void func_149674_a(World parWorld, int parX, int parY, int parZ, Random parRand)
        {
          if (repeatI == 0) {
            super.func_149674_a(parWorld, parX, parY, parZ, parRand);
            int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1;
            
            if (growStage > 7)
            {
              growStage = 7;
            }
            
            parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2);
            repeatI = repeat;
          }
          else {
            repeatI -= 1;
          }
        }
    

    Func_149674_a par updateTick
    mais mtn les crops de canna et houblons me dit :

    text alternatif

    AZ_the_froggie


  • Moddeurs confirmés Rédacteurs Administrateurs

    Ta classe hérite de quelle classe ?
    Car visiblement la classe parent a besoin d'un constructeur différent, il faut ajouter super(...); au début du constructeur.



  • @robin4002 du constructeur de RecipeBlockCrops ?



  • This post is deleted!


  • c'est bon jai compris, il faut mettre par example :

    super("HoublonsCrops", 7, null, ItemMod.houblons_leaf);
    

    au debut de la classe cannabis ou houblons, mais ca ne fait pas se que je croyer que ca aller faire, si vous savez comment le faire, c'est quand le crop es dans un stage entre 0 et 7, quand tu le casse, si c'est stage entre 0 a 6 ca vas re mettre le stage 0 et si c'est stage 7, ca re mes au stage 0 en droppend l'item demander (encore deso pour les faute d'orthographe)



  • This post is deleted!


  • comme je sais pas si c comprehensible, voici un schema (a la rache) :
    text alternatif


  • Moddeurs confirmés Rédacteurs Administrateurs

    Il faut override la fonction onBlockDestroyed et replacer le bloc dans cette dernière (avec un world.setBlock)


  • Moddeurs confirmés Modérateurs

    Tu ferais mieux d'en faire pousser dans ton jardin que sur Minecraft.



  • @isador34 au moin sur mc j'aurais pas de probleme 😂



  • @robin4002 donc il faut faire quel'que chose comme ca ?

    @Override
        public void onBlockDestroyed()
        {
        	world.setBlock HoublonsCrops;
        }
    

    si c ca, il me donne une erreur sur le world, et jai mis ce morceaux de code dans le code du HoublonsCrops


  • Moddeurs confirmés Rédacteurs Administrateurs

    En effet comme cela ça ne risque pas de fonctionner ...

    Déjà pour override la méthode onBlockDestroyed il faut les bons arguments, donc commence par regarder dans la classe Block.java à quoi ressemble la fonction.

    Et ensuite world.setBlock sans parenthèse après, ce n'est pas comme ça qu'on appelle une fonction en Java.



  • Merci, jai chercher dqans le block.class et jai trouvee ca (modifier pour mes plante) :

    @Override
        public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int p_149664_5_)
        {
        	world.setBlock(x, y, z, NostalgieRPPlants.CannabisCrops, 0, 2);
        }
    

    Mais la texture 5 de mon houblons ne veux pas safficher alors que il es bien mis dans le dossier blocks avec les texture du cannabis, si on peux m'aider, ca serrais la joie, vrm merci @robin4002 😄



  • je cherche aussi pour change le temp de croissance des plante si vous savez .-.


  • Moddeurs confirmés Rédacteurs Administrateurs

    La texture 5 ne s'affiche pas, c'est à dire ? Il y a un texture noir / violet ? Ou elle n'apparait juste jamais (et la plante reste sur la texture 4 pour toujours ?)



  • nan c'est bon jai regle ca, javais delete une etape et non, ca me donnait une texture noir et rose et apres ca changais quand ca grandissais, tous se que il me manque c'est le temp custom de croissance,


  • Moddeurs confirmés Rédacteurs Administrateurs

    De mémoire il suffit de changer la méthode tickRate (ou un truc du genre)



  • donc il faudrais que je @Override le TickRate, je vais voir ca



  • je comprend pas le tickrate(); .-. sa se trouve c tous con mais voilah.


Log in to reply