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

      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