Navigation

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

    SOLVED Création d'une "plateforme" pour voler

    1.7.x
    1.7.10
    3
    4
    476
    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.
    • LavaPower
      LavaPower last edited by

      Salut à tous,

      J’ai déjà fait un demande d’aide dans ce style mais elle est partie aux oubliettes. Cependant, le problème est toujours là.
      Mon but est de créer une sorte de platforme sous les pieds du joueurs pour que celui-ci puisse voler.
      J’ai utilisé et l’event TickEvent.PlayerTickEvent et voici mon code :

          @SubscribeEvent
          public void onPlayerTick(TickEvent.PlayerTickEvent event)
          {
              if(event.phase == Phase.END)
              {
                  if(event.player.getHeldItem() != null && event.player.getHeldItem().getItem() == AkameGaMod.murasame)
                  {
                      event.player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2));
                  }
                  else if(event.player.getHeldItem() != null && event.player.getHeldItem().getItem() == AkameGaMod.dextract)
                  {
                      int posX = (int)event.player.posX;
                      int posY = (int)event.player.posY;
                      System.out.println(posY);
                      int posZ = (int)event.player.posZ;
                      World world = event.player.worldObj;
                      if(!(event.player.isSneaking()))
                      {
                          if(world.isAirBlock(posX - 1, posY - 2, posZ - 1))
                              world.setBlock(posX - 1, posY - 2, posZ - 1, Blocks.ice);
                          if(world.isAirBlock(posX - 1, posY - 2, posZ))
                              world.setBlock(posX - 1, posY - 2, posZ, Blocks.ice);
                          if(world.isAirBlock(posX - 1, posY - 2, posZ + 1))
                              world.setBlock(posX - 1, posY - 2, posZ + 1, Blocks.ice);
                          if(world.isAirBlock(posX, posY - 2, posZ - 1))
                              world.setBlock(posX, posY - 2, posZ - 1, Blocks.ice);
                          if(world.isAirBlock(posX, posY - 2, posZ))
                              world.setBlock(posX, posY - 2, posZ, Blocks.ice);
                          if(world.isAirBlock(posX, posY - 2, posZ + 1))
                              world.setBlock(posX, posY - 2, posZ + 1, Blocks.ice);
                          if(world.isAirBlock(posX + 1, posY - 2, posZ - 1))
                              world.setBlock(posX + 1, posY - 2, posZ - 1, Blocks.ice);
                          if(world.isAirBlock(posX + 1, posY - 2, posZ))
                              world.setBlock(posX + 1, posY - 2, posZ, Blocks.ice);
                          if(world.isAirBlock(posX + 1, posY - 2, posZ + 1))
                              world.setBlock(posX + 1, posY - 2, posZ + 1, Blocks.ice);
                      }
                      else
                      {
                          if(world.getBlock(posX - 1, posY - 2, posZ - 1) == Blocks.ice)
                              world.setBlock(posX - 1, posY - 2, posZ - 1, Blocks.air);
                          if(world.getBlock(posX - 1, posY - 2, posZ) == Blocks.ice)
                              world.setBlock(posX - 1, posY - 2, posZ, Blocks.air);
                          if(world.getBlock(posX - 1, posY - 2, posZ + 1) == Blocks.ice)
                              world.setBlock(posX - 1, posY - 2, posZ + 1, Blocks.air);
                          if(world.getBlock(posX, posY - 2, posZ - 1) == Blocks.ice)
                              world.setBlock(posX, posY - 2, posZ - 1, Blocks.air);
                          if(world.getBlock(posX, posY - 2, posZ) == Blocks.ice)
                              world.setBlock(posX, posY - 2, posZ, Blocks.air);
                          if(world.getBlock(posX, posY - 2, posZ + 1) == Blocks.ice)
                              world.setBlock(posX, posY - 2, posZ + 1, Blocks.air);
                          if(world.getBlock(posX + 1, posY - 2, posZ - 1) == Blocks.ice)
                              world.setBlock(posX + 1, posY - 2, posZ - 1, Blocks.air);
                          if(world.getBlock(posX + 1, posY - 2, posZ) == Blocks.ice)
                              world.setBlock(posX + 1, posY - 2, posZ, Blocks.air);
                          if(world.getBlock(posX + 1, posY - 2, posZ + 1) == Blocks.ice)
                              world.setBlock(posX + 1, posY - 2, posZ + 1, Blocks.air);
                      }
      
                  }
              }
          }
      

      Ce code devrait fournir une platforme de 3x3x1 sous les pieds du joueur mais j’ai remarqué que la position Y récupéré n’est pas constante même quand on ne bouge pas dans le jeu. Cela crée des platformes avec plusieurs couches en Y voir parfois, un patforme sous la première (mais pas coller).
      Le System.out me retourne :

      16
      11
      16
      11
      16
      11
      16
      11
      16
      11
      

      Sachant que j’étais à 16. Mais aussi des :

      13
      12
      13
      11
      13
      11
      13
      11
      13
      

      Sachant que j’étais à 13

      Merci d’avance pour votre aide !

      1 Reply Last reply Reply Quote 0
      • Superloup10
        Superloup10 Modérateurs last edited by

        À mon avis, tu as 2 valeurs différentes car le client et le serveur ne possède pas la même information, en revanche, ça n’explique pas pourquoi l’une des valeurs semble bloqué à 11.

        1 Reply Last reply Reply Quote 1
        • Deleted
          Deleted last edited by

          Salut, il s’agit plus d’une passerelle se générant sous les pieds du joueur, plutôt que d’un vrai tapis volant. Le titre porte à confusion, personnellement, je m’attendais + à voir une entité plutôt qu’une structure de blocs.

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

            Salut, d’abord merci à vous d’avoir répondu.
            Superloup : les valeurs ne sont pas bloqué à 11, c’est juste les extraits qui donne ces valeurs, j’ai aussi eu des trucs du genre :

            
            9
            5
            9
            5
            9
            5
            

            Alors que j’étais à 9

            Plaigon : Je vais changer le titre

            EDIT :
            J’ai réfléchi à ce que Superloup à dit. Résultat j’ai fait ça :

            @SubscribeEvent
                public void onPlayerTick(TickEvent.PlayerTickEvent event)
                {
                    if(event.phase == Phase.END)
                    {
                        if(event.player.getHeldItem() != null && event.player.getHeldItem().getItem() == AkameGaMod.murasame)
                        {
                            event.player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2));
                        }
                        else if(event.player.getHeldItem() != null && event.player.getHeldItem().getItem() == AkameGaMod.dextract)
                        {
                            if(!(event.player.worldObj.isRemote))
                            {
                                int posX = (int)event.player.posX;
                                int posY = (int)event.player.posY;
                                int posZ = (int)event.player.posZ;
                                World world = event.player.worldObj;
                                if(!(event.player.isSneaking()))
                                {
                                    if(world.isAirBlock(posX - 1, posY - 1, posZ - 1))
                                        world.setBlock(posX - 1, posY - 1, posZ - 1, Blocks.ice);
                                    if(world.isAirBlock(posX - 1, posY - 1, posZ))
                                        world.setBlock(posX - 1, posY - 1, posZ, Blocks.ice);
                                    if(world.isAirBlock(posX - 1, posY - 1, posZ + 1))
                                        world.setBlock(posX - 1, posY - 1, posZ + 1, Blocks.ice);
                                    if(world.isAirBlock(posX, posY - 1, posZ - 1))
                                        world.setBlock(posX, posY - 1, posZ - 1, Blocks.ice);
                                    if(world.isAirBlock(posX, posY - 1, posZ))
                                        world.setBlock(posX, posY - 1, posZ, Blocks.ice);
                                    if(world.isAirBlock(posX, posY - 1, posZ + 1))
                                        world.setBlock(posX, posY - 1, posZ + 1, Blocks.ice);
                                    if(world.isAirBlock(posX + 1, posY - 1, posZ - 1))
                                        world.setBlock(posX + 1, posY - 1, posZ - 1, Blocks.ice);
                                    if(world.isAirBlock(posX + 1, posY - 1, posZ))
                                        world.setBlock(posX + 1, posY - 1, posZ, Blocks.ice);
                                    if(world.isAirBlock(posX + 1, posY - 1, posZ + 1))
                                        world.setBlock(posX + 1, posY - 1, posZ + 1, Blocks.ice);
                                }
                                else
                                {
                                    if(world.getBlock(posX - 1, posY - 1, posZ - 1) == Blocks.ice)
                                        world.setBlock(posX - 1, posY - 1, posZ - 1, Blocks.air);
                                    if(world.getBlock(posX - 1, posY - 1, posZ) == Blocks.ice)
                                        world.setBlock(posX - 1, posY - 1, posZ, Blocks.air);
                                    if(world.getBlock(posX - 1, posY - 1, posZ + 1) == Blocks.ice)
                                        world.setBlock(posX - 1, posY - 1, posZ + 1, Blocks.air);
                                    if(world.getBlock(posX, posY - 1, posZ - 1) == Blocks.ice)
                                        world.setBlock(posX, posY - 1, posZ - 1, Blocks.air);
                                    if(world.getBlock(posX, posY - 1, posZ) == Blocks.ice)
                                        world.setBlock(posX, posY - 1, posZ, Blocks.air);
                                    if(world.getBlock(posX, posY - 1, posZ + 1) == Blocks.ice)
                                        world.setBlock(posX, posY - 1, posZ + 1, Blocks.air);
                                    if(world.getBlock(posX + 1, posY - 1, posZ - 1) == Blocks.ice)
                                        world.setBlock(posX + 1, posY - 1, posZ - 1, Blocks.air);
                                    if(world.getBlock(posX + 1, posY - 1, posZ) == Blocks.ice)
                                        world.setBlock(posX + 1, posY - 1, posZ, Blocks.air);
                                    if(world.getBlock(posX + 1, posY - 1, posZ + 1) == Blocks.ice)
                                        world.setBlock(posX + 1, posY - 1, posZ + 1, Blocks.air);
                                }
                            }
            
                        }
                    }
                }
            
            

            Et ça fonctionne !

            1 Reply Last reply Reply Quote 1
            • 1 / 1
            • First post
              Last post
            Design by Woryk
            Contact / Mentions Légales / Faire un don

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB