MFF

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

    Event Forge appelé plusieurs fois ...

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.12.2
    7 Messages 2 Publieurs 231 Vues 2 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.
    • D Hors-ligne
      dadam
      dernière édition par

      Bonjour,
      Voilà j’ai découvert le modding sur Minecraft à l’aide de vos tutoriels Forge et je vous en remercie déjà car ils étaient globalement très clair 🙂
      Cependant, j’ai quelque chose que je n’ai pas bien compris, c’est que lorsque je code un Event comme PlayerInteractEvent.RightClickBlock, ce dernier est appelé 8 fois en une seconde à partir du moment ou je cliques sur un block ?
      Et cela est plutot gênant de mon coté, je voulais donc savoir déjà pourquoi le jeu fait cela et comment faire pour remédier à ce problème ?

      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

        Bonjour,

        Il est appelé pour chaque main et en client / serveur. Mais normalement ça ne fait que 4, pas 8 🤔

        Ajoutes un if (!event.getPlayer().world.isRemote) et une autre condition pour la activeHand (je ne connais plus par coeur le nom du getter) et ça va déjà limiter.

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

          @robin4002 a dit dans Event Forge appelé plusieurs fois ... :

          !event.getPlayer().world.isRemote

              public void BlockRightClickEvent(PlayerInteractEvent.RightClickBlock event) {
                  // client side
                  EntityPlayer entityPlayer = event.getEntityPlayer();
                  System.out.println("OK");
                  //if (!event.getEntityPlayer().world.isRemote) {
                  if (entityPlayer.getHeldItemMainhand().getItem() == Items.IRON_AXE) {
                      if (Teleportation) {
                          position = event.getPos();
                          Teleportation = false;
                          System.out.println("1");
                      } else if (!Teleportation) {
                          entityPlayer.setPosition(position.getX(), position.getY(), position.getZ());
                          Teleportation = true;
                          System.out.println("2");
                      }
                  }
                  //}
              }
          }
          

          D’accord Merci pour ta réponse c’est ce que j’ai fait et effectivement ca divise par deux le nombre de passage. Par contre l’item ne marche plus …
          En fait j’essaye de faire une hache qui permet d’enregistrer une position en faisant un premier cliques gauche sur un bloc et qui au second clique gauche te teleporte au block prealablement enregistré.
          Voici la boucle que j’essayes de faire en fait mais voici ce que le terminal effectue quand je fais clique gauche :

          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:54]: 1
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:54]: 1
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:58]: 2
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Client thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:58]: 2
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:54]: 1
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:54]: 1
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:58]: 2
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:48]: OK
          [14:49:17] [Server thread/INFO] [STDOUT]: [fr.dalhfire.copscore.EventCops:BlockRightClickEvent:58]: 2

          robin4002R 1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs @dadam
            dernière édition par

            Les variables Teleportation et position viennent d’où ?

            D 1 réponse Dernière réponse Répondre Citer 0
            • D Hors-ligne
              dadam @robin4002
              dernière édition par

              @robin4002 Elles ont été défini préalablement dans la classe désolé j’ai oublié le de le mettre ^^

              public class EventCops {
              
                  public boolean Teleportation = true;
                  public BlockPos position;
              
                  @SubscribeEvent
                  public void onAttackEntityEvent(AttackEntityEvent event) {
                      if (event.getTarget().canBeAttackedWithItem() && !event.getTarget().hitByEntity(event.getEntity()) && event.getTarget() instanceof EntityLivingBase && event.getTarget().hurtResistantTime <= 0) {
                          EntityLivingBase attacker = event.getEntityLiving();
                          EntityLivingBase target = (EntityLivingBase) event.getTarget();
              
                          if (attacker.getHeldItemMainhand() == ItemStack.EMPTY)
                              return;
                          if (attacker.getHeldItemMainhand().getItem() == ItemsCops.SkyKeySword) {
                              System.out.println("OK");
                              attacker.addPotionEffect(new PotionEffect(Potion.getPotionById(10), 25, 10));
                          }
                      }
                  }
              
                  @SubscribeEvent
                  public void BlockRightClickEvent(PlayerInteractEvent.RightClickBlock event) {
                      // client side
                      EntityPlayer entityPlayer = event.getEntityPlayer();
                      System.out.println("OK");
                      //if (!event.getEntityPlayer().world.isRemote) {
                      if (entityPlayer.getHeldItemMainhand().getItem() == Items.IRON_AXE) {
                          if (Teleportation) {
                              position = event.getPos();
                              Teleportation = false;
                              System.out.println("1");
                          } else if (!Teleportation) {
                              entityPlayer.setPosition(position.getX(), position.getY(), position.getZ());
                              Teleportation = true;
                              System.out.println("2");
                          }
                      }
                      //}
                  }
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • D Hors-ligne
                dadam
                dernière édition par dadam

                Bon au final j’ai rajouté une condition supplementaire( entityplayer.isSneaking() pour la boucle else if et j’ai enlevé la variale Teleportation, et l’item marche bcp mieux 😄
                J’ai toujours des appels supplémentaires mais tant pis ca me va déjà mieux !
                Merci à toi @robin4002

                D 1 réponse Dernière réponse Répondre Citer 0
                • D Hors-ligne
                  dadam @dadam
                  dernière édition par

                  Ce message a été supprimé !
                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R robin4002 a déplacé ce sujet de Support pour les moddeurs sur
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB