Récupérer le temps de jeu du joueur


  • Correcteurs

    Salut les gens, j'aurais besoin de récupérer le temps de jeu du joueur afin de mettre ça en condition pour des mécaniques de jeu

    Pour le moment je n'ai trouvé que:

    private static DecimalFormat decimalFormat = new DecimalFormat("########0.00");
        public static IStatType timeStatType = new IStatType()
        {
            private static final String __OBFID = "CL_00001474";
            /**
             * Formats a given stat for human consumption.
             */
            @SideOnly(Side.CLIENT)
            public String format(int p_75843_1_)
            {
                double d0 = (double)p_75843_1_ / 20.0D;
                double d1 = d0 / 60.0D;
                double d2 = d1 / 60.0D;
                double d3 = d2 / 24.0D;
                double d4 = d3 / 365.0D;
                return d4 > 0.5D ? StatBase.decimalFormat.format(d4) + " y" : (d3 > 0.5D ? StatBase.decimalFormat.format(d3) + " d" : (d2 > 0.5D ? StatBase.decimalFormat.format(d2) + " h" : (d1 > 0.5D ? StatBase.decimalFormat.format(d1) + " m" : d0 + " s")));
            }
        };
    

    SuperLoup m'a bien dis que "p_75843_1_" serait la solution, le nombre total de ticks.
    Sauf que je ne sais pas comment mettre ça en argument, pour l'instant je n'obtiens que des String x]


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    Ça c'est juste la fonction qui met en forme la valeur. Il faudrait trouver où la fonction est appelé (ce que t'as dit de faire superloup) pour voir quelle variable est utilisé comme paramètre.

    C'est ce que j'ai fais, sauf que la valeur avec laquelle elle est appelé est le temps à laquelle le joueur lié une statistique (par exemple le temps depuis la dernière mort) qui n'est pas le temps total depuis lequel il a joué.

    Je ne sais pas si dans Minecraft il y a un compteur du temps total en jeu et si ce n'est pas le cas il va falloir l'implémenter toi même (en soit ce n'est pas compliqué, il suffit de mettre le temps actuel dans une variable au lancement du jeu puis de faire la différence entre cette variable et le temps actuel).


  • Correcteurs

    Donc

        @SubscribeEvent
        public void clientConnectedToServer(ClientConnectedToServerEvent event)
        {
            PlayerProperties props = PlayerProperties.get(Minecraft.getMinecraft().thePlayer);
            // Heure de connexion
            props.setTimeConnectedStart(props.getTimeConnectedStart() + Clock.systemDefaultZone().millis());
        }
    

    Puis

    long timePlayedYet = Clock.systemDefaultZone().millis() - props.getTimeConnectedStart();
                            Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(EnumChatFormatting.GOLD + "Temps de jeu: " + timePlayedYet, c - 100, b - 12, 0);
                
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    @Folgansky a dit dans Récupérer le temps de jeu du joueur :

    props.getTimeConnectedStart() + Clock.systemDefaultZone().millis()

    Pourquoi additionner getTimeConnectedStart à Clock.systemDefaultZone() ?


  • Correcteurs

    Je récupère l'heure à laquelle le joueur se connecte pour en déduire le temps de jeu pour la sessions.
    Mais je dois l'additionner aux précédents temps de jeu pour finalement savoir le temps total joué.

    Pour la première connexion timeConnectedStart vaut 0.

    Je dois donc continuer en enregistrant le temps de jeu pour la session du joueur au moment où il se déco


  • Moddeurs confirmés Rédacteurs Administrateurs

    En effet si tu veux compter uniquement le temps sur le serveur il faut en effet retirer le temps non connecté de cette valeur.



  • Je risque de dire un bêtise, mais il me semble que c'est de la 1.7, si tu as (et je me souviens plus) accès au statistiques du jeu, """"normalement"""" y'a le temps de jeu total qui doit y être.

    N.B: Après recherche, tu as bel et bien ce genre d'info dans les stats MC.
    https://minecraft-fr.gamepedia.com/Statistiques


  • Correcteurs

    Voui et ce qu'il y a dans mon premier message vient des Stats justement
    Le tout est que je n'ai pas réussis à trouver où est réellement calculé le temps de jeu du joueur


Log in to reply