Non résolu Récupérer le temps de jeu du joueur
-
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] -
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).
-
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);
-
@Folgansky a dit dans Récupérer le temps de jeu du joueur :
props.getTimeConnectedStart() + Clock.systemDefaultZone().millis()
Pourquoi additionner getTimeConnectedStart à Clock.systemDefaultZone() ?
-
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
-
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 -
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