Afficher l'EXP gagné pendant un certain temps



  • Bonsoir,

    J'aimerais faire en sorte d'afficher le nombre d'expérience que gagne le joueur.
    Pour afficher le texte c'est bon:

    @SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void onGuiInGameRender(RenderGameOverlayEvent.Text event) {
    Minecraft.getMinecraft().fontRendererObj.drawString("exp gagné", 25, 25, 0xFFFF00);
    }
    

    Mais le problème c'est que je ne sais pas comment faire pour savoir quand le joueur gagne de l'expérience et comment faire pour que le message ne reste qu'un petit temps (par exemple le joueur tue un mob, il y a juste marqué +2exp pendant par exemple 2 secondes)

    Pour l'afficher un certain temps c'est à moitié bon:
    faire une condition avec un **boolean **et si la condition est fausse le texte est vide.

    Mais comment faire pour passer le **boolean **sur **true **pendant 2 secondes ?
    Et comment savoir quand le joueur gagne de l'expérience ?

    J'ai un peu cherché mais sans succès.. et pour le "timer" je ne m'y connais pas du tout


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    Il faut faire une variable qui est égale nombreDxp (int) + une variable timer (int) + une variable gainXp (int aussi)
    Si le nombre d'xp actuelle du joueur n'est pas égale à la variable nombreDxp alors tu fais la différences deux pour avoir l'xp gagné (que tu affectes à la variable gainXp) et tu affectes à ta variable nombreDxp la nouvelle valeur de l'xp actuelle. En même temps tu mets la variable timer sur 60.

    Ensuite dans ta fonction de rendu si timer est > 0 tu fais timer–; et tu affiches ton texte.



  • Pour récupérer l'expérience du joueur comment il faut faire ? C'est avec EntityPlayer ? Je ne sais pas comment récupérer le joueur :x

    Sinon le texte s'affiche bien le temps voulu ! Merci 🙂



  • Minecraft.getMinecraft().thePlayer.experienceTotal;



  • Merci tout marche !



  • N'oublie pas la balise résolu alors 😃



  • J'allais le faire mais j'ai du m'absenter désolé.
    Tout fonctionne mais j'aurais une autre question, est ce que c'est possible de faire de "timer" différemment ? Comme sur Bukkit par exemple.



  • C'est-à-dire ? Précise car ici on ne fait pas tellement de plugin ^^'
    Après je crois que forge inclut une classe timer, en tout cas en 1.7x, après je ne sais pas si elle répond à tes attentes ?



  • En gros sur un serveur 20 tick c'est une seconde (quand ça ne lag pas) et tu peux faire des Scheduler / Runnable (je sais en faire mais je ne m'y connais pas plus que ça) et par exemple en tapant une commande, ça exécutera une action 20 ticks plus tard ou tout les 20 ticks par exemple (tu peux choisir le nombre de tick que tu veux)


Log in to reply