Problème erreur de la part de register(block)



  • Bonjour je me suis mis sur la nouvelle version de minecraft forge 1.12 et j'ai une erreur étrange aux niveaux de gamerestry.register(block)

    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.block.model.ModelResourceLocation;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemBlock;
    import net.minecraftforge.client.model.ModelLoader;
    import net.minecraftforge.fml.common.FMLCommonHandler;
    import net.minecraftforge.fml.common.registry.GameRegistry;
    
    public class ModBlocks {
    public ModBlocks(){
    init();
    registerBlocks();
    registerItemBlocks();
    if(FMLCommonHandler.instance().getSide().isClient())
    registerRenders();
    }
    public static Block orangeneon;
    private void init(){
    orangeneon = new Block(Material.IRON).setRegistryName("orangeneon").setUnlocalizedName("orangeneon").setHardness(2.0f).setResistance(1.5f).setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
    }
    private void registerBlocks(){
    registerBlock(orangeneon);
    }
    private void registerRenders(){
    registerRender(orangeneon,0);
    }
    
    private void registerItemBlocks(){
    registerItemBlock(orangeneon);
    }
    /*******************************/
    private void registerBlock(Block block){
    GameRegistry.register(block);
    
    }
    private void registerRender(Block block, int meta){
    Item item = Item.getItemFromBlock(block);
    ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(),"inventory"));
    
    }
    private void registerItemBlock(Block block){
    ItemBlock ib = new ItemBlock(block);
    ib.setRegistryName(block.getRegistryName());
    GameRegistry.register(ib); il me dis comme ceci:the methode register(K)frome type GamesRegistry is not visible
    
    }
    }
    

    voila merci



  • Salut,

    private void registerBlock(Block block){
    GameRegistry.register(block);
    
    }
    

    Ca devrait être

    private static void registerBlock(Block block){
    GameRegistry.register(orangeneon);
    
    }
    


  • Euh…non c'est très bien comme c'est, car si il ajoute des blocks par la suite il faut laisser ça.

    Par contre en 1.11 je sais que GameRegistry.register(...) est dépréciée et elle est documentée comme allant être retirée.
    Il faut maintenant faire comme indiqué dans ce tutoriel https://www.minecraftforgefrance.fr/showthread.php?tid=4374 pour enregistrer des blocs.



  • Oups my bad, effectivement j'ai oublié que j'ai pas fait par rapport au tuto ^^



  • je doit le remplacer par quoi le GameRegister.register pour les block car les object et item fonctionne tres bien sauf pour les block.



  • En 1.12 et plus, c'est "mieux" d'utiliser les events pour faire tout ça. Un exemple de classe pour register tes blocks :

    
    public static BlockTest BLOCK_TEST = new BlockTest();
    public static BlockTest2 BLOCK_TEST2 = new BlockTest2();
    public static BlockTest3 BLOCK_TEST3 = new BlockTest3();
    public static BlockTest4 BLOCK_TEST4 = new BlockTest4();
    
        @Mod.EventBusSubscriber
        public static class RegistrationHandler {
    
            @SubscribeEvent
            public static void registerBlocks(final RegistryEvent.Register <block>event) {
    
                final IForgeRegistry <block>registry = event.getRegistry();
    
                final Block[] blocks = {
                        BLOCK_TEST,
                        BLOCK_TEST2,
                        BLOCK_TEST3,
                        BLOCK_TEST4,
                };
    
                registry.registerAll(blocks);
            }
    
            public static final Set <itemblock>ITEM_BLOCKS = new HashSet<>();
    
            @SubscribeEvent
            public static void registerItemBlocks(final RegistryEvent.Register event) {
    
                final ItemBlock[] items = {
                        new ItemBlock(BLOCK_TEST),
                        new ItemBlock(BLOCK_TEST2),
                        new ItemBlock(BLOCK_TEST3),
                        new ItemBlock(BLOCK_TEST4),
                };
    
                final IForgeRegistry registry = event.getRegistry();
    
                for (final ItemBlock item : items) {
                    final Block block = item.getBlock();
                    final ResourceLocation registryName = Preconditions.checkNotNull(block.getRegistryName(), "Block %s has null registry name", block);
                    registry.register(item.setRegistryName(registryName));
                    ITEM_BLOCKS.add(item);
                }
            }
        }
    
    

    Je te laisse deviner pour les modèles 🙂


    PS: Je rajouterai juste que tu peux utiliser ce site génial : http://tabstospaces.com/ pour que ton code soit espacé même dans le forum (ça convertit tous tes \t (tabulations) en espaces 🙂 )</itemblock></block></block>


  • Rédacteurs

    Surtout que la 1.12 n'est pas encore réellement sortie et que LexManos ré-écrit le système de registre. Dans le nouveau système GameRegistry#register est privé donc vous ne pourrez plus l'utiliser 😄



  • je vais laisser tomber la 1.12 pour le moment et attendre que quel q'un fasse une video tuto.



  • @'BrokenSwing':

    Surtout que la 1.12 n'est pas encore réellement sortie et que LexManos ré-écrit le système de registre. Dans le nouveau système GameRegistry#register est privé donc vous ne pourrez plus l'utiliser 😄

    J'ai tout qui tourne sous 1.12, et je trouve que tout est plus simple au contraire 😛


  • Rédacteurs

    Je n'ai pas dit qu'on ne pouvait pas encore utiliser la 1.12 mais il n'y a pas encore de release stable (voir ici http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.html). Et de plus je n'ai pas non plus dit que c'était compliqué, je suis au contraire très content qu'ils aient enlever le GameRegister#register, j'indiquait seulement que dans les builds actuels GaemeRegistry#register est encore disponible mais que dès lors qu'une version stable de 1.12 sera dispo, il n'y sera plus.



  • @'BrokenSwing':

    Je n'ai pas dit qu'on ne pouvait pas encore utiliser la 1.12 mais il n'y a pas encore de release stable (voir ici http://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.html). Et de plus je n'ai pas non plus dit que c'était compliqué, je suis au contraire très content qu'ils aient enlever le GameRegister#register, j'indiquait seulement que dans les builds actuels GaemeRegistry#register est encore disponible mais que dès lors qu'une version stable de 1.12 sera dispo, il n'y sera plus.

    C'est pour ça que dans la réponse que j'ai posté je n'utilise nulle part GameRegister#register.



  • oui j'ai vue ça il faut pratiquement faire c'est block par tileEntitie et pareille pour les items pour L’instant cette version de forge minecraft n'est pas trop conseiller pour les débutant et personne qui ne sait pas coder a 75% sur java.
    Sais assie l'ancien mainteneur de buildcraft qui ma la dit direct sur sont live.merci pour le tuyau Dylem.

    pour L’instant je vais rester sur la 1.10.2.


  • Rédacteurs

    Tu peux parfaitement commencer par la version 1.12, une release est sortie mercredi dernier. Débutant ou pas, rien ne t'empêche de modder en 1.12



  • oui un seul sais que je suis habituer avec gameregistry.register() mais ca changer je sais pas par quoi exactement il a pas de exemples et en plus les sever en 1.12 ca lag comme pas possible.