MFF

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

    Comment faire un ItemBlock

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    13 Messages 3 Publieurs 3.3k 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.
    • Cl00e9mentC Hors-ligne
      Cl00e9ment
      dernière édition par

      Salut !

      Pile quand je reviens sur le forum je tombe sur ça 😄 . Je suis donc très heureux de te proposer mon tutoriel qui doit aussi fonctionner pour la 1.11 : https://www.minecraftforgefrance.fr/showthread.php?tid=3718 .
      J’espère qu’il te sera utile  😉 !

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

        @‘TheRedColossus’:

        Salut !

        Pile quand je reviens sur le forum je tombe sur ça 😄 . Je suis donc très heureux de te proposer mon tutoriel qui doit aussi fonctionner pour la 1.11 : https://www.minecraftforgefrance.fr/showthread.php?tid=3718 .
        J’espère qu’il te sera utile  😉 !

        Merci, mais il me reste quelques petits problèmes
        déjà pourrais-tu me valider si j’ai bien refait ma classe BlocksMod s’il te plait ?

        
        package fr.jules552.mod.init;
        
        import net.minecraft.block.Block;
        import net.minecraft.block.material.MapColor;
        import net.minecraft.block.material.Material;
        import net.minecraft.client.Minecraft;
        import net.minecraft.client.renderer.block.model.ModelResourceLocation;
        import net.minecraft.creativetab.CreativeTabs;
        import net.minecraft.init.Blocks;
        import net.minecraft.init.Items;
        import net.minecraft.item.Item;
        import net.minecraft.item.ItemBlock;
        import net.minecraft.item.ItemPickaxe;
        import net.minecraft.item.ItemStack;
        import net.minecraftforge.client.model.ModelLoader;
        import net.minecraftforge.fml.common.registry.GameRegistry;
        import net.minecraftforge.fml.relauncher.Side;
        import net.minecraftforge.fml.relauncher.SideOnly;
        import Blocks.AdamantiumMinerai;
        import Blocks.AluminiumMinerai;
        import Blocks.BlockSilver;
        import Blocks.BlockXray;
        import Blocks.LumineuxBlock;
        import Blocks.PadBounceBlue;
        import Blocks.PadBounceGreen;
        import Blocks.PadBounceRed;
        import Blocks.SilverMinerai;
        import fr.jules552.mod.Reference;
        
        public class BlocksMod 
        {
        
        public static final Block ADAMANTIUM_BLOCK = new AdamantiumMinerai(Material.IRON).setRegistryName("adamantium_block").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block ADAMANTIUM_ORE = new AdamantiumMinerai(Material.ROCK).setRegistryName("adamantium_ore").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block SILVER_BLOCK = new SilverMinerai(Material.IRON).setRegistryName("silver_block").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block SILVER_ORE = new SilverMinerai(Material.ROCK).setRegistryName("silver_ore").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block ALUMINIUM_BLOCK = new AluminiumMinerai(Material.ROCK).setRegistryName("aluminium_block").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block ALUMINIUM_ORE = new AluminiumMinerai(Material.ROCK).setRegistryName("aluminium_ore").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block LIGHT_BLOCK = new LumineuxBlock(Material.BARRIER).setRegistryName("light_block").setCreativeTab(ItemsMod.tabCustomTab).setBlockUnbreakable().setLightLevel(1.0F);
        public static final Block XRAY_BLOCK = new LumineuxBlock(Material.GLASS).setRegistryName("xray_block").setCreativeTab(ItemsMod.tabCustomTab).setHardness(5.0F);
        public static final Block BOUNCE_PAD_RED = new LumineuxBlock(Material.ROCK).setRegistryName("bounce_pad_red").setCreativeTab(ItemsMod.tabCustomTab).setHardness(0.0F);
        public static final Block BOUNCE_PAD_BLUE = new LumineuxBlock(Material.ROCK).setRegistryName("bounce_pad_blue").setCreativeTab(ItemsMod.tabCustomTab).setHardness(0.0F);
        public static final Block BOUNCE_PAD_GREEN = new LumineuxBlock(Material.ROCK).setRegistryName("bounce_pad_green").setCreativeTab(ItemsMod.tabCustomTab).setHardness(0.0F);
        
        public static void registerBlocks (){
         GameRegistry.register (ADAMANTIUM_BLOCK);
         GameRegistry.register (ADAMANTIUM_ORE);
         GameRegistry.register (SILVER_BLOCK);
         GameRegistry.register (SILVER_ORE);
         GameRegistry.register (ALUMINIUM_BLOCK);
         GameRegistry.register (ALUMINIUM_ORE);
         GameRegistry.register (LIGHT_BLOCK);
         GameRegistry.register (XRAY_BLOCK);
         GameRegistry.register (BOUNCE_PAD_RED);
         GameRegistry.register (BOUNCE_PAD_BLUE);
         GameRegistry.register (BOUNCE_PAD_GREEN);
        }
        
        public static void register()
        {
        //Les Crafts
        
        //Crafts pour Adamantium
        GameRegistry.addSmelting(BlocksMod.ADAMANTIUM_ORE, new ItemStack(ItemsMod.adamantium_ingot), 1.8F);
        GameRegistry.addRecipe(new ItemStack(BlocksMod.ADAMANTIUM_BLOCK, 1), new Object[] {"###", "###","###", '#', ItemsMod.adamantium_ingot});
        GameRegistry.addShapelessRecipe(new ItemStack(ItemsMod.adamantium_ingot,9), new ItemStack(BlocksMod.ADAMANTIUM_BLOCK));
        
        //Crafts pour Silver
        GameRegistry.addSmelting(BlocksMod.SILVER_ORE, new ItemStack(ItemsMod.silver_ingot), 0.8F);
        GameRegistry.addRecipe(new ItemStack(BlocksMod.SILVER_BLOCK, 1), new Object[] {"###", "###","###", '#', ItemsMod.silver_ingot});
        GameRegistry.addShapelessRecipe(new ItemStack(ItemsMod.silver_ingot,9), new ItemStack(BlocksMod.SILVER_BLOCK));
        
        //Crafts pour Aluminium
        GameRegistry.addSmelting(BlocksMod.ALUMINIUM_ORE, new ItemStack(ItemsMod.aluminium_ingot), 0.7F);
        GameRegistry.addRecipe(new ItemStack(BlocksMod.ALUMINIUM_BLOCK, 1), new Object[] {"###", "###","###", '#', ItemsMod.aluminium_ingot});
        GameRegistry.addShapelessRecipe(new ItemStack(ItemsMod.aluminium_ingot,9), new ItemStack(BlocksMod.ALUMINIUM_BLOCK));
        
          //Crafts pour SpecialBlocks
        GameRegistry.addRecipe(new ItemStack(BlocksMod.XRAY_BLOCK, 1), new Object[] {"###", "#/#","###", '/', BlocksMod.ADAMANTIUM_BLOCK, '#', Blocks.GLASS});
        
        }
        
        @SideOnly (Side.CLIENT)
        public static void registerItemBlockModels (){
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (ADAMANTIUM_BLOCK), 0, new ModelResourceLocation (Reference.MOD_ID+":adamantium_block", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (ADAMANTIUM_ORE), 0, new ModelResourceLocation (Reference.MOD_ID+":adamantium_ore", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (SILVER_BLOCK), 0, new ModelResourceLocation (Reference.MOD_ID+":silver_block", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (SILVER_ORE), 0, new ModelResourceLocation (Reference.MOD_ID+":silver_ore", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (ALUMINIUM_BLOCK), 0, new ModelResourceLocation (Reference.MOD_ID+":aluminium_block", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (ALUMINIUM_ORE), 0, new ModelResourceLocation (Reference.MOD_ID+":aluminium_ore", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (LIGHT_BLOCK), 0, new ModelResourceLocation (Reference.MOD_ID+":light_block", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (XRAY_BLOCK), 0, new ModelResourceLocation (Reference.MOD_ID+":xray_block", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (BOUNCE_PAD_RED), 0, new ModelResourceLocation (Reference.MOD_ID+":bounce_pad_red", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (BOUNCE_PAD_BLUE), 0, new ModelResourceLocation (Reference.MOD_ID+":bounce_pad_blue", "inventory"));
         ModelLoader.setCustomModelResourceLocation (Item.getItemFromBlock (BOUNCE_PAD_GREEN), 0, new ModelResourceLocation (Reference.MOD_ID+":bounce_pad_green", "inventory"));
        }
        
        private static void registerItemBlock (Block block){
        
         ItemBlock adamantium_ItemBlock = new ItemBlock (ADAMANTIUM_BLOCK);
         adamantium_ItemBlock.setRegistryName (ADAMANTIUM_BLOCK.getRegistryName());
         GameRegistry.register (adamantium_ItemBlock);
        
         ItemBlock adamantium_ItemOre = new ItemBlock (ADAMANTIUM_ORE);
         adamantium_ItemOre.setRegistryName (ADAMANTIUM_ORE.getRegistryName());
         GameRegistry.register (adamantium_ItemOre);
        
         ItemBlock silver_ItemBlock = new ItemBlock (SILVER_BLOCK);
         silver_ItemBlock.setRegistryName (SILVER_BLOCK.getRegistryName());
         GameRegistry.register (silver_ItemBlock);
        
         ItemBlock silver_ItemOre = new ItemBlock (SILVER_ORE);
         silver_ItemOre.setRegistryName (SILVER_ORE.getRegistryName());
         GameRegistry.register (silver_ItemOre);
        
         ItemBlock aluminium_ItemBlock = new ItemBlock (ALUMINIUM_BLOCK);
         aluminium_ItemBlock.setRegistryName (ALUMINIUM_BLOCK.getRegistryName());
         GameRegistry.register (aluminium_ItemBlock);
        
         ItemBlock aluminium_ItemOre = new ItemBlock (ALUMINIUM_ORE);
         aluminium_ItemOre.setRegistryName (ALUMINIUM_ORE.getRegistryName());
         GameRegistry.register (aluminium_ItemOre);
        
         ItemBlock light_ItemBlock = new ItemBlock (LIGHT_BLOCK);
         light_ItemBlock.setRegistryName (LIGHT_BLOCK.getRegistryName());
         GameRegistry.register (light_ItemBlock);
        
         ItemBlock xray_ItemBlock = new ItemBlock (XRAY_BLOCK);
         xray_ItemBlock.setRegistryName (XRAY_BLOCK.getRegistryName());
         GameRegistry.register (xray_ItemBlock);
        
         ItemBlock bounce_pad_ItemBlockRed = new ItemBlock (BOUNCE_PAD_RED);
         bounce_pad_ItemBlockRed.setRegistryName (BOUNCE_PAD_RED.getRegistryName());
         GameRegistry.register (bounce_pad_ItemBlockRed);
        
         ItemBlock bounce_pad_ItemBlockBlue = new ItemBlock (BOUNCE_PAD_BLUE);
         bounce_pad_ItemBlockBlue.setRegistryName (BOUNCE_PAD_BLUE.getRegistryName());
         GameRegistry.register (bounce_pad_ItemBlockBlue);
        
         ItemBlock bounce_pad_ItemBlockGreen = new ItemBlock (BOUNCE_PAD_GREEN);
         bounce_pad_ItemBlockGreen.setRegistryName (BOUNCE_PAD_GREEN.getRegistryName());
         GameRegistry.register (bounce_pad_ItemBlockGreen);
        }
        
        }
        
        

        Seconde question, je met quoi du coup dans ma classe ClientProxy?

        
        package fr.jules552.mod.proxy;
        
        import fr.jules552.mod.init.ItemsMod;
        import net.minecraft.block.Block;
        import net.minecraft.client.Minecraft;
        import net.minecraft.client.renderer.block.model.ModelResourceLocation;
        import net.minecraft.item.Item;
        import fr.jules552.mod.init.BlocksMod;
        
        public class ClientProxy extends CommonProxy {
        @Override
        public void registerRenders() {
        ItemsMod.registerRenders();
        BlocksMod.register();
        
        }
        
        }
        
        

        De même pour ma class Adamantium ? :

        
        package fr.jules552.mod;
        
        import fr.jules552.mod.WorldGeneration.GenerationHelper;
        import fr.jules552.mod.init.BlocksMod;
        import fr.jules552.mod.init.ItemsMod;
        import fr.jules552.mod.proxy.CommonProxy;
        import net.minecraft.init.Blocks;
        import net.minecraft.item.ItemStack;
        import net.minecraftforge.common.MinecraftForge;
        import net.minecraftforge.fml.client.registry.ClientRegistry;
        import net.minecraftforge.fml.common.Mod;
        import net.minecraftforge.fml.common.Mod.EventHandler;
        import net.minecraftforge.fml.common.SidedProxy;
        import net.minecraftforge.fml.common.event.FMLInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
        import net.minecraftforge.fml.common.registry.GameRegistry;
        import net.minecraftforge.oredict.OreDictionary;
        
        @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION)
        
        public class Adamantium {
        
        @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
        public static CommonProxy proxy;
        
        @EventHandler
        public void preInit(FMLPreInitializationEvent event) {
        ItemsMod.init();
        ItemsMod.register();
        
        BlocksMod.register();
        
        // Système de Générération
        OreDictionary.registerOre("AdamantiumOre", new ItemStack(BlocksMod.ADAMANTIUM_ORE));
        OreDictionary.registerOre("SilverOre", new ItemStack(BlocksMod.SILVER_ORE));
        OreDictionary.registerOre("AluminiumOre", new ItemStack(BlocksMod.ALUMINIUM_ORE));
        GameRegistry.registerWorldGenerator(new GenerationHelper(), 2);
        
        }
        
        @EventHandler
        public void init(FMLInitializationEvent event) {
        
        proxy.registerRenders();
        
        }
        
        @EventHandler
        public void postInit(FMLPostInitializationEvent event) {
        
        }
        }
        
        

        Merci encore pour ton tutoriel très complet ^^

        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

          GameRegistry.register(new ItemBlock(tonBlock), tonBlock.getRegistryName());

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

            @‘robin4002’:

            GameRegistry.register(new ItemBlock(tonBlock), tonBlock.getRegistryName());

            Merci, cette fois-ci les items sont bien générés mais reste 2 problèmes, les items s’appellent tous “till.null.name” (même si l’ID est bon avec adamantium:…) et aucune texture en conséquent n’est appliqué, de où pourrai venir le problème ?

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

              Tes proxis sont mal gérés j’ai l’impression. Toutes les preinit, init et postinit doivent être gérés dans les proxis. La classe du mod redirige juste vers le bon proxi. Essaye de revoir les tutos de mff.

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

                @‘TheRedColossus’:

                Tes proxis sont mal gérés j’ai l’impression. Toutes les preinit, init et postinit doivent être gérés dans les proxis. La classe du mod redirige juste vers le bon proxi. Essaye de revoir les tutos de mff.

                Surement, Ils fonctionnaient très bien avant mais bon avec cette update… le problème c’est que j’utilise absolument pas les même méthode de rangement etc dans le code et du coup je suis un peu perdu avec les tutoriels… et j’ai franchement pas envie de tout réécrir, je pense qu’il y a un problème à fixé dans tous ce qui est preInit, init et postinit effectivement mais le problème c’est de savoir où…

                tu n’aurais pas un exemple à me montrer de la classe ou tu gères tout ça? pour m’en inspirer 🙂

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

                  Le proxi commun enregistre un peu tous sauf les textures et les modèles.

                  Le proxi server hérite du commun donc il fait la même chose.

                  Pareil que le proxi client : il hérite du commun donc il fait la même chose que le commun mais en plus il va gérer les textures et les modèles. Ce qui est logique parceque le client s’occupe de l’affichage.

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

                    @‘TheRedColossus’:

                    Le proxi commun enregistre un peu tous sauf les textures et les modèles.

                    Le proxi server hérite du commun donc il fait la même chose.

                    Pareil que le proxi client : il hérite du commun donc il fait la même chose que le commun mais en plus il va gérer les textures et les modèles. Ce qui est logique parceque le client s’occupe de l’affichage.

                    Sans être méchant ça m’aide pas beaucoup, quand je regarde le tutoriel que tu m’as envoyé quasiment tout est différent et mis à des places différents ou ne ressemblant pas vraiment à ce que j’ai. Je suis un peu bloqué là…  😢

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

                      Bien sûr que j’ai un exemple à te montrer je t’envoie ça demain 18h ou 7h si j’ai le temps parceque là je suis sur mon téléphone. C’est super galère :@ .

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

                        Si tu veux tu m’envoie ton skype par mail ou MP et demain soir je me ferai un plaisir de tous t’expliquer.

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

                          @‘TheRedColossus’:

                          Bien sûr que j’ai un exemple à te montrer je t’envoie ça demain 18h ou 7h si j’ai le temps parceque là je suis sur mon téléphone. C’est super galère :@ .

                          Je comprend, c’est quand même sympa de ta part de m’avoir aider, ne t’inquiète pas après ça presse pas ^^ , tant que ça m’évite de devoir réecrir le mod en entier 🙂

                          J’ai juste une question, pourquoi LexManos a modifié le fonctionnement en faites ? Il y a un vrai intérêt technique derrière ou ? Si quelqu’un pouvait me répondre la dessus ça serait sympa aussi 🙂

                          Et bien alors à demain TheRedColossus et Merci encore de ton aide 🙂

                          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

                            Le registre a été réécrit avec un code plus efficace.
                            Lorsqu’il y a changement dans forge c’est toujours pour améliorer, pas juste pour casser les pieds des moddeurs.

                            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