MFF

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

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

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    12 Messages 5 Publieurs 1.8k Vues 1 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.
    • InfiniteI Hors-ligne
      Infinite
      dernière édition par

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

        Pour savoir le mode de jeux d’un joueur

        event.getPlayer().capabilities.isCreativeMode
        
        1 réponse Dernière réponse Répondre Citer 0
        • InfiniteI Hors-ligne
          Infinite
          dernière édition par

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

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

            1 réponse Dernière réponse Répondre Citer 0
            • BrokenSwingB Hors-ligne
              BrokenSwing Moddeurs confirmés Rédacteurs
              dernière édition par

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

                @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 réponse Dernière réponse Répondre Citer 0
                • DylemD Hors-ligne
                  Dylem
                  dernière édition par

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

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

                      @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 réponse Dernière réponse Répondre Citer 0
                      • BrokenSwingB Hors-ligne
                        BrokenSwing Moddeurs confirmés Rédacteurs
                        dernière édition par

                        @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 réponse Dernière réponse Répondre Citer 0
                        • DeletedD Hors-ligne
                          Deleted
                          dernière édition par

                          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 réponse Dernière réponse Répondre Citer 0
                          • BrokenSwingB Hors-ligne
                            BrokenSwing Moddeurs confirmés Rédacteurs
                            dernière édition par

                            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 réponse Dernière réponse Répondre Citer 0
                            • 1 / 1
                            • Premier message
                              Dernier message
                            Design by Woryk
                            ContactMentions Légales

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB