MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Utiliser les Access Transformer

    Planifier Épinglé Verrouillé Déplacé Autres
    7 Messages 4 Publieurs 3.1k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par robin4002

      Sommaire

      • Introduction
      • Pré-requis
      • code
        • build.gradle
        • Access Transformer
      • Crédits

      Introduction

      Il vous est déjà arrivé de ne pas avoir accès à une méthode ou une variable ? C’est énervant n’est-ce pas ? Et bien voici comment modifier son accès.

      ATTENTION ! Lisez d’abord cette partie avant d’attaquer le tutoriel

      Il existe 2 méthodes pour accéder aux variables non-accessibles, la 1ere consiste à utiliser la classe ObfuscationReflectionHelper, la 2eme méthode est celle présentée ici. Cette méthode ne doit être appliquée seulement si vous accédez souvent à la variable en question, si vous y accédez une fois au démarrage (par exemple) il est inutile d’utiliser cette méthode.

      Pré-requis

      • Installer et configurer l’espace de travail de Forge

      Code

      build.gradle :

      La première chose que nous allons faire c’est spécifié à forge que l’on utilise l’access transformer, pour cela copiez ce code dans votre build.gradle en remplaceant le nom du fichier par ce que vous voulez (ce doit être le même après et il doit finir en _at.cfg) :

          jar {
              manifest {
                  attributes 'FMLAT': '<modid>_at.cfg'
              }
          }
      

      Maintenant allez dans votre dossier de resources (par défaut src/main/resources), créez un dossiez “META-INF” et dedans créez un fichier texte du même nom que specifié avant.

      Voici comment nous allons structurer le fichier :

      # Je suis un commentaire
      <visibilité><chemin vers la classe> <nom obfusqué de la variable> # pattern pour une variable (par convention, on met le nom non-obfusqué après le "#")
      <visibilité><chemin vers la classe> <nom obfusqué de la méthode>(<paramètres>) <type retourné># pattern pour une fonction (par convention, on met le nom non-obfusqué après le "#")
      

      La visibilité correspond à la visibilité que vous voulez (généralement public).
      Le chemin vers la classe est tout simplement <package>.<classe>, par exemple pour la classe EntityRenderer ce serait net.minecraft.client.renderer.EntityRenderer
      Le nom obfusqué correspond au nom de la variable ou de la méthode mais obfusquée, pour accéder au nom je vous conseille mon logiciel ObfuscatedNameFinder
      Pour ce qui est des paramètres et du type retourné, c’est plus compliqué.
      Pour les paramètres il faut mettre à la suite sans espace tous les types de paramètre.
      Pour le type retourné, il faut simplement le type.

      Voici les différents types disponibles :

      • void devient “V”
      • boolean devient “Z”
      • char devient “C”
      • byte devient “B”
      • short devient “S”
      • int devient “I”
      • float devient “F”
      • long devient “J”
      • double devient “D”
      • pour tous les autres type, c’est : L<lien vers la classe (en remplacent les points par des slashs)>; par exemple pour le type String ce serai “Ljava/lang/String;”

      Si vous voulez changer toutes les variables d’une classe, il faut faire ceci :

      <visibilité><chemin vers la classe> *
      

      Pour changer toutes les méthodes d’une classe, il faut faire ceci :

      <visibilité><chemin vers la classe> *()
      

      Une fois que vous avez modifié toutes vos variables et vos méthodes, faites un gradlew setupDecompWorkspace eclipse pour mettre à jour les classes

      Un exemple est disponible sur le github de mon mod tutoriel

      Crédits

      Rédaction :

      • SCAREX

      Correction :


      Ce tutoriel de SCAREX publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      Retour vers le sommaire des tutoriels

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        Tiens tu aime bien gradle décidément 😉 Sinon c’est vrai que ça peut être vraiment utile

        1 réponse Dernière réponse Répondre Citer 0
        • DeletedD Hors-ligne
          Deleted
          dernière édition par

          Ahhhh….Pour moi les Access Transformer, c’était pouvoir accéder aux méthodes du jeu, et les patcher de manière à rajouter ce que l’on veut, où l’on veut dedans 😕
          Sa, je savais déjà faire ^^

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            patcher le jeu en profondeur c’est manipulation de byte code avec asm + plugin fml.

            1 réponse Dernière réponse Répondre Citer 0
            • DeletedD Hors-ligne
              Deleted
              dernière édition par

              Sa fera l’objet d’un tutoriel sur le fofo ou pas ? J’irai demander ça en message dans le poste “Proposition de tutoriels”

              1 réponse Dernière réponse Répondre Citer 0
              • SCAREXS Hors-ligne
                SCAREX
                dernière édition par

                @‘BrokenSwing’:

                Tiens tu aime bien gradle décidément 😉 Sinon c’est vrai que ça peut être vraiment utile

                C’est pas en rapport avec gradle la, c’est du fml.

                @‘Plaigon’:

                Sa fera l’objet d’un tutoriel sur le fofo ou pas ? J’irai demander ça en message dans le poste “Proposition de tutoriels”

                Je comptais aussi faire un tuto la dessus mais j’ai pas encore les connaissances pour.

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

                1 réponse Dernière réponse Répondre Citer 0
                • DeletedD Hors-ligne
                  Deleted
                  dernière édition par

                  Erreur lors du gradlew setupDecompWorkspace, une idée ? Je continue mes recherches…
                  public net.minecraft.world.biome.BiomeDecorator func_150513_a(Lnet/minecraft/world/biome/Biome;Lnet/minecraft/world/World;Ljava/util/Random;)V #genDecorations

                  (PS = En 1.10.2, l’AT file est bien register dans mon build.gradle, si tu penses que cela vient de là je te filerai le fichier)

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB