[Résolu]Petit problème
-
J’ai déjà un modèle de prévu pour les tutoriels 1.8.
Organisation du type :- classe principale
- classe commune (common proxy)
- classe client (client proxy)
- classe serveur (server proxy)
- classe blocs (avec toutes les déclarations de blocs dedans)
- classe items (avec toutes les déclarations d’items dedans)
- classe entité (avec toutes les fonctions d’enregistrement d’entité)
C’est quelque chose de mieux organisé que ce qui est utilisé dans les tuto 1.7
-
Par contre il se nomme item.null.basic
Comment je dois lui donner une valeur ou un nom (pour remplacer le “null” après je sais faire pour les dossiers lang)?
Et il ne veut pas prendre sa texture ni son model. Je crois que j’ai fait une faute dans mon “dinomeat”, vous la voyez?
nom du model: dinomeat.json
nom du texture: dinomeat.pgn -
Pour le nom tu fais .setUnlicalizedName(lenom) comme avec le .setCreativeTab.
Tu appelé bien ta fonction d’enregistrement des rendus dans ton proxy. -
Le nom c’est bon, mais les textures et les ressources ça veut pas.
Voici ce que j’ai actuellement sur clientproxy:package fr.minecraftforgefrance.modzoic.proxy; import fr.minecraftforgefrance.modzoic.common.MeatEpanterias; import fr.minecraftforgefrance.modzoic.common.Modzoic; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.renderer.entity.RenderItem; public class ClientProxy extends CommonProxy { @Override public void registerRender() { RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem(); registerMesher.getItemModelMesher().register(Modzoic.meatEpanterias, 0, new ModelResourceLocation("modzoic" + ":meatEpanterias", "inventory")); } }Sur principal:
package fr.minecraftforgefrance.modzoic.common; import fr.minecraftforgefrance.modzoic.proxy.CommonProxy; import net.minecraft.creativetab.CreativeTabs; 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; import organisation.dinomeat; @Mod(modid = "modzoic", name = "Modzoic", version = "1.0.0") public class Modzoic { @Instance("modzoic") public static Modzoic instance; @SidedProxy(clientSide = "fr.minecraftforgefrance.modzoic.proxy.ClientProxy", serverSide = "fr.minecraftforgefrance.modzoic.proxy.CommonProxy") public static CommonProxy proxy; public static Item meatEpanterias; @EventHandler public void preInit(FMLPreInitializationEvent event) { meatEpanterias = new MeatEpanterias().setCreativeTab(CreativeTabs.tabFood); GameRegistry.registerItem(meatEpanterias, "meatEpanterias"); dinomeat.init(); dinomeat.register(); } @EventHandler public void init(FMLInitializationEvent event) { proxy.registerRender(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } }et sur dinomeat:
package organisation; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class dinomeat { public static Item dinomeat; public static void init() { dinomeat = new Item().setUnlocalizedName("dinomeat").setCreativeTab(CreativeTabs.tabFood); } public static void register() { GameRegistry.registerItem(dinomeat, "dinomeat"); } public static void registerRenders() { registerRender(dinomeat); } public static void registerRender(Item item) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation("modzoic" + ":dinomeat" + item.getUnlocalizedName().substring(5), "inventory")); } }Sinon, je tiens à préciser que pour faire tout ça j’ai suivi un tuto sur youtube (checconio).
Et lui ne va pas du tout sur proxy du coup je suppose qu’il faut rien rajouter dans proxy.
Cependant, pour en être sûr, j’ai rajouté ça à l’endroit qui aurait pu être approprié:registerMesher.getItemModelMesher().register(Modzoic.*dinomeat*, 0, new ModelResourceLocation("modzoic" + ":dinomeat", "inventory"));Ici, le mot souligné m’a causé des soucis d’erreurs, me demandant, pour la réparer, de faire public static Item dinomeat;
sauf que du coup ensuite c’était dinomeat.init(); dinomeat.register(); en erreur. Du coup je fais comment x’)? -
Pour le rendu, t’appelle où la fonction registerRenders ? Et pour l’histoire du proxy, il y a d’autre méthodes qui peuvent ne pas passer par lui.
Pour ton rendu, la variable n’es pas déclaré dans ModZoic mais directement dans la classe de ton Item. -
Du coup je fais comment?
Si je bouge ma variable ça casse tout…
Je suis un peu coincé là.
Après si je modifie tout va être croix rouge…et plus rien ne marchera tout court. Y’a pas une solution, après tout ce n’est qu’une texture…?Sinon j’ai essayé ça:
package organisation; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class dinomeat { public static Item dinomeat; public static void init() { dinomeat = new Item().setUnlocalizedName("dinomeat").setCreativeTab(CreativeTabs.tabFood); } public static void register() { GameRegistry.registerItem(dinomeat, "dinomeat"); } public static void registerRenders() { } public static void registerRender() { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(dinomeat, 0, new ModelResourceLocation("modzoic" + ":dinomeat" + dinomeat.getUnlocalizedName().substring(5), "inventory")); } }Rappel de mon ancienne version:
package organisation; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class dinomeat { public static Item dinomeat; public static void init() { dinomeat = new Item().setUnlocalizedName("dinomeat").setCreativeTab(CreativeTabs.tabFood); } public static void register() { GameRegistry.registerItem(dinomeat, "dinomeat"); } public static void registerRenders() { registerRender(dinomeat); } public static void registerRender(Item item) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation("modzoic" + ":dinomeat" + item.getUnlocalizedName().substring(5), "inventory")); } } ``` (on voit ici en bas registerRender et registerRenders) Mais aucun changement... De même avec : dinomeat.registerRenders(); dans clientproxy -
Bah c’est bon tu n’as plus de problème avec ta variable (du moins j’en vois pas), tu as juste à appeler registerRenders dans ton proxy.
-
Je comprends pas… J’ai tout essayé ça veut pas:
package organisation; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraftforge.fml.common.registry.GameRegistry; public class dinomeat { public static Item dinomeat; public static void init() { dinomeat = new Item().setUnlocalizedName("dinomeat").setCreativeTab(CreativeTabs.tabFood); } public static void register() { GameRegistry.registerItem(dinomeat, "dinomeat"); } public static void registerRenders() { } public static void registerRender() { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(dinomeat, 0, new ModelResourceLocation("modzoic" + ":dinomeat" + dinomeat.getUnlocalizedName().substring(5), "inventory")); } }package fr.minecraftforgefrance.modzoic.common; import fr.minecraftforgefrance.modzoic.proxy.CommonProxy; import net.minecraft.creativetab.CreativeTabs; 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; import organisation.dinomeat; @Mod(modid = "modzoic", name = "Modzoic", version = "1.0.0") public class Modzoic { @Instance("modzoic") public static Modzoic instance; @SidedProxy(clientSide = "fr.minecraftforgefrance.modzoic.proxy.ClientProxy", serverSide = "fr.minecraftforgefrance.modzoic.proxy.CommonProxy") public static CommonProxy proxy; public static Item meatEpanterias; @EventHandler public void preInit(FMLPreInitializationEvent event) { meatEpanterias = new MeatEpanterias().setCreativeTab(CreativeTabs.tabFood); GameRegistry.registerItem(meatEpanterias, "meatEpanterias"); dinomeat.init(); dinomeat.register(); } @EventHandler public void init(FMLInitializationEvent event) { proxy.registerRender(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } }package fr.minecraftforgefrance.modzoic.proxy; import fr.minecraftforgefrance.modzoic.common.MeatEpanterias; import fr.minecraftforgefrance.modzoic.common.Modzoic; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import organisation.dinomeat; import net.minecraft.client.renderer.entity.RenderItem; import organisation.dinomeat; public class ClientProxy extends CommonProxy { @Override public void registerRender() { RenderItem registerMesher = Minecraft.getMinecraft().getRenderItem(); registerMesher.getItemModelMesher().register(Modzoic.meatEpanterias, 0, new ModelResourceLocation("modzoic" + ":meatEpanterias", "inventory")); dinomeat.registerRenders(); } }(j’ai aussi essayé registerMesher.getItemModelMesher().register(Modzoic.dinomeat, 0, new ModelResourceLocation(“modzoic” + “:dinomeat”, “inventory”)); dans clientproxy mais ça me fait la même erreur que tout à l’heure)…
-
Dans ton proxy, tu appelles la fonction qui est vide, tu appelles pas la bonne…
-
J’appelle quoi alors. Dis stp parce que là je suis paumé.
ça?dinomeat.registerRender();
Marche pas non plus -
" + dinomeat.getUnlocalizedName().substring(5)" dans registerRender() dans dinomeat, retire ça, cela ne sert à rien à part qu’il peut pas trouver ton json
-
YOUPIE! x’)
Merci, je t’aime <3! -
Re! Désolé du double post, mais ça fait presque 24 heures et sinon personne le verrait ^^".
Du coup voilà. A présent j’essaie de faire un item nourriture (avant c’était un item basique). J’ai à peu près tout fini je crois, cependant je rencontre deux petits erreurs, dont une dont je n’ai aucune idée de comment la régler.
La première est dans ma classe principale:public static void registerRenders() { registerRender(meatzoic); } public static void registerRender() { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(dinomeat, 0, new ModelResourceLocation("modzoic" + ":dinomeat", "inventory")); } }Avec pour erreur:
The method registerRender() in the type dinomeat is not applicable for the arguments (Item)Si vous avez besoin de d’autres trucs, demandez moi :).
Le deuxième c’est ça:
(screen) -
résolu ?