MFF

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

    Nouvelle échelle

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    19 Messages 7 Publieurs 2.9k 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.
    • K Hors-ligne
      KrushHD
      dernière édition par

      Bonjours , j’ai trouver un code pour créer une nouvelle échelle , le code fonctionne parfaitement , juste j’aimerais que l’échelle quand on monte elle va 2x plus vite , je doit modifier / ajouter quoi ?

      
      public class IronLadder extends Block
      {
      
          public IronLadder()
          {
              super(Material.circuits);
              this.setCreativeTab(CreativeTabs.tabDecorations);
          }
      
          /**
           * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been
           * cleared to be reused)
           */
          public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
          {
              this.setBlockBoundsBasedOnState(world, x, y, z);
              return super.getCollisionBoundingBoxFromPool(world, x, y, z);
          }
      
          /**
           * Updates the blocks bounds based on its current state. Args: world, x, y, z
           */
          public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z)
          {
              this.func_149797_b(world.getBlockMetadata(x, y, z));
          }
      
          /**
           * Returns the bounding box of the wired rectangular prism to render.
           */
          @SideOnly(Side.CLIENT)
          public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z)
          {
              this.setBlockBoundsBasedOnState(world, x, y, z);
              return super.getSelectedBoundingBoxFromPool(world, x, y, z);
          }
      
          public void func_149797_b(int p_149797_1_)
          {
              float f = 0.125F;
      
              if (p_149797_1_ == 2)
              {
                  this.setBlockBounds(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F);
              }
      
              if (p_149797_1_ == 3)
              {
                  this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, f);
              }
      
              if (p_149797_1_ == 4)
              {
                  this.setBlockBounds(1.0F - f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
              }
      
              if (p_149797_1_ == 5)
              {
                  this.setBlockBounds(0.0F, 0.0F, 0.0F, f, 1.0F, 1.0F);
              }
          }
      
          /**
           * Is this block (a) opaque and (b) a full 1m cube?  This determines whether or not to render the shared face of two
           * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
           */
          public boolean isOpaqueCube()
          {
              return false;
          }
      
          /**
           * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
           */
          public boolean renderAsNormalBlock()
          {
              return false;
          }
      
          /**
           * The type of render function that is called for this block
           */
          public int getRenderType()
          {
              return 8;
          }
      
          /**
           * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z
           */
          public boolean canPlaceBlockAt(World world, int x, int y, int z)
          {
              return world.isSideSolid(x - 1, y, z, EAST ) ||
                     world.isSideSolid(x + 1, y, z, WEST ) ||
                     world.isSideSolid(x, y, z - 1, SOUTH) ||
                     world.isSideSolid(x, y, z + 1, NORTH);
          }
      
          /**
           * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata
           */
          public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
          {
              int j1 = metadata;
      
              if ((metadata == 0 || side == 2) && world.isSideSolid(x, y, z + 1, NORTH))
              {
                  j1 = 2;
              }
      
              if ((j1 == 0 || side == 3) && world.isSideSolid(x, y, z - 1, SOUTH))
              {
                  j1 = 3;
              }
      
              if ((j1 == 0 || side == 4) && world.isSideSolid(x + 1, y, z, WEST))
              {
                  j1 = 4;
              }
      
              if ((j1 == 0 || side == 5) && world.isSideSolid(x - 1, y, z, EAST))
              {
                  j1 = 5;
              }
      
              return j1;
          }
      
          /**
           * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
           * their own) Args: x, y, z, neighbor Block
           */
          public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
          {
              int l = world.getBlockMetadata(x, y, z);
              boolean flag = false;
      
              if (l == 2 && world.isSideSolid(x, y, z + 1, NORTH))
              {
                  flag = true;
              }
      
              if (l == 3 && world.isSideSolid(x, y, z - 1, SOUTH))
              {
                  flag = true;
              }
      
              if (l == 4 && world.isSideSolid(x + 1, y, z, WEST))
              {
                  flag = true;
              }
      
              if (l == 5 && world.isSideSolid(x - 1, y, z, EAST))
              {
                  flag = true;
              }
      
              if (!flag)
              {
                  this.dropBlockAsItem(world, x, y, z, l, 0);
                  world.setBlockToAir(x, y, z);
              }
      
              super.onNeighborBlockChange(world, x, y, z, block);
          }
      
          /**
           * Returns the quantity of items to drop on block destruction.
           */
          public int quantityDropped(Random random)
          {
              return 1;
          }
      
          @Override
          public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
          {
              return true;
          }
      }
      
      

      Merci !

      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

        Salut,
        Dans la fonction isLadder, avant le return true essaies de multiplié par deux le motionY de entity. Mais je ne suis pas sûr que le résultat sera le résultat voulu.

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

          @‘robin4002’:

          Salut,
          Dans la fonction isLadder, avant le return true essaies de multiplié par deux le motionY de entity. Mais je ne suis pas sûr que le résultat sera le résultat voulu.

          Comment ça multiplié par de le motionY ?

          Sur sa ? j’ajoute quoi ou ? 😕

              @Override
              public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
              {
                  return true;
              }
          }
          
          
          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

            multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
            Comme ça :

            @Override
            public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
            {
            entity.motionY *= 2;
            return true;
            }
            
            1 réponse Dernière réponse Répondre Citer 0
            • K Hors-ligne
              KrushHD
              dernière édition par

              @‘robin4002’:

              multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
              Comme ça :

                 @Override
                 public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                 {
                     entity.motionY *= 2;
                     return true;
                 }
              

              Merci sa fonctionne , mais il à un autre problème , quand je monte la dernière échelle , sa me fait jump vraiment haut pourquoi ?

              edit : sa fait crash aussi mon solo (shutting down internal server…)

              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

                @‘KrushHD’:

                Merci sa fonctionne , mais il à un autre problème , quand je monte la dernière échelle , sa me fait jump vraiment haut pourquoi ?

                edit : sa fait crash aussi mon solo (shutting down internal server…)

                Je m’attendais bien à ce genre de comportement non voulu 😕 Comme le motion y est élevé, ça fait sauté le joueur quand il n’y a pas d’échelle.
                Peut-être en faisant comme ceci :

                if(world.getBlock(x, y + 1, z) == this)
                {
                entity.motionY *= 2;
                }
                

                Pour le crash, il faudrait un copier/coller du rapport de crash.

                1 réponse Dernière réponse Répondre Citer 0
                • FolganskyF Hors-ligne
                  Folgansky Correcteurs
                  dernière édition par

                  Envoie le crash report, ça les aidera mieux à savoir où se situe ton problème

                  edit: Robin est un rapide

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

                    Voila mon probleme serez ces quoi le probleme ?https://www.youtube.com/watch?v=UXolTrISoVI&feature=youtu.be

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

                      @‘robin4002’:

                      multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
                      Comme ça :

                         @Override
                         public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                         {
                             entity.motionY *= 2;
                             return true;
                         }
                      

                      Je suis à peu près sûr qu’en faisant ça, l’entité va monter de façon exponentielle plutôt que 2x plus vite (2x sur le premier block, puis 4x, puis 8x…), ce qui pourrait causer le problème.

                      Il va te falloir regarder quelle est la motionY de base quand on monte ton échelle (avec du debug).
                      Ensuite il te suffira de metter une condition pour tester si la motionY est égale à cette valeur, et dans ce cas la multiplier par 2.

                      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                        @Dylem:

                        @‘robin4002’:

                        multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
                        Comme ça :

                           @Override
                           public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                           {
                               entity.motionY *= 2;
                               return true;
                           }
                        

                        Je suis à peu près sûr qu’en faisant ça, l’entité va monter de façon exponentielle plutôt que 2x plus vite (2x sur le premier block, puis 4x, puis 8x…), ce qui pourrait causer le problème.

                        Il va te falloir regarder quelle est la motionY de base quand on monte ton échelle (avec du debug).
                        Ensuite il te suffira de metter une condition pour tester si la motionY est égale à cette valeur, et dans ce cas la multiplier par 2.

                        J’ai tester, et ça fonctionne 😉 Du coup, Zokyt tu as la réponse ^^

                        Oui ce gif est drôle.

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

                          @‘Fifou_BE’:

                          @‘Dylem’:

                          @‘robin4002’:

                          multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
                          Comme ça :

                             @Override
                             public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                             {
                                 entity.motionY *= 2;
                                 return true;
                             }
                          

                          Je suis à peu près sûr qu’en faisant ça, l’entité va monter de façon exponentielle plutôt que 2x plus vite (2x sur le premier block, puis 4x, puis 8x…), ce qui pourrait causer le problème.

                          Il va te falloir regarder quelle est la motionY de base quand on monte ton échelle (avec du debug).
                          Ensuite il te suffira de metter une condition pour tester si la motionY est égale à cette valeur, et dans ce cas la multiplier par 2.

                          J’ai tester, et ça fonctionne 😉 Du coup, Zokyt tu as la réponse ^^

                          J’ai rien comprit ^^’
                          En gros faut que je mette quoi parse que le truc au dessu je les déja mit

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

                            https://www.minecraftforgefrance.fr/showthread.php?tid=1977&page=2&highlight=%25C3%25A9chelle

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

                              @‘Plaigon’:

                              https://www.minecraftforgefrance.fr/showthread.php?tid=1977&page=2&highlight=%25C3%25A9chelle

                              Heu ces la 1.8 est jcomprend rien ten dit que moi faut juste regler un petit truc…

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

                                @‘Zokyt’:

                                @‘Fifou_BE’:

                                @‘Dylem’:

                                @‘robin4002’:

                                multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
                                Comme ça :

                                   @Override
                                   public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                                   {
                                       entity.motionY *= 2;
                                       return true;
                                   }
                                

                                Je suis à peu près sûr qu’en faisant ça, l’entité va monter de façon exponentielle plutôt que 2x plus vite (2x sur le premier block, puis 4x, puis 8x…), ce qui pourrait causer le problème.

                                Il va te falloir regarder quelle est la motionY de base quand on monte ton échelle (avec du debug).
                                Ensuite il te suffira de metter une condition pour tester si la motionY est égale à cette valeur, et dans ce cas la multiplier par 2.

                                J’ai tester, et ça fonctionne 😉 Du coup, Zokyt tu as la réponse ^^

                                J’ai rien comprit ^^’
                                En gros faut que je mette quoi parse que le truc au dessu je les déja mit

                                C’est pas compliqué, tu fais ça :

                                
                                   @Override
                                   public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                
                                       System.out.println("MOTIONY :" + entity.motionY);
                                       return true;
                                   }
                                
                                

                                Tu regardes la valeur affichée dans la console, puis :

                                
                                   @Override
                                   public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                
                                       if(entity.motionY == valeur) 
                                           entity.motionY *= 2;
                                       return true;
                                   }
                                
                                

                                Je peux pas t’aider plus là…

                                Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                  @‘Dylem’:

                                  @‘Zokyt’:

                                  @‘Fifou_BE’:

                                  @‘Dylem’:

                                  @‘robin4002’:

                                  multiplié par deux le motionY de entity. Pas “multiplié par de le motionY”.
                                  Comme ça :

                                     @Override
                                     public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity)
                                     {
                                         entity.motionY *= 2;
                                         return true;
                                     }
                                  

                                  Je suis à peu près sûr qu’en faisant ça, l’entité va monter de façon exponentielle plutôt que 2x plus vite (2x sur le premier block, puis 4x, puis 8x…), ce qui pourrait causer le problème.

                                  Il va te falloir regarder quelle est la motionY de base quand on monte ton échelle (avec du debug).
                                  Ensuite il te suffira de metter une condition pour tester si la motionY est égale à cette valeur, et dans ce cas la multiplier par 2.

                                  J’ai tester, et ça fonctionne 😉 Du coup, Zokyt tu as la réponse ^^

                                  J’ai rien comprit ^^’
                                  En gros faut que je mette quoi parse que le truc au dessu je les déja mit

                                  C’est pas compliqué, tu fais ça :

                                  
                                     @Override
                                     public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                  
                                         System.out.println("MOTIONY :" + entity.motionY);
                                         return true;
                                     }
                                  
                                  

                                  Tu regardes la valeur affichée dans la console, puis :

                                  
                                     @Override
                                     public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                  
                                         if(entity.motionY == valeur) 
                                             entity.motionY *= 2;
                                         return true;
                                     }
                                  
                                  

                                  Je peux pas t’aider plus là…

                                  bh quand je fait :

                                  @Override
                                      public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                  
                                          if(entity.motionY == valeur) 
                                              entity.motionY *= 2;
                                          return true;
                                      }
                                  

                                  ha valeur il y a une bar rouge (erreur)

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

                                    @‘Zokyt’:

                                    bh quand je fait :

                                    @Override
                                        public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                    
                                            if(entity.motionY == valeur) 
                                                entity.motionY *= 2;
                                            return true;
                                        }
                                    

                                    ha valeur il y a une bar rouge (erreur)

                                    J’abandonne, tu ne lis même pas mes messages, je sais que dans ta vidéo tu as une voix juvénile mais putain fais un effort….

                                    Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

                                    1 réponse Dernière réponse Répondre Citer 1
                                    • Z Hors-ligne
                                      Zokyt
                                      dernière édition par

                                      @‘Dylem’:

                                      @‘Zokyt’:

                                      bh quand je fait :

                                      @Override
                                          public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                      
                                              if(entity.motionY == valeur) 
                                                  entity.motionY *= 2;
                                              return true;
                                          }
                                      

                                      ha valeur il y a une bar rouge (erreur)

                                      J’abandonne, tu ne lis même pas mes messages, je sais que dans ta vidéo tu as une voix juvénile mais putain fais un effort….

                                      Désole ces bon j’ai comprit j’ai fait sa

                                      @Override
                                          public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
                                      
                                              if(entity.motionY == -0.0784000015258789) 
                                                  entity.motionY *= 2;
                                              return true;
                                          }
                                      

                                      Mais je ne vais pas plus vite sur l’échelle ces normal ?

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

                                        Si tu trouves une motionY négative en montant l’échelle, non ce n’est pas normal…

                                        Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                          @‘Dylem’:

                                          Si tu trouves une motionY négative en montant l’échelle, non ce n’est pas normal…

                                          Ces bon j’ai reussi il y avait des négative est des positive ;=)

                                          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