Mon mod ne charge que la moitié des modifications



  • Salut à tous !

    J'ai fait un mod qui enlève la liste des joueurs (Quand on appui sur TAB), qui modifie le menu principal, qui laisse seulement le nombre de FPS dans le menu F3 et qui enlève les noms des joueurs au dessus des têtes. Tout fonctionne normalement dans eclipse et quand je compile mon mod et que je le teste, seulement le menu principal change et pas les autres modifications. Oui, j'ai modifié des classes principales. Comment pourrais-je "override" les classes principales pour que ça fonctionne ?


  • Administrateurs

    Avec Forge, il ne faut jamais modifié les class de Minecraft, je pense qu'il doit y avoir un event qui puisse t'aider ou alors essaye de passer par la reflexion de java.



  • C'est sympa ce que tu nous fais la.

    En gros, tu explique ton problème, tu casse une des règles en or du modding forge, et tu ne donne pas ton code.

    De plus, le problème viens certainnement du fait que tu a modifié les classes de bases, et qu'une classe de base dans un .jar/zip de mod n'est pas reconnue.



  • Et heum… Comment on se sert de la réflexion ?





  • En fait, je veux "remplacer" une classe de base, y a t-il un autre moyen que la reflexion parce que le lien que vous m'avez donné… Ça ne me dit rien...



  • En principe, tu peux créer une classe qui extends la classe que tu veux modifier. Ensuite, tu modifie toutes les méthodes que tu veux et au lieu d'utiliser la classe Minecraft, tu utilises la classe que tu viens de modifier. Mais attention, ça dépend des classes, certaines classes dépendent d'autres classes et faudrait du coup extends toutes les autres classes.

    C'est le principe de l'héritage, on peut override toutes les méthodes qu'on veut ensuite 🙂


  • Administrateurs

    Quels sont les classes que tu veux remplacer ?



  • Je veux simplement supprimer le pseudo au dessus des têtes donc la classe RendererLivingEntity (méthode func_96449_a).___
    Mais là j'ai fait un Event.. Voici ma classe:

    public class PlayerRenderEvent
    {
    public String displayname;
    public String username;

    @ForgeSubscribe
    public void onPlayerRender(RenderPlayerEvent.Specials.Pre event)
    {
    EntityPlayer player = (EntityPlayer)event.entityPlayer;
    if(player.displayname != this.username)
    {
    this.displayname = null;
    }
    }
    }


  • Administrateurs

    public class PlayerRenderEvent
    {
    @ForgeSubscribe
    public void onPlayerRender(RenderPlayerEvent.Specials.Pre event)
    {
    event.entityPlayer.displayname = "";
    }
    }
    

    Tout simplement comme ça. Ça devrait fonctionner.



  • Ouhla ! Merci infiniment ! Par contre, ça met une petite ligne noire au dessus de la tête du joueur…


  • Administrateurs

    Essaye de le mettre en null alors à la place de ""



  • J'ai testé et ça remet le pseudo normal.


Log in to reply