Player Scale.



  • Bonjour bonsoir!

    Je suis un ancien petit moddeur et j'ai de nouveaux projets sachant que je viens de me remettre à forge.
    J'ai reconstruit à peu près toutes les bases que j'avais oubliées, les blocs simples, complexes, items, génération, tout ça, et j'ai eu une idée que j'avais déjà exploitée il y a longtemps sous minecraft vanilla.

    L'idée en question est de jouer sur le render du joueur pour modifier la taille d'un personnage (anciennement playerScale)

    Sauf que je ne sais pas du tout par où commencer, j'ai fait quelques recherches sur des forums anglais et je n'ai rien trouvé qui parle de ça.
    C'est pourquoi je m'adresse à la communauté MFF pour vous demander de l'aide, ne serait-ce qu'une piste. Je ne demande pas du code tout prêt, mais une piste, comment parvenir à modifier le playerscale avec forge? Faut-il définir un nouveau render pour le joueur pour parvenir à le modifier ensuite? Si oui par où commencer? Si non comment faire?

    Je vous remercie d'avance !


  • Modérateurs

    J'anticipe avant que l'on dise "va voir avec xavpok pour les problemes d'OpenGL".
    Il faudrait que tu recuperes l event RenderPlayer.Pre et que tu fasses ainsi:

    glPushMatrix(); // TRES important
    glSaclef(facteurSurX, Y, Z);
    
    

    et meme chose pour RenderPlayer.Post avec:

    glPopMatrix(); // et c est tout
    

    Écrit avec Tapatalk depuis mon mobile. Pardonnez les possibles fautes, j'aime juste pas écrire avec mon mobile.


  • Moddeurs confirmés Modérateurs

    et pour la hitbox, tu doit faire un extended entity prop et dans le constructeur: this.setSize(x,y,z):



  • glSaclef ≠ glScalef Xav 😄



  • Merci de vos réponses, je vais essayer tout cela et si ça fonctionne, j'éditerai pour mettre la balise résolu.


  • Administrateurs

    Petite précision : les glblablabla indiqué ci-dessus, il ne faut pas oublier le "GL11." 🙂



  • J'ai fait le "montage" et j'ai un bug

    @ForgeSubscribe
    @SideOnly(Side.CLIENT)
    public void amateisMegaScalePre(RenderPlayerEvent.Pre event)
    {
    if (event.entityLiving.isPotionActive(ViruZEffect.megaScale))
    {
    if (event.entityLiving.getActivePotionEffect(ViruZEffect.megaScale).getDuration() == 0)
    {
    event.entityLiving.removePotionEffect(ViruZEffect.megaScale.id);
    return;
    }
    GL11.glPushMatrix();
    GL11.glTranslatef(0.0F, 4.0F, 0.0F);
    GL11.glScalef(3.5F, 3.5F, 3.5F);
    }
    }
    

    et tout en bas de la classe:

    @ForgeSubscribe
    @SideOnly(Side.CLIENT)
    public void amateisScalePost(RenderPlayerEvent.Post event)
    {
    GL11.glPopMatrix();
    }
    

    Et j'ai le bug du joueur qui suis l'écran en fait il est sur un bloc, il bouge pas mais sur l'écran d'un autre joueur il bouge
    Je screenrais si vous voyez pas ce que je veux dire ^^


  • Moddeurs confirmés Rédacteurs Administrateurs

    Un peu normal, tu glPushMatrix seulement si une condition est respecté mais tu glPopMatrix tout le temps, donc ça fait complètement planté le rendu.



  • Ah ouais, mer**, je teste ça donc


    J'ai essayé ça

    @ForgeSubscribe
    @SideOnly(Side.CLIENT)
    public void amateisScalePost(RenderPlayerEvent.Post event)
    {
    if (event.entityLiving.isPotionActive(ViruZEffect.miniScale))
    {
    GL11.glPopMatrix();
    }
    }
    

    Rien n'y fait



  • Des idées pour mon problème ? Sinon je fait un topic à part pour pas flood celui là


  • Moddeurs confirmés Modérateurs

    essaie avec:

    @ForgeSubscribe
    @SideOnly(Side.CLIENT)
    public void amateisMegaScalePre(RenderPlayerEvent.Pre event)
    {
    if (event.entityLiving.isPotionActive(ViruZEffect.megaScale))
    {
    if (event.entityLiving.getActivePotionEffect(ViruZEffect.megaScale).getDuration() == 0)
    {
    event.entityLiving.removePotionEffect(ViruZEffect.megaScale.id);
    return;
    }
    GL11.glPushMatrix();
    GL11.glTranslatef(0.0F, 4.0F, 0.0F);
    GL11.glScalef(3.5F, 3.5F, 3.5F);
    GL11.glPopMatrix();
    }
    }
    


  • Marche pas !

    Mais j'ai abandonné de toute façon !

    Merci !


Log in to reply