Crash item



  • J'ai créer un item simple et cela crash etje ne sait pas ou placer le fichier json ni comment il est implanter dans le code sinon voici tout les détails et il n'ya a pas d'erreur dans eclipse

    :::

    package fr.amelya.mod.common;
    
    import fr.amelya.mod.common.items.itemTest;
    import fr.amelya.mod.proxy.CommonProxy;
    import net.minecraft.item.Item;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.Mod.Instance;
    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;
    
    @Mod(modid = References.MOD_ID, name = References.MOD_NAME, version = References.VERSION)
    
    public class MainClass
    {
    /* ITEMS */
    
    public static Item itemTest;
    
    /* FIN ITEMS */
    
    @Instance("amelya")
    public static MainClass instance;
    
    @SidedProxy(clientSide = References.CLIENT_PROXY_CLASS, serverSide = References.COMMON_PROXY_CLASS)
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
    
    itemTest = new itemTest();
    
    GameRegistry.registerItem(itemTest, "itemTest");
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
    proxy.registerRender();
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
    
    }
    }
    
    

    :::

    :::

    package fr.amelya.mod.common;
    
    public class References
    {
    
    public static final String MOD_ID = "amelya";
    public static final String MOD_NAME = "ModAmelya";
    public static final String VERSION = "1.0";
    public static final String CLIENT_PROXY_CLASS = "fr.amelya.mod.proxy.ClientProxy";
    public static final String COMMON_PROXY_CLASS = "fr.amelya.mod.proxy.CommonProxy";
    
    }
    
    

    :::

    :::

    package fr.amelya.mod.common.items;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    
    public class itemTest extends Item {
    
       public itemTest()
       {
        this.setUnlocalizedName("itemTest");
        this.setCreativeTab(CreativeTabs.tabMisc);
       }
    
    }
    
    

    :::

    :::

    package fr.amelya.mod.proxy;
    
    import fr.amelya.mod.common.MainClass;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.entity.RenderItem;
    import net.minecraft.client.resources.model.ModelResourceLocation;
    
    public class ClientProxy extends CommonProxy
    {
    RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem();
    
    @Override
    public void registerRender()
    {
    registerMesher.getItemModelMesher().register(MainClass.itemTest, 0, new ModelResourceLocation("amelya" + ":itemTest", "inventory"));
    }
    
    }
    
    

    :::

    log : http://pastebin.com/Xm68nmHu

    Crash : http://pastebin.com/AYD1ZDFH


  • Rédacteurs

    Essai de décortiquer pour voir où est le NPE exactement

    
    @Override
    public void registerRender()
    {
    RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem();
    ItemModelMesher mesher = registerMesher.getItemModelMesher();
    ModelResourceLocation = new ModelResourceLocation("amelya" + ":itemTest", "inventory");
    mesher.register(MainClass.itemTest, 0, model);
    }
    
    


  • j'ai pas tout compris et il ya des erreurs avec ce code et c'est quoi le npe et je n'ao trouver aucune video ou page expliquant la base de la 1.8 pas comme la 1.7 ou je savais tout


  • Rédacteurs

    Remplace ta fonction registerRender() par ça :

    
    @Override
    public void registerRender() {
    RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem();
    ItemModelMesher mesher = registerMesher.getItemModelMesher();
    ModelResourceLocation model = new ModelResourceLocation("amelya" + ":itemTest", "inventory");
    mesher.register(MainClass.itemTest, 0, model);
    }
    
    

    Lance le jeu, et renvoie le crashReport

    (Pour les bases, c'est plus ou moins pareil qu'en 1.7 sauf le proxy qui est expliqué dans le tutoriel pour créer un item)



  • ok merci faut mettre sa a cahque nouvel item ?

    ModelResourceLocation model =  new ModelResourceLocation("amelya" + ":itemTest", "inventory");
    mesher.register(MainClass.itemTest, 0, model); en chageant le nom bien sur

    et sinon le json on le met bien a la racine de src/ressource ?


  • Rédacteurs

    Je te conseil de regarder le tutoriel 1.8 sur la façon de créer un item simple, dedans tu verra comment enregistrer les textures facilement, et où mettre les json, parce que pour les blocs il en faut 3, et 1 pour les items dans des packages qu'il faut bien nommer



  • justement je suis parti de ce tutoriel mais jai l'impression que tout a changer depuis la 1.7 car pour les textures il ne faut plud de dossier modid comme avant ? et c'est bien cela le tuto non ? http://www.minecraftforgefrance.fr/showthread.php?tid=1901


  • Rédacteurs

    Oui, c'est celui-ci
    Excuse-moi, c'est dans celui-là qu'il explique comment organisé les packages, le proxy tout ça …
    [http://www.minecraftforgefrance.fr/showthread.php?tid=1903#json, textures, nom](http://www.minecraftforgefrance.fr/showthread.php?tid=1903#json, textures, nom)



  • ok merci je vais faire un bloc avant de continuer les items au pire

    les seuls tutos videos sont en anglais c'est vraiment domage


  • Administrateurs

    RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem(); est null lors de l'initialisation du proxy.
    Il faut mettre cette ligne à l'intérieur de la méthode registerRender



  • j'ai tout refait a partir d'un tuto video anglais et sa marche mieux dommage quil y en est pas en fr