• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Création d'une "plateforme" pour voler

    1.7.x
    1.7.10
    3
    4
    678
    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.
    • LavaPower
      LavaPower dernière édition par

      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 !

      Github : http://github.com/LavaPower

      1 réponse Dernière réponse Répondre Citer 0
      • Superloup10
        Superloup10 Modérateurs dernière édition par

        À 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.

        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

        1 réponse Dernière réponse Répondre Citer 1
        • Deleted
          Deleted dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • LavaPower
            LavaPower dernière édition par

            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 !

            Github : http://github.com/LavaPower

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

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB