MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Problème avec une plante

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    6 Messages 2 Publieurs 366 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • F Hors-ligne
      FullLager
      dernière édition par

      Bonjour,
      je suis actuellement en train de créer une plante pour mon mod. Tout fonctionne parfaitement (les drops, les graines etc…) mais lorsque je saute sur la farmland sur laquelle il y a ma plante, la farmland se transforme en dirt mais ma plante ne se détruit pas (c’est ce qui est censé se passer pour une plante normal comme les patates ou les carottes). Pourquoi est ce que la plante ne se détruit pas ? Je suis en 1.12.2. Voici le code :

      package fr.fulllager.elonia.blocks.crops;
      
      import java.util.Random;
      
      import fr.fulllager.elonia.init.ItemMod;
      import net.minecraft.block.BlockCrops;
      import net.minecraft.block.IGrowable;
      import net.minecraft.block.properties.PropertyInteger;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.init.Blocks;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemBlock;
      import net.minecraft.util.math.AxisAlignedBB;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.world.IBlockAccess;
      
      public class BlockCropsElonium extends BlockCrops implements IGrowable
      {
          public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7);
          private static final AxisAlignedBB[] ELONIUM_AABB = new AxisAlignedBB[] {new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.375D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.625D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.75D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.875D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D)};
      
          public BlockCropsElonium(String name) {
      		setUnlocalizedName(name);
      		setRegistryName(name);
      		setTickRandomly(true);
      		setDefaultState(blockState.getBaseState().withProperty(getAgeProperty(), Integer.valueOf(0)));
      	}
          
          public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
          {
              return ELONIUM_AABB[((Integer)state.getValue(this.getAgeProperty())).intValue()];
          }
          
      	protected Item getSeed()
      	{
      		Random r = new Random();
      		int nbr = r.nextInt(100);
      		if(nbr == 1) {
      			return ItemMod.elonium_seed;
      		}
      		else {
      			return ItemBlock.getItemFromBlock(Blocks.DIRT);
      		}
      	}
      	
      	protected Item getCrop()
          {
              Random r = new Random();
              int nbr = r.nextInt(1000);
      	if(nbr == 1) {		
                      return ItemMod.elonium_ingot;
      	}else if(nbr == 2 || nbr == 3){
      		return ItemMod.elonium_pepite;
      	}else {
      		return ItemBlock.getItemFromBlock(Blocks.DIRT);
      	}
          }
      }
      
      

      Merci par avance.

      1 réponse Dernière réponse Répondre Citer 0
      • F Hors-ligne
        FullLager
        dernière édition par

        Merci beaucoup j’ai regarde la fonction et me susi rendu compte que je n’avais pas mis d’EnumPlantType. Je met le code ici si vous avez le même problème :

        @Override
        	public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) {
        		return EnumPlantType.Crop;
        	}
        	
        	@Override
        	public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable) {
        		IBlockState plant = plantable.getPlant(world, pos.offset(direction));
                net.minecraftforge.common.EnumPlantType plantType = plantable.getPlantType(world, pos.offset(direction));
                return this == net.minecraft.init.Blocks.FARMLAND;
        	}
        

        Merci

        1 réponse Dernière réponse Répondre Citer 2
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Bonsoir,
          C’est la fonction canSustainPlant qui gère ça de mémoire.

          1 réponse Dernière réponse Répondre Citer 0
          • F Hors-ligne
            FullLager
            dernière édition par

            J’ai essaye d’ajouter la fonction mais cela ne fonctionne toujours pas :

            package fr.fulllager.elonia.blocks.crops;
            
            import java.util.Random;
            
            import fr.fulllager.elonia.init.ItemMod;
            import net.minecraft.block.BlockBush;
            import net.minecraft.block.BlockCrops;
            import net.minecraft.block.BlockLiquid;
            import net.minecraft.block.IGrowable;
            import net.minecraft.block.material.Material;
            import net.minecraft.block.properties.PropertyInteger;
            import net.minecraft.block.state.IBlockState;
            import net.minecraft.init.Blocks;
            import net.minecraft.item.Item;
            import net.minecraft.item.ItemBlock;
            import net.minecraft.util.EnumFacing;
            import net.minecraft.util.math.AxisAlignedBB;
            import net.minecraft.util.math.BlockPos;
            import net.minecraft.world.IBlockAccess;
            import net.minecraftforge.common.IPlantable;
            
            public class BlockCropsElonium extends BlockCrops implements IGrowable
            {
                public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7);
                private static final AxisAlignedBB[] ELONIUM_AABB = new AxisAlignedBB[] {new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.375D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.625D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.75D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.875D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D)};
            
                public BlockCropsElonium(String name) {
            		setUnlocalizedName(name);
            		setRegistryName(name);
            		setTickRandomly(true);
            		setDefaultState(blockState.getBaseState().withProperty(getAgeProperty(), Integer.valueOf(0)));
            	}
                
                public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
                {
                    return ELONIUM_AABB[((Integer)state.getValue(this.getAgeProperty())).intValue()];
                }
                
            	protected Item getSeed()
            	{
            		Random r = new Random();
            		int nbr = r.nextInt(100);
            		if(nbr == 1) {
            			return ItemMod.elonium_seed;
            		}
            		else {
            			return ItemBlock.getItemFromBlock(Blocks.DIRT);
            		}
            	}
            	
            	protected Item getCrop()
                {
                    Random r = new Random();
            		int nbr = r.nextInt(1000);
            		if(nbr == 1) {
            			return ItemMod.elonium_ingot;
            		}else if(nbr == 2 || nbr == 3){
            			return ItemMod.elonium_pepite;
            		}else {
            			return ItemBlock.getItemFromBlock(Blocks.DIRT);
            		}
                }
            	
            	@Override
            	public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable) {
            		return super.canSustainPlant(state, world, pos, direction, plantable);
            		}
            }
            
            

            Est ce qu’il ne faudrait pas plutot que je recopie la fonction ?

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Non plus, il faut que tu implémentes la logique approprié.

              1 réponse Dernière réponse Répondre Citer 0
              • F Hors-ligne
                FullLager
                dernière édition par

                Merci beaucoup j’ai regarde la fonction et me susi rendu compte que je n’avais pas mis d’EnumPlantType. Je met le code ici si vous avez le même problème :

                @Override
                	public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) {
                		return EnumPlantType.Crop;
                	}
                	
                	@Override
                	public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable) {
                		IBlockState plant = plantable.getPlant(world, pos.offset(direction));
                        net.minecraftforge.common.EnumPlantType plantType = plantable.getPlantType(world, pos.offset(direction));
                        return this == net.minecraft.init.Blocks.FARMLAND;
                	}
                

                Merci

                1 réponse Dernière réponse Répondre Citer 2
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  Merci pour le partage de la solution, cela servira surement à d’autres 😉

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB