Un block qui se transforme avec le temps !



  • Bonjour, 
    j'aimerais crée dans mon mod un bloque qui avec le temps se transforme en un autre block !
    exemple : un bloque de dirt au bout de 10 min se transforme en bloque de grass !

    voila c'est tout simple !  
    si vous pouvez m'aider sa serais génial merci  ! 🙂


  • Rédacteurs

    Tu peux le faire à l'aide d'un TileEntity cependant je pense qu'une autre façon est possible… Je ne peux pas regarder parce que je n'ai pas mon PC, je sais que pour transformer la dirt en grass Minecraft utilise les random partial tick



  • Tu veux les créer toi même où modifier ceux du jeu vanilla ?

    Si c'est le deuxième cas, je ne pense pas que ça va être possible étant donné que c'est les blocs de grass qui remplacent totalement aléatoirement les blocs de dirt qu'il y a autour par des blocs de grass. (A moins de reprendre le même système, avec un certain délai, dans un bloc de ton mod qu'il faudra placer à côté des blocs de dirt).



  • Bonjour, pour la transformation de ton bloc ça devrait ressembler à ça (pour le transformer en bloc d'herbe) :

    @Override
    public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
    if (!world.isRemote) {
    world.setBlockState(pos, Blocks.BlockGrass.getDefaultState());
    }
    return true;
    }
    

    Et pour que ça arrive qu'une fois toutes les dix minutes, tu pourrais utiliser quelque chose comme ça :

    @Override
        public Block setTickRandomly(boolean shouldTick)
        {
            this.needsRandomTick = true;
            return this;
        }
    
        /**
         * Returns whether or not this block is of a type that needs random ticking. Called for ref-counting purposes by
         * ExtendedBlockStorage in order to broadly cull a chunk from the random chunk update list for efficiency's sake.
         */
    @Override
        public boolean getTickRandomly()
        {
            return this.needsRandomTick;
        }
    
    @Override
    public void randomTick(World worldIn, BlockPos pos, IBlockState state, Random random)
        {
            this.updateTick(worldIn, pos, state, random);
        }
    

    ça va envoyer des ticks de façon aléatoire à ton block, tu peux faire en sorte que ce soit plus rare avec Random.nextInt() mais je pense pas que tu puisse être précis.



  • Merci le block se transforme !
    merci 😉



  • Pas de quoi 🙂


  • Administrateurs

    Résolu ?



  • @'robin4002':

    Résolu ?

    Oui !



  • La balise alors 😃