MFF

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

    Un bloc basique

    Planifier Épinglé Verrouillé Déplacé Les blocs
    1.6.x
    70 Messages 19 Publieurs 32.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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par robin4002

      Nous allons maintenant commencer notre premier bloc.

      Pre-requis

      • La classe principale et les proxys

      Dans la classe principale

      À la suite de la déclaration de votre instance, déclarez votre bloc comme ceci :

          public static Block BlockTutorial;
      

      Pensez à importer “net.minecraft.block.Block”
      Si vous voulez créer plusieurs blocs, vous pouvez les déclarer à la suite de cette façon :

          public static Block BlockTutorial, DeuximeBlock, TroixiemeBlock;
      

      Ensuite dans la partie @PreInit, vous allez ajouter ceci :

          BlockTutorial = new BlockTutorial(2000).setHardness(1.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("BlockTutorial").setTextureName("modtutoriel:BlockTutorial");
      

      2000 est l’id du bloc (les ids de bloc vont de 0 à 4095, les ids de 0 à 600 sont à éviter pour ne pas avoir de conflit avec les id de minecraft), setHardness correspond à la résistance du bloc par rapport à la pioche (ou à la main) et setResistance est la résistance aux explosions, setStepSound défini le son du bloc et setTextureName défini la texture (nous reviendrons dessus plus tard)
      Pour la liste les sons possible :

      • soundPowderFootstep = son par défaut, le même que soundStoneFootstep
      • soundWoodFootstep = son du bois
      • soundGravelFootstep = son du gravier
      • soundGrassFootstep = son de l’herbe, des pousses, des feuilles …
      • soundStoneFootstep = son de la pierre
      • soundMetalFootstep = son des blocs de fer, or, diamant (c’est le même que la pierre)
      • soundGlassFootstep = son du verre
      • soundClothFootstep = son de laine
      • soundSandFootstep = son du sable
      • soundSnowFootstep = son de la neige
      • soundLadderFootstep = son de l’échelle
      • soundAnvilFootstep = son de l’enclume

      Juste en dessous, ajoutez :

      GameRegistry.registerBlock(BlockTutoriel, "BlockTutoriel");
      

      Il vous restera une erreur sur “new BlockTutoriel”, créez cette classe.

      La classe du bloc

      Vous allez avoir une classe qui ressemble à ça :

      package tutoriel.common;
      
      public class BlockTutoriel
      {
      
      }
      

      Ajoutez extends Block après “public class BlockTutoriel”. Importez “net.minecraft.block.Block”. Maintenant vous allez avoir une erreur sur “BlockTutoriel”, passez la souris dessus et faite "add constructor ‘BlockTutoriel(int, Material)’
      Vous allez obtenir un contructeur comme ceci :

          public BlockTutoriel(int par1, Material par2Material)
          {
              super(par1, par2Material);
          }
      

      Nous allons le modifier de cette façon la :

          public BlockTutoriel(int id)
          {
              super(id, Material.rock);
              this.setCreativeTab(CreativeTabs.tabBlock);
          }
      

      Material.rock est le matériel, avec le type rock le bloc ne peut que être dropé avec une pioche. Pour la liste des matériels, fait ctrl + clic sur Material, la classe Material va s’ouvrir, il y tout dedans.
      Pensez à changer les paramètres du type par1, par2, par3, etc. par ce qui correspond, on s’y retrouve beaucoup mieux avec des noms corrects.

      Les ressources du bloc (texture + nom)

      Dans la classe principale, j’ai utilisé cette fonction : .setTextureName(“modtutoriel:BlockTutorial”)
      modtutoriel correspond à mon modid sans aucune majuscule, il ne faut pas en mettre. BlockTutorial est le nom de ma texture

      Pour l’emplacement de la texture, allez dans votre dossier forge/mcp/src/minecraft
      Dans ce dossier se trouvent les sources du jeu. Vous devrez normalement y voir un dossier du même nom que votre package, tutoriel dans mon cas. Créez un nouveau dossier et nommez-le “assets” (Pour ceux qui ont une version récente de forge, ce dossier existe déjà). À l’intérieur de ce dossier, créez un autre dossier et nommez-le avec votre modid sans majuscule, modtutoriel dans mon cas. À nouveau, dans ce dossier créez un autre dossier nommé textures. Dans le dossier texture, créez le dossier blocks
      Nous avons donc 4 dossiers : assets/modtutoriel/textures/blocks/
      Maintenant dans le dossier blocks, créez votre fichier .png de 16x16 nommé BlockTutoriel, ce qui correspond à la partie après le “:”. (vous pouvez aussi faire des textures plus grandes, mais elles seront plus lourdes à charger)
      Par ailleurs, lorsque vous compilerez votre mods, pensez à placer le dossier mods qui se trouve dans /forge/mcp/src/minecraft dans l’archive de votre mods, sinon les textures seront manquantes.

      Retournez dans le dossier qui porte comme nom votre modid, “modtutoriel” dans mon cas. Créez un nouveau dossier nommé “lang”
      Dans ce dossier, créer un nouveau fichier en_US avec l’extension .lang. Pour ça, ouvrez votre éditeur de texte (notepad ++ comme je vous l’ai conseillé si possible), faite un nouveau fichier, cliquez sur enregistrer sous et cochez “All type (.)”
      Dans ce fichier, ajoutez tile.«le nom non localisé de votre bloc (celui dans setUnlocalizedName(“”))».name=«le nom en jeu»
      Par exemple :

      tile.BlockTutorial.name=Block Tutorial
      

      /!\ Il ne doit pas avoir d’espace entre le nom non localisé, l’égale, et le nom localisé /!\
      Vous pouvez aussi créer les autres fichiers de langage, fr_FR, etc …
      /!\ Vérifiez que le fichier est encodé en UTF-8 sans BOM, avec notepad ++, cliquez sur Encodage puis “encoder en UTF-8 (sans BOM)”, sinon vous aurez des problèmes avec les accents /!

      Rendu final

      Voir les changements sur Github

      Un bloc moddé sous Minecraft

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

        le “GameRegistry.registerBlock()” doit etre dans le “PreInit()” maintenant ? 😕

        ma vie de minecraftien: Ulyssecraft

        1 réponse Dernière réponse Répondre Citer 0
        • elias54E Hors-ligne
          elias54 Administrateurs
          dernière édition par

          Pas forcément, moi je le mets dans le post init, et cela marche très bien.

          Mon site | GitHub

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

            Ah! … En effet , j’ai fait une petite expérience en changeant les lignes de codes de fonctions et je dirais que peut importe dans quelles fonction elles sont , du moment qu’elle sont dans le bon ordre ca fonctionne.

            ma vie de minecraftien: Ulyssecraft

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

              A mon avis il manquent quelques fonctions importantes à expliquer et qui ne sont pourtant nul part dans les tuto du forum:
              LanguageRegistry.addName(Object toName, String readableName); pour ajouter un nom “lisable” et
              MinecraftForge.setBlockHarvestLevel(Block block, String toolClass, int tier);

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

                LanguageRegistry.addName(Object toName, String readableName);
                Plus besoin en 1.6.2, ils faut juste crée un fichier .lang dans assets/modid/lang/, par defaut: en_US.lang et après dedans:
                tile.nom non localisé.name=nom localisé

                MinecraftForge.setBlockHarvestLevel(Block block, String toolClass, int tier);
                Oui, il faudrait l’ajouter.


                Mettez à jours vers la dernière version stable (1.8.9 voir même…

                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

                  LanguageRegistry sera retiré en 1.7, obsolète, à ne plus utiliser, les fichiers de lang externe sont bien plus intéressant. (cf : Deprecate LanguageRegistry)

                  Pour le setToolClass, surement dans un autre tutoriel pour customiser son bloc.

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

                    LanguageRegistry sera retiré en 1.7, obsolète, à ne plus utiliser, les fichiers de lang externe sont bien plus intéressant. (cf : Deprecate LanguageRegistry)

                    A d’accord vu que je me demandais lequel des deux il fallait mieux utiliser vu que sur le wiki anglais de forge le code n’a sans doute pas été mis à jours

                    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

                      @‘robin4002’:

                      En conséquence, utilisez une version des sources de forge supérieur à 9.10.1.849 pour suivre les tutoriels.

                      Je pense que vais l’ajouter au tutoriel de l’installation de forge.

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

                        J’aurais une question je voudrais creer mon bloc de dirt personalisé mais je veux qu’il ait les meme propriétés a savoir etre labourré pouvoir y planter des saplings etc
                        merci 🙂

                        Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                        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

                          Regarde canSustainPlant dans Block.java.
                          Et pour être labouré, EventHoe.
                          http://www.minecraftforgefrance.fr/showthread.php?tid=181&pid=1855#pid1855

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

                            j’ai beau essayer mon bloc n’accueille pas les saplings
                            je comprends pas pourquoi

                            j’ai une erreur a :
                            .canThisPlantGrowOnThisBlockID

                            je suis pas sur mais sans sa on peut pas poser de saplings si je comprends bien
                            il me dit que la methode n’est pas visible

                            Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                            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

                              Oups, il y a 500 fois plus simple.
                              Dans le constructeur de ton bloc :
                              Material.ground
                              Et voila.

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

                                perso sa ne change rien

                                Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                                1 réponse Dernière réponse Répondre Citer 0
                                • Superloup10S Hors-ligne
                                  Superloup10 Modérateurs
                                  dernière édition par

                                  Essaye de faire un extends BlockDirt

                                  Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

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

                                    sa me met une erreur a :
                                    super(id, Material.ground);
                                    ( meme si je change ground en autre chose )

                                    Edit : j’ai enlever la ligne super(id, Material.ground);
                                    sa marche mais le blocs reste un bloc basique

                                    Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Superloup10S Hors-ligne
                                      Superloup10 Modérateurs
                                      dernière édition par

                                      laisse super(id) et ensuite pour que ton bloc soit labouré, il faut créer un nouveau bloc qui est les mêmes caractéristiques que la terre labourée.

                                      Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

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

                                        Pour le bloc labouré je sais comment faire moi je veux juste qu’on puisse y planter des saplings pour le moment
                                        et sa change toujours rien.

                                        Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

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

                                          Salut,
                                          j’ai essayé d’utiliser une fonction pour définir la texture du bloc avec OnBlockAdded, mais mon block n’a toujours pas de texture …
                                          Une idée ?

                                          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

                                            La fonction pour la texture se met dans le constructeur, pas dans onBlockAdded.

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB