Tutorial un peu plus détailler



  • Bonjour a tous,

    Je me permet de donnée une suggestion, car étant débutant dans le modding minecraft et suivant divers tuto dont quasiment tous ceux du forum. J'ai remarqué que j'avais des difficulté à suivre à la lettre les tutos et que je pose beaucoup de question à la communauté pour pas grand chose.

    Ce qui serais bien c'est que dans les tutos, on nous précise qu'elle classe est modifier au fur et a mesure du tuto, voici un exemple concret :


    Une parti d'un tuto aujourd'hui

    Classe du packet :

    Le packet est ce qui va permettre au c
    lient et au serveur de se transmettre les données. Cette classe est propre à ma manière d'utiliser les packets. Il est possible que vous n'ayez pas à faire la même chose. Dans ce cas, inspirez-vous de ce que je fais.

    Note : Si vous souhaitez faire comme moi, vous devez avoir FFMT-Lib

    public class PacketMoney extends AbstractPacket{
    
    private int maxMoney, Money;
    
    public PacketMoney(){
    
    }
    
    public PacketMoney(int maxMoney, int money){
    this.maxMoney = maxMoney;
    this.money = money;
    }
    
    @Override
    public void encodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
    buffer.writeInt(maxMoney);
    buffer.writeInt(money);
    
    }
    
    @Override
    public void decodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
    this.maxMoney = buffer.readInt();
    this.money = buffer.readInt();
    }
    
    @Override
    public void handleClientSide(EntityPlayer player) {
    ExtendedEntityPropTuto props = ExtendedEntityPropTuto
    .get(player);
    props.maxMoney = this.maxMoney;
    props.money = this.money;
    }
    
    @Override
    public void handleServerSide(EntityPlayer player) {
    ExtendedEntityPropTuto props = ExtendedEntityPropTuto
    .get(player);
    props.maxMoney = this.maxMoney;
    props.money = this.money;
    }
    
    }
    

    #Ce qui pourrait être sympa c'est de rajouter dans qu'elle package est la classe ainsi que son nom :(Ce qui pourrait être sympa c'est de rajouter dans qu'elle package est la classe ainsi que son nom 🙂

    Classe du packet :

    Package : fr.minecraftforgefrance.tutoriel.packets
    Classe : PacketMoney.java

    Le packet est ce qui va permettre au client et au serveur de se transmettre les données. Cette classe est propre à ma manière d'utiliser les packets. Il est possible que vous n'ayez pas à faire la même chose. Dans ce cas, inspirez-vous de ce que je fais.
    :::

    Note : Si vous souhaitez faire comme moi, vous devez avoir FFMT-Lib

    public class PacketMoney extends AbstractPacket{
    
    private int maxMoney, Money;
    
    public PacketMoney(){
    
    }
    
    public PacketMoney(int maxMoney, int money){
    this.maxMoney = maxMoney;
    this.money = money;
    }
    
    @Override
    public void encodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
    buffer.writeInt(maxMoney);
    buffer.writeInt(money);
    
    }
    
    @Override
    public void decodeInto(ChannelHandlerContext ctx, ByteBuf buffer) {
    this.maxMoney = buffer.readInt();
    this.money = buffer.readInt();
    }
    
    @Override
    public void handleClientSide(EntityPlayer player) {
    ExtendedEntityPropTuto props = ExtendedEntityPropTuto
    .get(player);
    props.maxMoney = this.maxMoney;
    props.money = this.money;
    }
    
    @Override
    public void handleServerSide(EntityPlayer player) {
    ExtendedEntityPropTuto props = ExtendedEntityPropTuto
    .get(player);
    props.maxMoney = this.maxMoney;
    props.money = this.money;
    }
    
    }
    

    :::


    Ainsi qu'un GitHub serait un plus non négligable.

    Voila c'est mon avis car actuellement je suis bloquer dans mon apprentissage, car je ne sais pas ou je doit insérer une série de code.



  • non, cela ne changera rien en le code, à la limite expliquer le code oui (se qui normalement doit être fait), je te conseille en revanche d’apprendre le java, tu as des sites utiles pour sa, sinon il faut que tu commence tous les tuto les plus basique et que tu enchaîne après sur les plus complexe.
    vas ici si tu veux apprendre le java:
    fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-java

    tu peux ausi suivre les TP de Blackout ^^.



  • je ne suis pas d'accord avec toi si tu met des méthode dans une autre classe que la classe main sa ne fonctionnera pas, vrai ou pas ?



  • Pas vrai. Tout dépend des circonstances
    Et si tu veut voir où va quoi, il y a le GitHub qui a été rajouté pour ça! (Il est déjà dispo sur 90% des tutos validés si non il va bientôt être rajouté)



  • Donc vrai … car tous dépend des circonstances ..

    Je dit cela car j'ai du mal a suivre certain tuto, étant au niveau débutant .... et pourtant je programme en PHP, C, C++, C#.
    Certes, je ne me considéré pas comme un pro de ces langages mais j'ai atteins un certain niveau de logique...

    exemple: en quelques heures j'ai compris le fonctionnement d'affichage HUD > [1.7.x] [Résolu] Afficher du texte ou image sur le HUD d'un joueur <

    Et malgré cela j'ai pas pu suivre les tutos qui nous sont quand même un peu destiné a nous débutant en modding java minecraft, chose que je ne trouve pas normal pour des tutos, après j’apporte une suggestion car moi sa a été mon problème sur les tutos, désoler si certaines personnes prennent mal ce que je dit c'est pas mon but, mon but est apporter des améliorations pour rendre les tutos plus agréable au débutant…

    Par exemple la je suis bloquer ici avec des Event Handler > [1.7.x] Crée de nouvelle valeurs (données) joueurs sauvegarder (exemple : mana) < en suivant le tuto > [1.7.2] Extended Entity Properties <, il n'y a pas de GitHub dans ce tuto et c'est justement mal indiquer sur ou insérer les méthodes.

    D'après ce tuto > [1.7.x] Utiliser les évenements < on peut les mettre dans la classe "ExtendedEntityPropTuto" mais dans ces cas la il manque ceci dans le tuto "[1.7.2] Extended Entity Properties" :

    FMLCommonHandler.instance().bus().register(new ExtendedEntityPropTuto());
    

    Après je me trompe peut etre dans ces cas la je vous invite a me corrigé sur mon problème dans support plutôt que ici car ce n'est pas le sujet et que je peux me tromper je suis la pour apprendre et comprendre avant tous !


    ps : Je voulais juste d’ailleurs remercier "robin4002" pour son aide apporter et de toutes ces explications



  • Je pense que ce n'est pas nécessairement utile.

    Déjà, pour le nom de la classe, il se voit dans le code :

    
    public class PacketMoney
    
    

    Ensuite, les packages, c'est simplement comme on le préfère.
    Certaines personnes utilisent un seul package "Network" et mettent tout ce qui concerne le réseau dedans, d'autres font des packages "packets" et s'organisent autrement etc…



  • Oui, mais dans mon exemple les Event Handlers si je l'est rajout dans la classe "ExtendedEntityPropTuto", minecraft et mon mod va les initialiser ? il n'y a pas besoin de l'indiquer dans l'une des méthodes suivante dans mon "Main" ?

    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    
    }
    


  • Non, il faut les mettre dans un event handler …

    Je te rappelle qu'il faut suivre les pré-requis

    https://www.minecraftforgefrance.fr/topic/636/utiliser-les-événements



  • Oui mais pour "savoir manipuler les packets et les events" la théorie c'est bien beau, mais je pense qu'il faut quand même pratiquer pour savoir le faire.

    Étape a laquelle j'en suis… et dans le tuto il n'y a pas d'explication sur le fait de crée la classe EventHandler puis l'appeler dans le Main dans l'INIT.

    Mais avec toutes ces discussion je pense me dirigé sur la bonne voie et comprendre le fonctionne grâce aux tuto, vos explication et la pratique.


  • Modérateurs

    Les "@EventHandler" se mettent dans 90% du temps au-dessus des méthodes ayant en paramètre "FMLPreInitialisationEvent", "FMLInitialisationEvent", "FMLPostInitialisationEvent". Pour les Events, c'est toujours "@SubscribeEvent" au-dessus.


  • Moddeurs confirmés Rédacteurs Administrateurs

    100 %*
    @EventHandler c'est que pour les étapes d'initialisations des mods, rien d'autre.

    Personnellement je ne vois pas en quoi indiquer le nom de la classe et le package va aider, car tu peux n'importe quel non à la classe et n'importe quel nom de package selon tes envies / ta façon de t'organiser.

    Ce qu'il manque surtout pour suivre le tutoriel de gugu, c'est un tutoriel sur les paquets, je vais voir pour faire ça car les paquets sont vraiment quelque chose d'important.



  • En faite étant donnée que nous on n'a pas les sources GitHub ou autre pour suivre le tuto, on n'a que les choses qui y sont inscrit.

    Avec le nom des packages et classe qu'il a utiliser on pourrait suivre plus facilement les fichiers qu'il indique et modifie au fur et a mesure des avancement du tuto.

    Pour d'autre tuto il y avait Github donc je m'en suis servit pour suivre l'avancement des fichiers qu'y est demander dans les tutos.

    Après je sais bien qu'on peut donner les noms de classe ou méthode différent selon ce qu'on veut nous, mais pour un exemple dans le tuto de suivre les fichiers qui ont servit au tuto aide.

    Par exemple pour mon probleme d'Event Handler depuis qu'on ma founit un GitHub qui a servit au tuto bah je m'en sert pour retrouver mes petis par rapport au tuto donc je m'adapte ce qui est pas évident pour un débutant (merci pour mes années de prog en C et PHP sa m'aide beaucoups :p)


  • Moddeurs confirmés

    La c'est des lacunes en Java qui te posent problème et pas des problèmes lié a la clareté des tutoriaux.
    Quand tu créés une classe, tu peux la mettre dans n'importe quel package, ça ne change rien.
    De plus les mods avec forge ne modifie aucun objet.



  • La partie "Suggestions" est là pour ça, que les utilisateurs et coddeurs puissent donner leur avis pour nous permettre d'améliorer le forum 😉
    Donc, même si ton idée n'est pas forcément utile et ne sera peut-être pas mise en place, personne ne te critiquera pour le dire, bien au contraire !

    C'est grâce à vous que le forum se développe, et grâce au courage des Admins et personnes qui rédigent les tutoriels que nous proposerons toujours du contenu interessant 😄


Log in to reply