[Résolu] Comment modifier le f3 [Via Forge ou Vanilla]



  • Bonjour alors voilà je cherche à modifier le menu f3, j'ai cru comprendre qu'avec l'event GameOverlayEvent cela pourrait marcher mais en vain non car on ne peut pas supprimer des choses d'un gui existant (des String par-exemple) mais que en rajouter. Je voudrai par-exemple retirer les coordonnées y (c'est juste un exemple) dont retirer le String qui se charge des y. Mais après je me suis donc tourné vers le vanilla mais je ne peux ajouter un .class de Minecraft vanilla modifié si j'ai un mod forge en même temps à faire load. Je n'ai pas essayé mais pensez vous que mon GuiInGame reobfuscé dans mon mods forge .jar pourrait marcher ? Je connais le mod spiffy skins qui  a des class du jeu de base dans son mod forge en .jar mais je crois aussi qu'il utilise l'asm.
    Résumons je souhaiterai retirer les coordonnées y du menu en passant par le vanilla puisqu' avec forge cela ne marche pas. Je pense qu'ave l'ASM de forge ça pourrait largement marcher mais je ne sais pas du tout m'en servir; j'ai cru comprendre que c'était loin d'être facile….
    Je vous remercie d'avance
    Je n'ai aucun code à poster de ce fait.


  • Administrateurs

    En effet pour faire ce que tu veux faire il faut utiliser un transformer et donc ASM
    Après il est peut être possible de faire plus simple, un remplacement de gui ( si le gui est ouvert on en ouvre un autre) pourrait fonctionner, à tester.



  • @'robin4002':

    En effet pour faire ce que tu veux faire il faut utiliser un transformer et donc ASM
    Après il est peut être possible de faire plus simple, un remplacement de gui ( si le gui est ouvert on en ouvre un autre) pourrait fonctionner, à tester.

    Nan je ne pense pas car le f3 n'est pas un gui et n'est pas non plus un guiscreen donc on ne pourra pas le remplacer, en fait il se trouve dans le GuiInGame


  • Administrateurs

    Ah oui effet, donc ça ne fait pas être possible.
    Et si tu cancel l'event ?

    ​    @SubscribeEvent
    
        public void onRenderPre(RenderGameOverlayEvent.Pre event)
        {
            if(event.type == RenderGameOverlayEvent.ElementType.DEBUG)
            {
                event.setCanceled(true);
            }
        }
    
        @SubscribeEvent
        public void onRenderPost(RenderGameOverlayEvent.Post event)
        {
            if(event.type == RenderGameOverlayEvent.ElementType.DEBUG)
            {
                // refaire le rendu
            }
        }
    

    Mais du-coup tu vas devoir refaire tout le rendu.



  • @'robin4002':

    Ah oui effet, donc ça ne fait pas être possible.
    Et si tu cancel l'event ?

    J'ai vu ElementType.debug je crois que c'est ça j'essaie de cancel l'affichage.

    Voici mon code pour t'informer :

    
    @SubscribeEvent
    
    public void renderGameOverlay(RenderGameOverlayEvent event)
    {
    if(event.type != ElementType.DEBUG)
    {
    event.setCanceled(true);
    }
    }
    

    EDIT, je n'avais pas vu ton message édité x)
    C'est bon ça marche comme je voulais, merci Robin !