Créer la base de son mod
-
Ce tutoriel est très bien il y a tout d’expliqué.
Mais il faut faire une version 1.9 /1.10 -
Super tuto très bien expliqué !
mais j’ai une erreur au lancement ce qui entraine le crash
voila la seule ligne de la console qui parle de mon mod que j’ai appelé the future :
[18:45:24] [Client thread/INFO] [The_Future]: Mod The_Future is missing the required element ‘name’. Substituting The_Futureque doit-je faire pour résoudre se problème.
je peu envoyer le code ou tout les logs de la console si besoin.
:‘( :’( :‘( :’( -
As-tu bien spécifié le nom dans le @Mod et dans le mcmod.info ?
-
tkt sa marche
j’avais aussi fait une erreur dans le @SidedProxy
merci ^-^
-
Pour info, cette méthode fonctionne également parfaitement en 1.11.x, si vous pensez que ça peut être utile de l’ajouter dans le titre
-
Bonjour j’ai une erreur dans le clien proxy.
mes “override” ne fonctionne pas “Error: method does not override or implement a method from a supertype”
( je tien à précisé que je suis très mauvais en code vus que je suis autodidacte et que je commence avec ce tutos)
voici mon code pour clientproxy:
package be.melgaran.modrpg.Proxy; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemModelMesher; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; /** * Created by Melgaran on 05-06-17. */ public class clientproxy extends commonproxy { @Override public static void registerItemTexture(Item item, int metadata, String name) { ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher(); mesher.register(item, metadata, new ModelResourceLocation("ModRpg:" + name, "inventory")); } @Override public static void registerItemTexture(Item item, String name) { registerItemTexture(item, 0, name); } @Override public static void registerBlockTexture(Block block, int metadata, String name) { registerItemTexture(Item.getItemFromBlock(block), metadata, name); } @Override public static void registerBlockTexture(Block block, String name) { registerBlockTexture(block, 0, name); } }
-
Il y a des erreurs car les fonctions sur lequel tu as mis un @Override n’existe pas dans la classe commonproxy.
Et surtout, mettre un @Override sur une fonction static n’a pas de sens. -
Petit changement pour les versions plus “récentes” de forge (ou en tout cas la mienne 1.11.2-2476).
Où les fichiers ressources doivent uniquement être en minuscules
ex: fr_fr.langLe fichier pack.mcmeta est par défaut sous cette forme
{ "pack": { "description": "examplemod resources", "pack_format": 3, "_comment": voir plus bas } }
“A pack_format of 3 should be used starting with Minecraft 1.11. All resources, including language files, should be lowercase (eg: en_us.lang). A pack_format of 2 will load your mod resources with LegacyV2Adapter, which requires language files to have uppercase letters (eg: en_US.lang).”
J’étais perturbé en suivant le tutoriel “Créer un item simple” et de ne toujours pas avoir les fichiers .lang utilisés (à moins que j’ai loupé quelque part cette précision ?).
-
En effet, j’ai modifié le tutoriel pour le préciser.
-
Bonjour à tous
Je suis nouveau sur le forum ^^
Je suis rendu à 14.56 sur la vidéo ( environ ) et lorsque que je met la commande @EventHandler,
l’import que j’ai n’est pas le même dans la vidéo, à la fin j’ai une asterix :import net.minecraftforge.fml.common.eventhandler.*;
Et à la ligne 15, ou il y à écrit @EventHandler, j’ai une ampoule avec une croix qui dit “EventHandler cannot be resolved to a type”.
Je ne sais pas d’ou ça vient, une idée ?merci d’avance
-
Salut,
ça ne devrait pas poser problème mais tu peux toujours supprimer la ligne avec l’import puis refaire l’important manuellement en mettant la souris sur l’erreur du @EventHandler. Si ça pose toujours problème, tu peux aussi écricre @Mod.EventHandler.
-
Merci pour le tuto, super bien fait et je dois dire que c’est très pratique d’avoir mis le résultat sur github et pas mal de détails c’est assez intéressant plus les pré-requis franchement c’est du bon travail !
-
Bonjour,
Je commence le modding sur minecraft et je suis en train de suivre les tutoriels. Désolé d’ailleurs par avance si je déterre un sujet qui ne devrait pas l’être ou si je poste ma question au mauvais endroit, je suis nouveau.
Je n’arrive pas bien à comprendre à quoi sert un proxy et un logger. Si jamais ce sont des éléments de base de java que je devrais connaître, je demande pas forcément qu’on me ré-explique, une redirection vers une explication bien faite sur internet me conviendra totalement. Et si jamais c’est mieux expliqué dans la suite des tutoriels, désolé par avance pour le dérangement.Merci d’avance pour vos réponses.
-
Salut,
Il n’y a aucun problème à répondre dans les tutoriels si c’est pour posé des questions en rapport avec ce dernier, peu importe l’âge du tutoriel.Le logger est un objet qui va te servir par la suite pour afficher des messages dans la console, avec automatiquement le nom de ton mod entre crochet au début de message.
Il te mettra d’afficher les erreurs, ou simplement des informations dans les logs.Les classes de proxy te permette quand à elle se séparer la logique client de la logique serveur, très important car si tu mets de la logique client sur des classes communes au client et au serveur, ton mod va crasher lorsqu’il sera installé sur un serveur.
-
Ok ! Merci beaucoup ! Je pense que c’est plus clair, ça va m’aider à comprendre la suite. Une autre chose, tu ne précises pas vraiment pourquoi on passe un “File configFile” en argument de la fonction preInit de la classe proxy common. Est-ce que ça va s’éclaircir par la suite ?
-
Il va servir si tu fais un fichier de configuration.
Si tu ne prévois pas d’avoir de fichier de config, tu n’as pas besoin de cette argument. -
Ok, je vais le laisser pour l’instant, je verrai s’il me sert plus tard, sinon je le retirerai. Merci beaucoup ! J’ai d’autres questions, mais je vais les poser dans les tutoriels concernés au fur et à mesure que j’avance. (Je les relis et ré-écoute plusieurs fois pour être sûr de ne pas être passé à côté des réponses à mes questions avant de les poser ! ^^)
-
@robin4002 a dit dans Créer la base de son mod :
Et à l’intérieur de la fonction «public void init(FMLInitializationEvent event)» ajoutez «proxy.init();»
Vos deux fonctions dans la classe principale devraient être maintenant comme cela :
@EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); proxy.preInit(event.getSuggestedConfigurationFile()); } @EventHandler public void init(FMLInitializationEvent event) { proxy.init(); }logger cannot be resolved to a variable
oui logger cannot be resolved to a variablele code
package com.google.modaichmod; 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.FMLPreInitializationEvent; @Mod(modid = ModDaichMod.MODID, name = "Mod Daich's mod for 1.7.10", version = "0.0.3", acceptedMinecraftVersions = "[1.8.9]") public class ModDaichMod { public static final String MODID = "tutorial"; @Instance(ModDaichMod.MODID) public static ModDaichMod instance; @SidedProxy(clientSide = "à modifier ensuite", serverSide = "à modifier ensuite") public static DaichCommon proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); proxy.preInit(event.getSuggestedConfigurationFile()); } @EventHandler public void init(FMLInitializationEvent event) { proxy.init(); } }
-
Il faut lire tout le tutoriel, sans sauter des étapes.
@robin4002 a dit dans Créer la base de son mod :
Nous allons maintenant ajouter le logger (importez org.apache.logging.log4j.Logger) et les deux fonctions suivantes :
public static Logger logger; @EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); // initialise le logger. event.getModLog() retourne un logger avec votre modid } @EventHandler public void init(FMLInitializationEvent event) { }
-
Bonjour,
À l’étape “Code” j’ai un problème : Intellij ne reconnait pas modid lorsque je fais @Mod(modid = “nomdumode”)
Intellij me souligne en rouge “modid” et me renvoie l’erreur :
Cannot resolve method ‘modid’J’ai essayé de redémarrer Intellij mais ça n’a rien changé