MFF

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

    [1.7.10 ] [SoundManager] Petit problème pour récupérer une information.

    Planifier Épinglé Verrouillé Déplacé Sans suite
    19 Messages 3 Publieurs 2.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.
    • aurelien974A Hors-ligne
      aurelien974
      dernière édition par

      En solo tout fonction bien, juste que sur le server je peux pas utilisé ( import net.minecraft.client.audio.SoundManager; )

      Du coup la fonction

      
      private boolean isSoundPlaying(ResourceLocation res)
      {
      if (AurelienMod.playing != null)
      {
      ISound[] array_playing = AurelienMod.playing.values().toArray(new ISound[AurelienMod.playing.values().size()]);
      for (int i = 0; i < array_playing.length; i++)
      {
      if (array_playing*.getPositionedSoundLocation().equals(res))
      {
      return true;
      }
      }
      }
      return false;
      }
      
      

      Du coup il return false coté server parce que la variable (AurelienMod.playing) est null

      parce que le server utilise pas de SoundManager. c’est que coté client.

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

        ~~Si les TE ne sont pas des 2 côtés alors packet obligatoire ~~
        Les TE sont gérés des 2 côtés donc suis le message de robin au-dessus

        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

          Oui et c’est normal, le son n’est que géré côté client. Il n’a aucun intérêt côté serveur. Tout ce qui concerne le son ne doit que être fait sur le client.

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

            Du coup je vais essayer nettoyer mon code, est aller après tester les Packet ^^ je vous tient au courant.

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

              Nan regarde mon message (je l’ai édité). Pas besoin de packet, rajoute juste une condition de ce genre
              if(this.worldObj.isRemote)
              {
              //Ta méthode qui check si un disque est joué
              }

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

                je peux pas le mettre dans isSoundPlaying parce que coté server il va return false quand même ^^ du coup il va coupé la musique est remettre un autre en boucle sans que la musique soie fini ^^

                Est quand tu parler de TE sa va dit ?

                (Les TE sont gérés des 2 côtés)

                En plus par IMessage je peux pas le faire non plus,

                Le updateTick  fonctionne que sur server est pas sur client 😕

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

                  Les TileEntity sont des 2 côtés : client et serveur. Du coup tu peux très bien vérifier dans la méthode updateEntity de ta TE si une musique est jouée. Et comme on te le dit depuis plusieurs messages, occupe toi que du client ^^ Le serveur n’en a rien à faire de ta musique. Du coup rajoute cette condition :
                  if(this.worldObj.isRemote)

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

                    J’ai déjà teste ^^ le problème c’est que quand le mod est sur le server le client utilise pas la fonction updateTick, il y a que le serveur. j’ai teste avec un System.out.println est il y à que le server qui l’affiche dans le console le client non 😕

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

                      Est-ce que t’as essayé mon code au moins avant de dire qu’il ne marche pas ? Si c’est le cas, alors packet obligatoire !

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

                        Juste un problème c’est que le updateTick marche pas sur le client quand j’ajoute le mod sur un server forge.
                        Il y à que le server qui updateTick le block

                        Je comprend pas 😕

                        
                        @Override
                        public void updateTick(World world, int x, int y, int z, Random rand)
                        {
                        if (world.isRemote == true)
                        {
                        System.out.println("Client updateTick"); // Quand le mod est sur le server ça marche pas !
                        }
                        else
                        {
                        System.out.println("Server updateTick");
                        }
                        
                        world.markBlockForUpdate(x, y, z);
                        }
                        
                        
                        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

                          C’est tout à fait normal. Sur serveur il y a que les fonctions serveurs qui sont exécutés et world.isRemote est toujours faux.
                          Sur ton client c’est l’inverse.
                          Et lorsque tu joues en solo tu as les deux, car il y a un serveur intégré qui tourne.

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

                            J’ai trouvé un moyen plus simple, j’ai créer 2 classe pour géré la duré des musique, faut juste l’ajoute dans un fichier json mais du coup ça fonction des 2 coté est j’ai plus besoin de SoundManager. j’ai juste encore quelque problème avec les ticks. parce que le sound s’arrête 3 seconde en avance ^^

                            Je passerai le code.

                            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