• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Nouvelle échelle

    1.7.x
    1.7.10
    7
    19
    2350
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      KrushHD last edited by

      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 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        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 Reply Last reply Reply Quote 0
        • K
          KrushHD last edited by

          @‘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 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

            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 Reply Last reply Reply Quote 0
            • K
              KrushHD last edited by

              @‘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 Reply Last reply Reply Quote 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                @‘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 Reply Last reply Reply Quote 0
                • Folgansky
                  Folgansky Correcteurs last edited by

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

                  edit: Robin est un rapide

                  1 Reply Last reply Reply Quote 0
                  • Z
                    Zokyt last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • Dylem
                      Dylem last edited by

                      @‘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 Reply Last reply Reply Quote 0
                      • Flow
                        Flow last edited by

                        @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 Reply Last reply Reply Quote 0
                        • Z
                          Zokyt last edited by

                          @‘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 Reply Last reply Reply Quote 0
                          • Deleted
                            Deleted last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • Z
                              Zokyt last edited by

                              @‘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 Reply Last reply Reply Quote 0
                              • Dylem
                                Dylem last edited by

                                @‘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 Reply Last reply Reply Quote 0
                                • Z
                                  Zokyt last edited by

                                  @‘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 Reply Last reply Reply Quote 0
                                  • Dylem
                                    Dylem last edited by

                                    @‘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 Reply Last reply Reply Quote 1
                                    • Z
                                      Zokyt last edited by

                                      @‘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 Reply Last reply Reply Quote 0
                                      • Dylem
                                        Dylem last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • Z
                                          Zokyt last edited by

                                          @‘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 Reply Last reply Reply Quote 0
                                          • 1 / 1
                                          • First post
                                            Last post
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB