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

    Solved Bug event EntityJoinWorldEvent

    1.7.x
    1.7.10
    3
    6
    1805
    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.
    • Deleted
      Deleted last edited by

      Salut tout le monde
      Je suis en train de recoder le mod More Creeps And Weirdos en 1.7.10 sous forge à but privé (donc non commercial, donc non hors-la-loi) et je commence par créer ma class d’event handler comportant juste cet event

      
      package fr.mrplaigon.morecreeps.common.handler;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.util.ChatComponentTranslation;
      import net.minecraftforge.event.entity.EntityJoinWorldEvent;
      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
      
      public class EventCommonHandler 
      {
      
          static final String welcome[] =
          {
              "Now, go out there and have some fun!", "Don't let those stinky Floobs push you around!", "Give a diamond to a level 25 HotDog for a special reward!", "Urinating Bums can help with landscaping. Try one today!", "You're doing something right!", "Watch out for grumpy G's!", "Guinea Pigs make nice pets.", "Bring a lost Kid back to a Lolliman for a nice reward.", "Robot Ted thinks Robot Todd is a dirty chicken wing.", "Sneaky Sal changes his prices. Check back for bargains.",
              "Power your HotDog with redstone for a fire attack!", "You want money? Punch a Lawyer From Hell!", "Equip your HotDogs with Redstone for fire attacks!", "Guinea Pigs eat Wheat and Apples.", "A Floob Ship will spit out Floobs until it is destroyed.", "Drop a BubbleScum 100 blocks for the MERCILESS achievement!", "Throw a BubbleScum down a DigBug hole for a cookie fountain!", "Feed lots of cake to a Hunchback and he will stay loyal.", "The longer you ride a RocketPony, the more tame it will be.", "Visit Sneaky Sal for those hard to find items.",
              "Hitting a Caveman will turn him/her evil!", "SNEAK KEY + RIGHT CLICK on creeps for info or to name them.", "Give a level 20 Guinea Pig a diamond to build a Hotel!", "If you hear disco music - RUN!"
          };
      
      @SubscribeEvent
      public void onEntitySpawned(EntityJoinWorldEvent event)
      {
      if(event.entity instanceof EntityPlayer)
      {
      EntityPlayer player = ((EntityPlayer)event.entity);
      player.worldObj.playSoundAtEntity(player, "morecreepsandweirdos:welcome", 1.55F, 1.0F);
      if(!player.worldObj.isRemote)
      {
      String s = welcome[player.worldObj.rand.nextInt(welcome.length)];
                  player.addChatComponentMessage(new ChatComponentTranslation("\2476More Creeps and Weirdos \247ev2.55 \2476loaded.", new Object[0]));
                  player.addChatComponentMessage(new ChatComponentTranslation(s, new Object[0]));
                  System.out.println("combien de fois est appele l event ?" + player.worldObj.isRemote);
      }
      }
      }
      }
      

      Mais le soucis étant que j’ai beau mettre la condition avec ! ou sans ! le problème persistera. J’ai l’impression que la méthode est appelée 2 fois, en gros mon son est bien joué qu’une seule fois mais mon message apparait 2 fois et avant cette condition c’était pire ! C’était 4 fois mais c’est normal 2 fois pour le client et 2 fois pour le common.
      En gros je voudrai bien de l’aide soit pour trouver un code qui fonctionne (ou me mettre sur la piste) soit pour me donner un autre event (j’ai déjà utilisé EntityConstruction comme event mais c’est peine perdue car dès que j’arrive sur la map le jeu crash).
      Je vous remercie d’avance 😉

      1 Reply Last reply Reply Quote 0
      • BrokenSwing
        BrokenSwing Moddeurs confirmés Rédacteurs last edited by

        Personellement, lorsque j’exécute ton code, les messages ne s’affichent qu’une fois chacun.

        EDIT : Je ne pense pas que cela résolve ton problème (même pas du tout) mais je me demandais pourquoi tu mettais :
        new ChatComponentTranslation(s, new Object[0])
        Si tu n’utilise pas le second argument, préfère new ChatComponentText(s) mais pour ton problème essaie de voir si rien ne cause un double spawn de ton joueur, car comme dit plus haut, j’ai testé ton code et il marche très bien.

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

          @‘bodri’:

          Personellement, lorsque j’exécute ton code, les messages ne s’affichent qu’une fois chacun.

          EDIT : Je ne pense pas que cela résolve ton problème (même pas du tout) mais je me demandais pourquoi tu mettais :
          new ChatComponentTranslation(s, new Object[0])
          Si tu n’utilise pas le second argument, préfère new ChatComponentText(s) mais pour ton problème essaie de voir si rien ne cause un double spawn de ton joueur, car comme dit plus haut, j’ai testé ton code et il marche très bien.

          Voici un screen explicatif:
          http://hpics.li/f761f04

          Mon problème est que je ne voudrai qu’uns seule fois le message More Creeps a bien été chargé….en oragne et une seule fois aussi le message random d’en dessous or là comme vous pouvez le voir j’arrive sur ma map (même avec l’argument que tu m’as conseillé de retirer) et j’ai 2 fois le message en orange et celui random.
          Merci d’avance

          1 Reply Last reply Reply Quote 0
          • BrokenSwing
            BrokenSwing Moddeurs confirmés Rédacteurs last edited by

            @‘Julot10085’:

            @‘bodri’:

            Personellement, lorsque j’exécute ton code, les messages ne s’affichent qu’une fois chacun.

            EDIT : Je ne pense pas que cela résolve ton problème (même pas du tout) mais je me demandais pourquoi tu mettais :
            new ChatComponentTranslation(s, new Object[0])
            Si tu n’utilise pas le second argument, préfère new ChatComponentText(s) mais pour ton problème essaie de voir si rien ne cause un double spawn de ton joueur, car comme dit plus haut, j’ai testé ton code et il marche très bien.

            Voici un screen explicatif:
            http://hpics.li/f761f04

            Mon problème est que je ne voudrai qu’uns seule fois le message More Creeps a bien été chargé….en oragne et une seule fois aussi le message random d’en dessous or là comme vous pouvez le voir j’arrive sur ma map (même avec l’argument que tu m’as conseillé de retirer) et j’ai 2 fois le message en orange et celui random.
            Merci d’avance

            J’ai compris ton problème mais je ne vois pas d’où cela peut venir, mais ce qui est sûr (j’ai pas trop envie de m’avancer mais bon) c’est que le problème ne viens pas de la fonction, comme je l’ai déjà dit, quand je la test je n’ai qu’une seule fois chaque message.

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

              mets çà pour ta condition :

              if (event.entity instanceof EntityPlayerMp)
              

              ou utilise l’event PlayerLoggedInEvent (PlayerEvent.PlayerLoggedInEvent).

              Si je peux me permettre, il vaut mieux éviter d’utiliser le random de la classe World car c’est le random utilisé dans la génération donc quand tu l’utilises, tu modifies la génération du monde.

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                @‘SCAREX’:

                mets çà pour ta condition :

                if (event.entity instanceof EntityPlayerMp)
                

                ou utilise l’event PlayerLoggedInEvent (PlayerEvent.PlayerLoggedInEvent).

                Si je peux me permettre, il vaut mieux éviter d’utiliser le random de la classe World car c’est le random utilisé dans la génération donc quand tu l’utilises, tu modifies la génération du monde.

                Merci SCAREX ça marche !
                Voici mon code actuel pour les intéressés:

                
                @SubscribeEvent
                
                public void onEntitySpawned(PlayerEvent.PlayerLoggedInEvent event)
                {
                Random rand = new Random();
                EntityPlayer player = event.player;
                player.worldObj.playSoundAtEntity(player, "morecreepsandweirdos:welcome", 1.55F, 1.0F);
                if(!player.worldObj.isRemote)
                {
                String s = welcome[rand.nextInt(welcome.length)];
                            player.addChatComponentMessage(new ChatComponentTranslation("\2476More Creeps and Weirdos \247ev2.55 \2476loaded."));
                            player.addChatComponentMessage(new ChatComponentTranslation(s));
                            System.out.println("combien de fois est appele l event ?" + player.worldObj.isRemote);
                
                }
                }
                
                
                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