MFF

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

    Gui coté serveur

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.8
    27 Messages 4 Publieurs 6.3k 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.
    • J Hors-ligne
      Jodge
      dernière édition par

      J’utilise le tag “ActualTimer” qui est incrémenter de 1 chaque tick tan que l’un des deux tags (“RightClic” ou LeftClic") est différent de 0.

      Lorsque mon tag “ActualTimer” est supérieur à ma Variable “comboTimer” (variable ce coup ci attention) alors tous mes tag sont ré-initialisé a 0 (et donc le timer ce désactive).

      Si, au cour de l’un des itérations de mon Timer (d’ou la nécessité de l’effectuer chaque tic), un des deux tags “RightClic” ou LeftClic" est modifier (chose que je vérifie grâce aux tags “RightPreviousClic” et “LeftPreviousClic”), alors je ré-initialise mon tag “ActualTimer” le timer continue alors, mais le tag reprend la valeur 0.

      Je ne sais pas si j’ai été assez clair ^^’

      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

        Je ne vois pas d’autres façons de faire 😕
        Ce que tu peux par contre faire c’est actualisé ton time toutes les secondes au lieu de tous les ticks.

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

          Comment cas ? onUptade est appeler tout les ticks, comment je peu définir pour que ce ne soit que toute les minutes ?

          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

            Ajoute dans ta classe deux variables :
            private static final long start = System.currentTimeMillis() / 1000;
            private static int seconds = 0
            Ensuite dans ta fonction update :

            if(seconds != (int)(System.currentTimeMillis() / 1000 - start))
            {
            // ton action ici, elle ne sera que faite toutes les secondes
            seconds = (int)(System.currentTimeMillis() / 1000 - start);
            }
            

            C’est le moyen le plus propre pour faire ça.

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

              Je vien de relire mon code, et effectuer l’incrémentation chaque seconde n’es pas possible a cause de l’affichage (trop de latence).
              Par contre, j’avoue avoir totalement oublier la classe System, et je dois pouvoir me baser sur le temps du syteme et faire le calcul à chaque fois plutôt que de me baser sur un tag qu’il faut re écrire à chaque fois. Je vais m’y pencher dessus ^^

              EDIT :

              ​ public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
              {
              if(stack.getTagCompound() == null)
                      {
                      stack.setTagCompound(new NBTTagCompound());
              
                      stack.getTagCompound().setInteger("rC", 0); // Right Combo
                      stack.getTagCompound().setInteger("rPC",0); // Right Previous Combo
                      stack.getTagCompound().setInteger("lC", 0); // Left Combo
                      stack.getTagCompound().setInteger("lPC", 0); // Left Previous Combo
                      stack.getTagCompound().setInteger("aT",timer); // actualTimer
                      }
              
              if ((nbtVar.readNbtVarInt(stack, nbtVar.RightCombo) != 0) || (nbtVar.readNbtVarInt(stack, nbtVar.LeftCombo) != 0))
              {
              
              timer++;
              if (timer < 0)
              {
              timer = 0;
              }
              
              int seconds = timer  - nbtVar.readNbtVarInt(stack, nbtVar.ActualCombo);
              
              if(seconds >= this.comboTimer)
              {
              JFunction.write("### ### : " + seconds + " >= " + this.comboTimer + " ?");
              
              nbtVar.writeNbtVar(stack, nbtVar.RightCombo, 0);
              nbtVar.writeNbtVar(stack, nbtVar.LeftCombo, 0);
              nbtVar.writeNbtVar(stack, nbtVar.ActualCombo, timer);
              }
              else if ( nbtVar.readNbtVarInt(stack, nbtVar.RightCombo) != nbtVar.readNbtVarInt(stack, nbtVar.RightPreviousCombo) || 
              nbtVar.readNbtVarInt(stack, nbtVar.LeftCombo) != nbtVar.readNbtVarInt(stack, nbtVar.LeftPreviousCombo))
              {
              nbtVar.writeNbtVar(stack, nbtVar.ActualCombo, timer);
              }
              if (nbtVar.readNbtVarInt(stack, nbtVar.RightCombo) != nbtVar.readNbtVarInt(stack, nbtVar.RightPreviousCombo))
              {
              nbtVar.writeNbtVar(stack, nbtVar.RightPreviousCombo, nbtVar.readNbtVarInt(stack, nbtVar.RightCombo));
              }
              if (nbtVar.readNbtVarInt(stack, nbtVar.LeftCombo) != nbtVar.readNbtVarInt(stack, nbtVar.LeftPreviousCombo))
              {
              nbtVar.writeNbtVar(stack, nbtVar.LeftPreviousCombo, nbtVar.readNbtVarInt(stack, nbtVar.LeftCombo));
              }
              }
              }
              

              Grace à cette méthode, l’objet n’est pas ré-initialisé à chaque fois. Le seul problème viens de si le joueur joue plus de 2,147,483,647 tick non stop (à raison de 20 tick par seconde, sachant qu’il y a 86400 seconde dans une journée sa fait 17,280,000 de tick par jour, soit à peu près 124 jours non stop.)
              Reste a voir si sa ne risque pas de poser de problème niveau serveurs (multi-activation).

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

                Le problème n’est malheureusement pas terminer X)

                Le problème de serveurs semble avoir totalement disparut de par l’utilisation de nbtTags.

                En revanche, un nouveau problème apparaît ^^’
                Comme vous pouvez le voir sur le GIF animé (ou pas), l’affichage à lieu sur tout nouveaux objet, immédiatement et se fige. De plus, il y a un décalage des objets qui s’effectues lors du premier clic. Si j’effectue plusieurs clic, le problème est résolu tan que je reste sur cette objet. Dès que je change, c’est la même.

                :::
                Désoler pour vos yeux X)

                :::

                Voila les code concerner :
                Classe JScreen (Classe d’affichage, qui est sans doute celle qui bug)
                Classe JWeapons (Classe de base d’une armes)
                JScythe (Classe étendu utilisé dans l’exemple)

                Étrangement, si on observe le code, l’affichage est censé avoir lieu selon la valeurs du nbtTag, qui, par défaut, est initialisé a 0 (donc pas d’affichage). Chaque valeurs est ensuite correcte, sauf la premier fois…

                help ! 😢

                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

                  Je vais récupérer les sources dans la soiré ou demain et je vais regarder ça.

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1
                  • 2
                  • 2 / 2
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB