1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Modding Le modding Minecraft pour les nuls.

Discussion dans 'Tutoriels' créé par Cobalt Team, 10 Jan 2016.

  1. Cobalt Team

    Cobalt Team Mineur

    Inscrit:
    7 Juin 2015
    Messages:
    325
    Points:
    94
    Sexe:
    Homme
    Vous avez toujours rêver de créer un mod minecraft? Vous avez essayer MCreator mais vous avez vu que c'est tellement de la merde que vous voulez "réellement" devenir moddeur? Bien ce tutoriel est fait pour vous!

    Dans ce tutoriel, vous allez apprendre la base du java et comment faire certains éléments dans Minecraft. Bien sûr, si vous n'avez jamais fait de programmation, ça va être dur pour vous. Je vous conseille d'aller voir beaucoup de vidéo de programmation ou même ce tutoriel de Openclassroom avant de commencer.

    Cobalt Team n'est pas responsable des problèmes qui peut survenir! Vous faites cela sous votre entière responsabilité!

    Table des matières
    1. C'est quoi Java?
    2. Préparation
    3. Parti théorique
    4. Ajouter un bloc?
    C'est quoi java?

    Java est un langage de programmation fait par Sun Microsystems, puis racheter par oracle depuis 2009. Il ne faut pas confondre java et javascript, qui sont 2 langages complètement différent! Une de ses plus grandes forces est son excellente portabilité, une fois un programme créé, il fonctionnera automatiquement sous Windows, Mac, Linux, etc.

    Préparation
    Premièrement, on va devoir télécharger quelques trucs pour permettre la programmation en java sur votre ordinateur.

    Si vous avez déjà Java d'installer sur votre PC et que c'est le JRE, désinstallez le car on va installer le JDK, qui est le kit de développement pour décompiler et compiler le code et en plus, il contient le JRE!

    Télécharger JDK
    [​IMG]
    Cliquez sur download du JDK.
    [​IMG]
    Cochez la case : Accept License Agreement puis cliquez sur le lien correspondant à votre système d'exploitation (x86 pour un système 32 bits et x64 pour un système 64 bits). Une popup de téléchargement doit alors apparaître.
    Si vous ne savez pas si votre pc est 32 bit ou 64 bit, Faites un clic droit sur démarrer et système
    [​IMG]


    Maintenant que le JDK est installer sur votre PC, vous allez voir besoin de Eclipse IDE.

    Je vous invite donc à télécharger Eclipse IDE. Une fois la page de téléchargement choisissez Eclipse IDE for Java Developers, en choisissant la version d'Eclipse correspondant à votre OS (Operating System = système d'exploitation), comme indiqué à la figure suivante.
    [​IMG]

    Pour ceux qui l'avaient deviné, Eclipse est le petit logiciel qui va nous permettre de développer nos applications ou nos applets, et aussi celui qui va compiler tout ça. Notre logiciel va donc permettre de traduire nos futurs programmes Java en langage byte code, compréhensible uniquement par votre JRE, fraîchement installé.

    Quand votre téléchargement va être terminer, vous devez maintenant avoir une archive contenant Eclipse. Décompressez-la où vous voulez, entrez dans ce dossier et lancez Eclipse. Au démarrage, comme le montre la figure suivante, Eclipse vous demande dans quel dossier vous souhaitez enregistrer vos projets;
    [​IMG]
    Mais vu qu'on n'a pas encore décompiler Minecraft, cliquez sur cancel.
    Pour décompiler Minecraft, allez sur ce site et télécharger le fichier suivant.
    [​IMG]
    Quand cette archive est télécharger, Décompressez-la dans un dossier et ouvrez ce dossier.
    [​IMG]
    Vous allez double-clic sur decompile et une fenêtre de commande va s'ouvrir. Laissez la faire. Elle va télécharger tout les fichiers nécessaires pour le projet. Normalement, le script prend 5 minute a décompiler.
    [​IMG]
    [​IMG]
    Quand tout est décompiler, vous allez voir "Appuyez sur une touche pour continuer..", alors appuyer sur enter.
    [​IMG]
    Maintenant réouvrez éclipse et cliquez sur browse pour aller chercher votre projet décompiler. Allez chercher votre dossier où vous avez décompiler minecraft, cliquez sur la flèche et sélectionnez le dossier eclipse.
    Appuyez sur OK et encore OK. Maintenant, éclipse va se charger.
    Si vous voyez comme dossier Client et Server dans package explorer, BRAVO! Vous avez fini la section préparation à la perfection! [​IMG]

    La première chose qu'on va faire, on va ouvrir le projet et aller corriger un bug car avec cette version de Minecraft coder pack, le temps en jeu est déréglé. Cliquez sur la flèche sur client et sur src et plein de boite vont s'affiché. Ces "boites" sont en effet des paquets. Rendez vous jusqu'a au paquet net.minecraft.world et cliquez sur la flèche. Alors la, vous voyez plein de fichier qui fini en .java. Ces fichier sont les fichier de programmation ou java class si vous préférez, elle contienne le code du jeu. ouvrez WorldProvider.java en faisant un double clic dessus.
    [​IMG]
    Quand fichier est ouvert, prenez une minute pour vous familiariser avec l'interface d'éclipse. Voici quelques détails.
    [​IMG]
    Mais ce qui va être le plus important, c'est ça.
    [​IMG]
    Nouveau : Pour faire un nouveau fichier.
    Sauvegarder, sauvegarder tout, imprimer : Sauvegarder le code.
    Le debug : Le debug est une fonction super utile en programmation! Juste pour vous dire, je l'utilise 95 % du temps car ça permet de modifier le code du jeu et de voir les changements sans devoir reboot l'application à chaque fois que je fait une modification! (Imaginez juste la perte de temps énorme juste à toujours reboot)
    Éxécuter l'application : ça exécute l'application mais tu peut pas modifier le code.
    Le paquet et java class: ça permet de créer un paquet ou une class rapidement.
    Le reste des boutons n'est pas utiles dans le tutoriel ou rarement utiliser et je vais le préciser si besoin.
    Maintenant, votre premier travail est de cliquez sur [​IMG]
    Vous voyez, votre jeu est ouvert.
    [​IMG]
    En bas de éclipse, vous voyez la console. Elle indique tout ce qui arrive a minecraft. C'est comme si le jeu vous parle, alors écoutez le. Quand un problème arrive, il va le dire dans cette section.
    [​IMG]

    Parti théorique

    Mainteant, allez dans un monde et mettez le temps sur la nuit avec la commande /time set night.
    [​IMG]
    Vous voyez, on a un bug! Le temps du jeu est décalé et votre premier travail est de corriger ce bug.
    Mais non, pas tout seul, je vais vous aider. Vous vous en rappeler de la class que je vous aie dit d'ouvrir? Et bien une fonction dans cette class ne fonctionne pas comme prévu. Mais avant de voir les fonction, voici les variables présentent en java.

    Les variables de type numérique
    Le type byte (1 octet) peut contenir les entiers entre -128 et +127.
    Code (cpp):
    byte hauteur;
    hauteur = 64;
    Le type short (2 octets) contient les entiers compris entre -32768 et +32767.
    Code (cpp):
    short playerSpeed;
    playerSpeed= 32000;
    Le type int (4 octets) va de -2*109 à 2*109 (2 et 9 zéros derrière… ce qui fait déjà un joli nombre).
    Code (cpp):
    int flytime;
    flytime= 15600000;
    Le type long (8 octets) peut aller de −9×1018 à 9×1018 (encore plus gros…).
    Code (cpp):
    long anneeLumiere;
    anneeLumiere = 9460700000000000L;
    Afin d'informer la JVM que le type utilisé est long, vous DEVEZ ajouter un "L" à la fin de votre nombre, sinon le compilateur essaiera d'allouer ce dernier dans une taille d'espace mémoire de type entier(int) et votre code ne compilera pas si votre nombre est trop grand...

    Le type float (4 octets) est utilisé pour les nombres avec une virgule flottante.
    Code (cpp):
    float pi;
    pi = 3.141592653f;
    Vous remarquerez que nous ne mettons pas une virgule, mais un point ! Et vous remarquerez aussi que même si le nombre en question est rond, on écrit « .0 » derrière celui-ci, le tout suivi de « f ».

    Le type double (8 octets) est identique à float, si ce n'est qu'il contient plus de chiffres derrière la virgule et qu'il n'a pas de suffixe.
    Code (cpp):
    double division;
    division = 0.333333333333333333333333333333333333333333334D;
    Ici encore, vous devez utiliser une lettre - le « d » - pour parfaire la déclaration de votre variable.

    Des variables stockant un caractère
    Le type char contient un caractère stocké entre apostrophes (« ' ' »), comme ceci :
    Code (cpp):
    char caractere;
    caractere = 'A';
    Des variables de type booléen
    Le type boolean, lui, ne peut contenir que deux valeurs : true (vrai) ou false (faux), sans guillemets (ces valeurs sont natives dans le langage, il les comprend directement et sait les interpréter).
    Code (cpp):
    boolean question;
    question = true;
    Et aussi le type String
    Le type String permet de gérer les chaînes de caractères, c'est-à-dire le stockage de texte.
    Il s'agit d'une variable d'un type plus complexe que l'on appelle objet. Vous verrez que celle-ci s'utilise un peu différemment des variables précédentes :
    Code (cpp):

    //Première méthode de déclaration
    String phrase;
    phrase = "Titi et Grosminet";

    //Deuxième méthode de déclaration
    String str = new String();
    str = "Une autre chaîne de caractères";

    //Troisième méthode de déclaration
    String string = "Une autre chaîne";

    //Quatrième méthode de déclaration
    String chaine = new String("Et une de plus !");
     
    ATTENTION: String commence par une majuscule ! Et lors de l'initialisation, on utilise des guillemets doubles (" ").

    Mais avant d'aller plus loins, vous devez respecter une convention quand vous programmez!
    En résumé : il s'agit d'une convention de nommage. En fait, c'est une façon d'appeler nos classes, nos variables, etc. Il faut que vous essayiez de la respecter au maximum. Cette convention, la voici :
    • tous vos noms de classes doivent commencer par une majuscule ;

    • tous vos noms de variables doivent commencer par une minuscule ;

    • si le nom d'une variable est composé de plusieurs mots, le premier commence par une minuscule, le ou les autres par une majuscule, et ce, sans séparation ;

    • tout ceci sans accentuation !
    Aussi, vous avez les opérateurs arithmétiques(sont ceux que l'on apprend à l'école primaire…)
    ou presque :
    • « + » : permet d'additionner deux variables numériques (mais aussi de concaténer des chaînes de caractères ; ne vous inquiétez pas, on aura l'occasion d'y revenir).

    • « - » : permet de soustraire deux variables numériques.

    • « * » : permet de multiplier deux variables numériques.

    • « / » : permet de diviser deux variables numériques (mais je crois que vous aviez deviné).

    • « % » : permet de renvoyer le reste de la division entière de deux variables de type numérique ;
    Aussi, vous avez les conditions. Mais avant, vous devez savoir les opérateurs logiques. En voici quelque s'un.
    • « == » : permet de tester l'égalité.

    • « != » : permet de tester l’inégalité.

    • « < » : strictement inférieur.

    • « <= » : inférieur ou égal.

    • « > » : strictement supérieur.

    • « >= » : supérieur ou égal.

    • « && » : l'opérateur ET. Il permet de préciser une condition

    • « || » : le OU. Même combat que le précédent.

    • « ? : » : l'opérateur ternaire. Pour celui-ci, vous comprendrez mieux avec un exemple.
    Alors voici la forme d'une condition "if" "else".
    Code (cpp):
    if(//condition)
    {
      //Exécution des instructions si la condition est remplie
    }
    else
    {
      //Exécution des instructions si la condition n'est pas remplie
    }
    Vous avez aussi le else if, qui est un" sinon si…".

    Maintenant, vous êtes capable de corriger le bug. Revenons au projet et aller à la fonction "CalculateCelestiaAngle".
    Voici une fonction:
    [​IMG]
    Décortiquons un peu une fonction:
    • Tout d'abord, il y a le mot clé public. C'est ce qui définit la portée de la méthode.
    • Juste après, nous voyons float. Il s'agit du type de retour de la méthode. Pour faire simple, ici, notre méthode va renvoyer un float!

    • Vient ensuite le nom de la méthode.

    • Puis arrivent les arguments de la méthode. Ce sont en fait les paramètres dont la méthode a besoin pour travailler.
    • Finalement, vous pouvez voir une instruction return à l'intérieur de la méthode. C'est elle qui effectue le renvoi de la valeur, ici un float.
    Donc pour corriger le problème, sélectionner la fonction et remplacer la par celle ci et sauvegarder.
    Code (cpp):
        public float calculateCelestialAngle(long p_76563_1_, float p_76563_3_)
        {
            int i = (int)(p_76563_1_ % 24000L);
            float f = ((float)i + p_76563_3_) / 24000.0F - 0.25F;

            if (f < 0.0F)
            {
                ++f;
            }

            if (f > 1.0F)
            {
                --f;
            }

            float f2 = f;
            f = 1.0F - (float)((Math.cos((double)f * Math.PI) + 1.0D) / 2.0D);
            f = f2 + (f - f2) / 3.0F;
            return f;
        }
    Maintenant, retournons voir le jeu.
    [​IMG]
    Voilà. Le temps du jeu est corrigé!

    Ajouter un bloc

    Ajouter un bloc Minerai

    Maintenant, aller au paquet net.minecraft.block ,ouvrez le, et faites un double-clic sur Block.java
    Maintenant aller a la ligne 1241. (Les lignes sont sur le coté)
    [​IMG]
    Voici votre fonction. Allez tout en bas.
    [​IMG]
    Donc, la fonction pour ajouter le block est
    registerBlock(198, "ruby_ore", (new BlockOre()) .setHardness(3.0F) .setResistance(5.0F) .setStepSound(soundTypePiston).setUnlocalizedName("oreRuby").setCreativeTab(CreativeTabs.tabBlock));

    Alors pour ajouter le bloc, ajoutez la ligne avant "blockRegistry.validateKey();"
    Code (cpp):
    registerBlock(198, "ruby_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setStepSound(soundTypePiston).setUnlocalizedName("oreRuby").setCreativeTab(CreativeTabs.tabBlock));
           
    [​IMG]

    Maintenant, aller dans le paquet net.minecraft.init et ouvrez blocks.java et items.java

    Dans Blocks.java
    [​IMG]
    Ajoutez à la ligne 237 :
    Code (cpp):
    public static final Block ruby_ore;
    [​IMG]
    descendez à la ligne 453 et ajoutez :
    Code (cpp):
     ruby_ore = getRegisteredBlock("ruby_ore");
    Dans Items.java

    [​IMG]
    Allez à la ligne 204 et ajoutez :
    Code (cpp):
    public static final Item ruby;
    [​IMG]
    Après, allez à la ligne 406 et ajoutez ceci.
    Code (cpp):
    ruby = getRegisteredItem("ruby");
    Maintenant, on va déclarer l'item que va drop le minerai. Nous allons donc dans le paquet net.minecraft.item et ouvrez item.java et allez a la ligne 941 et fait enter.

    [​IMG]
    Ajoutez ces deux lignes :
    Code (cpp):
    registerItemBlock(Blocks.ruby_ore);
    registerItem(432, "ruby", (new ItemRuby()).setUnlocalizedName("ruby"));
    La première sert à faire le rendu de l'item du minerai et l'autres pour déclarer un nouvel items.

    Maintenant, allons dans le paquet net.minecraft.client.renderer.entity et ouvrez RenderItem.java

    Allez tout en bas a la ligne 1043 et ajoutez ces lignes :
    [​IMG]
    Code (cpp):
    this.registerItem(Items.ruby,"ruby");
    this.registerBlock(Blocks.ruby_ore, "ruby_ore");
    Mais maintenant, nous devons ajouter le blockmodel et le blockstate de la 1.8.8!

    ATTENTION
    Minecraft doit être fermer quand vous transféré les assets.


    Veuiller télécharger ce fichier zip, il contient tout les fichiers nécessaires pour cette partie du tutoriel.

    Décompressez-là et vous avez 2 dossiers : Blockstates et models
    Vous avez juste à renommer les fichiers pour le nom du bloc ou le nom de l'item.

    Vous devrez aussi ouvrir les fichiers et changer les nom en dedans aussi.

    Les fichiers sont en format .json. Je vous conseil d'utiliser le logiciel Notepad++ pour ça.

    Quand les fichiers sont correctement renommé, ouvrez le dossier ou vous avez décompiler minecraft, et allez dans jars.
    [​IMG]
    Et allez dans versions, 1.8.8 et faite clic droit sur 1.8.8.jar et ouvrez le avec 7zip ou winrar. Allez dans assets et puis dans minecraft. Vous allez avoir blockstate. Ajoutez si le contenu du dossier blockstates de l'archive. Quand c'est fait, faite précédent et allez dans Models et transféré les deux dossiers.
    Pour les textures, allez dans le dossier textures, blocks et transféré votre texture. Pour la texture d'un item, allez dans textures, items et transféré la texture de l'item.

    Réouvrez minecraft et vous allez voir que vos items ont une texture et un model!
    [​IMG]
    Maintenant, allez dans la classe BlockOre.java et ajoutez ces lignes pour quand on détruit le block, il drop l'item.
    [​IMG]
    Code (cpp):
    this == Blocks.ruby_ore ? Items.ruby : (
    Il va falloir que vous ajoutez une ')' à la fin de la ligne.
    Si vous voulez que le minerai donne de l'expérience, allez à la fonction dropBlockAsItemWithChance.
    [​IMG]
    Et ajoutez ceci.
    Code (cpp):
                else if (this == Blocks.ruby_ore)
                {
                    i = MathHelper.getRandomIntegerInRange(worldIn.rand, 2, 5);
                }
     
    Et voilà! Votre minerai est terminer!
    Résultat final



    Ajouter un Item

    Ajouter un Mob

    Modifier l'interface

    Ajouter de la nourriture

    Ajouter un armure


    Le tutoriel est en cours d'écriture!
     
    • J'aime J'aime x 4
    • Je désapprouve Je désapprouve x 1
    • Utile Utile x 1
    #1 Cobalt Team, 10 Jan 2016
    Dernière édition: 23 Fev 2016
  2. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 234
    Points:
    304
    Sexe:
    Homme
    T'as oublié les 37 conseils du bon moddeur ...

    1. MCreator c'est mal
    2. MCreator c'est nul
    3. MCreator c'est laid
    4. MCreator c'est odorant
    5. MCreator c'est vilain
    6. MCreator c'est horrible
    7. MCreator c'est terrifiant
    8. MCreator c'est caca
    9. MCreator c'est naze
    10. MCreator c'est a cracher
    11. MCreator c'est a vomir
    12. MCreator c'est un cancer
    13. MCreator c'est le cancer
    14. MCreator c'est MCancerator
    15. MCreator contribue a l'expansion du communisme
    16. MCreator c'est idiot
    17. Staline, Kim Jong Il et François Hollande ont utilisé MCreator
    18. MCreator c'est politiquement incorrect
    19. 4CHan c'est propre a coté de MCreator
    20. Le communisme c'est mal
    21. MCreator c'est mal²
    22. MCreator c'est peu viril
    23. MCreator c'est anti-hl3
    24. MCreator est opposé a Gabe Newell
    25. MCreator est du coté d'Apple
    26. MCreator c'est révoltant
    27. MCreator c'est insultant
    28. MCreator c'est décadent
    29. MCreator c'est WOLOLOOOOOOOOOO
    30. MCreator c'est tellement mal que je suis a court de remarques négatives
    31. MCreator soutient le travail des enfants
    32. MCreator dégrade la forêt amazonienne
    33. MCreator c'est trashy
    34. MCreator c'est pornographique
    35. MCreator c'est mal, très
    36. MCreator c'est vraiment mal
    37. Sauvegardez souvent

    Bon tuto sinon, même si je trouve inutile de modder sans Forge mais bon.
     
    • J'aime J'aime x 4
  3. AdiBis

    AdiBis Modérateur

    Inscrit:
    27 Avr 2012
    Messages:
    4 244
    Points:
    224
    Sexe:
    Homme
    Tu n'as pas atteint le point de Godwin en 37 phrases. Je te félicite !
     
    • J'aime J'aime x 2
  4. Hawezo

    Hawezo Mineur de Fer

    Inscrit:
    6 Juin 2013
    Messages:
    545
    Points:
    146
    Sexe:
    Homme
    Hormis les nombreuses fautes d'orthographe, je trouve ton tutoriel assez bien expliqué ^^

    Cependant :
    Si tu veux écrire une puissance, tu peux écrire -2 * 10^9, c'est comme ça qu'on écrit les puissances, de manière générale.

    Quel genre de problème peut arriver ? x)

    Ah, et aussi, tu expliques pas mal de choses qui sont dans le tutoriel du SdZ que tu as mis au début du tutoriel... du coup, ça devient un tutoriel pour débutant, et donc on n'est pas obligés d'aller voir ledit tutoriel pour Java...

    C'est tout, et merci pour le partage ^^
     
    • J'aime J'aime x 1
  5. Cobalt Team

    Cobalt Team Mineur

    Inscrit:
    7 Juin 2015
    Messages:
    325
    Points:
    94
    Sexe:
    Homme
    C'est en travail bien sur ;) Et pour "tutoriel du SdZ " = openclassroom :P
     
  6. Hawezo

    Hawezo Mineur de Fer

    Inscrit:
    6 Juin 2013
    Messages:
    545
    Points:
    146
    Sexe:
    Homme
    Oui, j'ai dis SdZ je voulais dire OpenClassrooms, l'habitude x)
    Sinon, tu n'as pas répondu :
    Quel genre de problème peut-il bien arriver ? :p
     
    • J'approuve J'approuve x 1
  7. Cobalt Team

    Cobalt Team Mineur

    Inscrit:
    7 Juin 2015
    Messages:
    325
    Points:
    94
    Sexe:
    Homme
    Je sais pas... quelqu'un qui fait totalement de la merde quoi xD
     
  8. Weyrox

    Weyrox Enter the World

    Inscrit:
    23 Fev 2016
    Messages:
    37
    Points:
    7
    Sexe:
    Homme
    Un bon tutoriel, mais je vais rester sur forge ^^
     
    • J'aime J'aime x 2
  9. Jodge

    Jodge Explorateur

    Inscrit:
    13 Oct 2013
    Messages:
    65
    Points:
    89
    Sexe:
    Homme
    Autant le début du tutoriel est plutôt bien (quoiqu'il manque une indication sur l'histoire des 1Go limite sur les 32 bit), autant je trouve MCréator plus performant que la suite... Même si les codes sont ignobles (vomitif), au moins ils sont compatible Forge. Je sens venir la vague de kikou : "pk mon mod il est pas compatible avec [insérez ici un mod / modpack], ouin ouin, zé pourtan bien suivi le tuto de cobalt !".
     
    • J'approuve J'approuve x 1
  10. Snowy_1803

    Snowy_1803 Mineur

    Inscrit:
    19 Août 2015
    Messages:
    316
    Points:
    99
    Sexe:
    Homme

Partager cette page