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

    Name Modifier tickée + détecter le GM du joueur

    Sans suite
    1.7.10
    5
    12
    1427
    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.
    • Infinite
      Infinite last edited by

      Bichour !
      j’ai un petit problème, enfin 2 petits problèmes :

      1er problème :
      J’ai créé un event forge qui modifie le pseudo du joueur en ajoutant un [Creative] si le joueur est en créatif.Le problème est que la méthode n’étant pas tickée, si je me met en survie, le [Creative] reste.

      Voici mon code :

      
      @SubscribeEvent(priority=EventPriority.NORMAL)
          public void onEvent(NameFormat event)
          {
              System.out.println("PNM OK!");
              if(event.displayname.equals("Infinite_X"))
              {
                  event.displayname = ChatFormatting.DARK_RED + "[DEV]" + event.username;
              }
      
              if(event.entityPlayer.capabilities.isCreativeMode)
              {
                  event.displayname = "[Creative]" + event.displayname;
              }
          }
      
      

      2ème problème :
      Ceci peut paraître bête mais je ne sais pas comment détecter si le joueur est en GameMode survival ou adventure …

      Mes Sites(Mes Sites)
      |
      |    Site général : Game & play
      |   Site de projets (en dev !) :Infinite's Ressources
      J'ai et je suis content d'avoir 16,75 points d'ICRating

      1 Reply Last reply Reply Quote 0
      • L
        laterreur216 last edited by

        Pour savoir le mode de jeux d’un joueur

        event.getPlayer().capabilities.isCreativeMode
        
        1 Reply Last reply Reply Quote 0
        • Infinite
          Infinite last edited by

          Je sais mais c’est pour le mode Créatif  😄 ,c’est ce que j’ai mis dans mon code pour le mode créatif.

          Mes Sites(Mes Sites)
          |
          |    Site général : Game & play
          |   Site de projets (en dev !) :Infinite's Ressources
          J'ai et je suis content d'avoir 16,75 points d'ICRating

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

            Salut,
            Il te faut une instance de EntityPlayerMP, ainsi tu pourras faire playerMP.interactionManager.gameType

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

              Pour que l’event NameFormat soit déclenché il faut que tu utilises cette fonction : https://github.com/MFFbrokenSwing/FactionModV2/blob/master/src/main/java/factionmod/handler/EventHandlerFaction.java#L209

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

                @Plaigon
                J’ai pas l’interactionManager pour EntityPlayerMP …
                @BrokenSwing
                j’ai fait ça :

                
                public class PlayerNameModifier
                {
                    @SubscribeEvent(priority=EventPriority.NORMAL)
                    public void onEvent(NameFormat event)
                    {
                        EntityPlayerMP playerMP = (EntityPlayerMP) event.entityPlayer;
                        System.out.println("PNM OK!");
                        if(event.displayname.equals("Infinite_X"))
                        {
                            event.displayname = ChatFormatting.DARK_RED + "[DEV]" + event.username;
                        }
                
                        if(event.entityPlayer.capabilities.isCreativeMode)
                        {
                            event.displayname = "[Creative]" + event.displayname;
                        }
                    }
                
                    @SubscribeEvent
                    public void onPlayerTick(TickEvent.PlayerTickEvent event) 
                    {
                        event.player.refreshDisplayName();
                    }
                }
                
                

                malheureusement quand je me met en mode survival, j’ai le [Creative] qui reste …  😕

                Mes Sites(Mes Sites)
                |
                |    Site général : Game & play
                |   Site de projets (en dev !) :Infinite's Ressources
                J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                  En même temps, tu ne lui dis nulle part de l’enlever…

                  
                  if(event.entityPlayer.capabilities.isCreativeMode)
                  event.displayname = "[Creative]" + event.displayname;
                  else
                  event.displayname = event.displayname.replace("[Creative]", "");
                  
                  

                  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
                  • Deleted
                    Deleted last edited by

                    Essaie de débug pour voir où ça coince. Est-ce que PlayerTickEvent est bien enregistré sur le bon bus.
                    Pour ton autre problème d’interactionManager, je vais voir en rentrant d’ici une petite heure.

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

                      @Dylem
                      Fonctionne toujours pas …

                      @Plaigon
                      Voici ma classe :

                      
                      import com.mojang.realmsclient.gui.ChatFormatting;
                      
                      import cpw.mods.fml.common.eventhandler.EventPriority;
                      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                      import cpw.mods.fml.common.gameevent.TickEvent;
                      import net.minecraft.entity.player.EntityPlayerMP;
                      import net.minecraftforge.event.entity.player.PlayerEvent.NameFormat;
                      
                      public class PlayerNameModifier
                      {
                          @SubscribeEvent(priority=EventPriority.NORMAL)
                          public void onEvent(NameFormat event)
                          {
                              EntityPlayerMP playerMP = (EntityPlayerMP) event.entityPlayer;
                              System.out.println("PNM OK!");
                              if(event.displayname.equals("Infinite_X"))
                              {
                                  event.displayname = ChatFormatting.DARK_RED + "[DEV]" + event.username;
                              }
                      
                              if(event.entityPlayer.capabilities.isCreativeMode)
                              {
                                  event.displayname = "[Creative]" + event.displayname;
                              }
                              else
                              {
                                  event.displayname = event.displayname.replace("[Creative]", "");
                              }
                      
                              if(!event.entityPlayer.capabilities.isCreativeMode)
                              {
                                  event.displayname = event.username;
                              }
                          }
                      
                          @SubscribeEvent
                          public void onPlayerTick(TickEvent.PlayerTickEvent event) 
                          {
                              event.player.refreshDisplayName();
                          }
                      }
                      
                      

                      voici la méthode init de ma classe principale :

                      
                      @EventHandler
                          public void init(FMLInitializationEvent event)
                          {
                              proxy.registerRenders();
                              NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerIUtils());
                              MinecraftForge.EVENT_BUS.register(new PlayerHeadLootOnDie());
                              MinecraftForge.EVENT_BUS.register(new CustomFluidEvent());
                              MinecraftForge.EVENT_BUS.register(new PlayerNameModifier());
                          }
                      
                      

                      Mes Sites(Mes Sites)
                      |
                      |    Site général : Game & play
                      |   Site de projets (en dev !) :Infinite's Ressources
                      J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                        @Dylem Pas besoin de l’enlever, le displayname que tu reçoit est “neutre”. En gros le “[Creative]” ne reste pas, donc pas besoin de la remplacer.

                        @Infinite Ton premier code devrait fonctionner mais j’ai tu as dû faire une erreur quelque part. Vérifie la valeur de event.entityPlayer.capabilities.isCreativeMode mais je doute que ça vienne de là.

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

                          Plutôt playerMP.theItemInWorldManager.getGameType()
                          Mais tu ne peux instancier un EntityPlayerMP que côté serveur(je crois que NameFormat est uniquement déclenché client side). Du coup, il faudrait plutôt faire ainsi Minecraft.getMinecraft().currentGameType (mais variable private donc se servir d’un Access Transformer).
                          Dernièrement, petite info, tu as le boolean PlayerControllerMP#gameIsSurvivalOrAdventure, si tu ne souhaites aucune dissociation entres ces deux games modes.

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

                            NameFormat est déclenché côté serveur. Et c’est plutôt côté client que je ne suis pas sûr qu’il soit déclenché, j’ai la flemme de vérifier. Tout ça pour dire qu’il peux bien cast en EntityPlayerMP (mais du coup vérifier qu’il est server-side)

                            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