MFF

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

    Bloc avec la même fonction que l'herbe

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    35 Messages 3 Publieurs 4.5k Vues 1 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.
    • S Hors-ligne
      sventus
      dernière édition par

      Ok, ça doit ressembler à ça ?

      Class du Block

      package fr.craftesys.craftesys.blocs;
      
      import fr.craftesys.craftesys.common.Mods;
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockBush;
      import net.minecraft.block.material.Material;
      import net.minecraft.init.Blocks;
      import net.minecraft.world.IBlockAccess;
      import net.minecraftforge.common.EnumPlantType;
      import fr.craftesys.craftesys.generation.EnumPlanType;
      import fr.craftesys.craftesys.generation.Plantable;
      import net.minecraftforge.common.IPlantable;
      import net.minecraftforge.common.util.ForgeDirection;
      
      public class BiomeBlock extends Block  {
      
          public BiomeBlock(Material material) {
              super(material);
          }
      
      public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction,
      Plantable plantable) {
      
      Block plant = plantable.getPlant(world, x, y + 1, z);
      EnumPlanType plantType = plantable.getPlantable(world, x, y + 1, z);
      
           if (plantable instanceof ArbreBiome && ((ArbreBiome)plantable).canPlaceBlockOn(this))
           {
               return true;
           }
      
      switch (plantType)
      
          {
          case Biome: return this == Mods.biome;
      
          }
      
      return false;
      
      }
      
      }
      
      

      la class ArbreBiome :

      package fr.craftesys.craftesys.blocs;
      
      import fr.craftesys.craftesys.common.Mods;
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.init.Blocks;
      import net.minecraft.world.IBlockAccess;
      import net.minecraftforge.common.EnumPlantType;
      import net.minecraftforge.common.IPlantable;
      
      public class ArbreBiome extends Block implements IPlantable {
      
      protected ArbreBiome(Material p_i45394_1_) {
      super(p_i45394_1_);
      
      }
      
      protected boolean canPlaceBlockOn(Block p_149854_1_)
          {
              return p_149854_1_ == Blocks.grass || p_149854_1_ == Blocks.dirt || p_149854_1_ == Blocks.farmland || p_149854_1_ == Mods.biome;
          }
      
      @Override
      public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) {
      
      return null;
      }
      
      @Override
      public Block getPlant(IBlockAccess world, int x, int y, int z) {
      
      return this;
      }
      
      @Override
      public int getPlantMetadata(IBlockAccess world, int x, int y, int z) {
      
      return world.getBlockMetadata(x, y, z);
      
      }
      
      }
      
      

      je pense être obligé de creer cette deuxième class, car la fonction “canPlaceBlockOn” passe de base par la class BlockBush, mais la fonction est protected, donc j’essaye de la reprendre,  mais quoiqu’il en soit, ça ne marche pas 😄

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

        Pour la première classe c’est ça mais il vaut mieux utiliser une des 2 méthodes plutôt que les 2.

        Pour la 2e : dans l’idée c’est ça mais le problème c’est que ça va être la pousse qui va être plantée et non la bûche ou autre chose (ArbreBiome est censé être quel block ?)

        Sinon globalement dans l’idée c’est ça

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

          la classe ArbreBiome est la class qui reprend la méthode canPlaceBlockOn qui de base est en protected dans BlockBush, donc je l’utilise pour récupérer cette méthode.

          je fais quoi du coup pour avoir le sapling dessus ?

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

            j’ai fait différents tests, et rien ne change 😞

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

              Est-ce que tu veux créer un nouveau type d’arbre ?
              Si oui, tu auras besoin de plusieurs blocks : le tron, la pousse (et les feuilles si tu ne veux pas celles de minecraft)

              Si non, tu n’as besoin que d’un seul block qui peut recevoir des arbres

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                Pour cette première version, je vais garder ce qui existe deja ^^ et mon block se trouve être “biome”   de la class “BiomeBlock”

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

                  J’ai toujours pas compris : est-ce que tu veux rajouter un arbre ou bien un bloc qui supporte les arbres ?

                  mon block se trouve être “biome” de la class “BiomeBlock”-> hein ?

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

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

                    j’ai un biome qui a pour sol un biome que j’ai créé, et dans ce biome, j’aimerais avoir des arbres deja existants pouvant pousser et être généré aléatoirement sur ce bloc

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

                      Alors tu n’as besoin que de ré-écrire la fonction canSustainPlant pour le block qui est à la surface de ton biome

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

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

                        import fr.craftesys.craftesys.common.Mods;
                        import net.minecraft.block.Block;
                        import net.minecraft.block.BlockBush;
                        import net.minecraft.block.BlockSapling;
                        import net.minecraft.block.material.Material;
                        import net.minecraft.init.Blocks;
                        import net.minecraft.world.IBlockAccess;
                        import net.minecraftforge.common.EnumPlantType;
                        import fr.craftesys.craftesys.generation.EnumPlanType;
                        import fr.craftesys.craftesys.generation.Plantable;
                        import net.minecraftforge.common.IPlantable;
                        import net.minecraftforge.common.util.ForgeDirection;
                        
                        public class BiomeBlock extends Block  {
                        
                            public BiomeBlock(Material material) {
                                super(material);
                            }
                        
                        public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction,
                        Plantable plantable) {
                        
                        boolean plantType = plantable.getPlantable(world, x, y + 1, z)== EnumPlanType.Biome ;
                        
                        return plantType;
                        
                        }
                        
                        }
                        
                        

                        donc uniquement ça ??

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

                          Pas besoin de créer un booléen si c’est pour le retourner juste après :
                          return plantable.getPlantable(world, x, y + 1, z)== EnumPlanType.Biome;

                          Après tout dépend de la condition que tu veux mais juste ça suffit

                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                          Pas de demandes de support par MP ni par skype SVP.
                          Je n'accepte sur skype que l…

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

                            voila ce que j’ai

                            class BiomeBlock ```java
                            package fr.craftesys.craftesys.blocs;

                            import fr.craftesys.craftesys.common.Mods;
                            import net.minecraft.block.Block;
                            import net.minecraft.block.BlockBush;
                            import net.minecraft.block.BlockSapling;
                            import net.minecraft.block.material.Material;
                            import net.minecraft.init.Blocks;
                            import net.minecraft.world.IBlockAccess;
                            import net.minecraftforge.common.EnumPlantType;
                            import fr.craftesys.craftesys.generation.EnumPlanType;
                            import fr.craftesys.craftesys.generation.Plantable;
                            import net.minecraftforge.common.IPlantable;
                            import net.minecraftforge.common.util.ForgeDirection;

                            public class BiomeBlock extends Block  
                            {

                            public BiomeBlock(Material material) {

                            super(material);

                            }

                            public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction,
                            Plantable plantable) {

                            return plantable.getPlantable(world, x, y + 1, z)== EnumPlanType.Biome;

                            }
                            }

                            
                            class Plantable : ```java
                            package fr.craftesys.craftesys.generation;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.world.IBlockAccess;
                            import net.minecraftforge.common.EnumPlantType;
                            
                            public interface Plantable
                            {
                            
                               public EnumPlanType getPlantable(IBlockAccess world, int x, int y, int z);
                               public Block getPlant(IBlockAccess world, int x, int y, int z);
                               public int getPlantMeta(IBlockAccess world, int x, int y, int z);
                            }
                            
                            

                            class EnumPlanType ```java
                            package fr.craftesys.craftesys.generation;

                            public enum EnumPlanType {

                            Biome,
                            }

                            
                            mais ça veut toujours pas
                            1 réponse Dernière réponse Répondre Citer 0
                            • S Hors-ligne
                              sventus
                              dernière édition par

                              Après plusieurs tests, rien ne change …

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

                                Normal, je suppose que tu ne sais pas ce que tu fais ? Pourquoi créer une classe Plantable et un EnumPlantType, le principe d’une fonction et d’être générale, ici tu ne ré-écris pas la fonction de Minecraft puisque ce ne sont pas les bons paramètres : supprime ces 2 classes inutiles, ensuite supprime ta fonction et fait Alt + shift + S puis Override/Implement methods et trouve la fonction canSustainPlant, une fois ça fait tu devrais voir l’annotation @Override apparaître au-dessus de ta fonction, il ne faut jamais la retirer (si eclipse te demande de la retirée c’est que tu as modifié le nom ou les paramètres de ta fonction). Une fois que tout ça est fait tu peux mettre ton code dedans

                                Site web contenant mes scripts : http://SCAREXgaming.github.io

                                Pas de demandes de support par MP ni par skype SVP.
                                Je n'accepte sur skype que l…

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

                                  je comprend ce que tu veux dire, mais le problème c’est que, si je mets cela :

                                  @Override
                                  public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction,
                                  IPlantable plantable) {

                                  if (plantable == Blocks.sapling && this == Blocks.sapling)
                                  {
                                  return plantable.getPlant(world, x, y + 1, z)== EnumPlantType.Biome;

                                  }

                                  return super.canSustainPlant(world, x, y, z, direction, plantable);
                                  }

                                  en suivant ce que tu me dis, le “Biome” n’est pas reconnu car il n’existe pas dans le EnumPlantType de base.

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

                                    Je crois que l’on peut utiliser une fonction du EnumHelper de Forge qui ajoute des entrées à lenum souhait (via réflexion), il faut refzrder de ce côté.

                                    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                      C’est normal il existe pas, pourquoi tu veux mettre cette valeur là ?

                                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                                      Pas de demandes de support par MP ni par skype SVP.
                                      Je n'accepte sur skype que l…

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

                                        bah c’est pour ajouter mon bloc, que la pousse d’arbre puisse se poser sur mon bloc

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

                                          mais juste, le EnumHelper, ce n’est pas pour les armures et outils ?

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

                                            Tu peux faire avec toutes les enums du jeu (en 1.8.9 en tout cas).

                                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB