1.7.x Un niveau d'energie qui réagit comme la faim



  • Bonsoir a vous tous,

    #Explication !(Explication !)
    Je souhaite m'entrainer a la programmation de modding, pour cela je vais essayer d'intégrer dans minecraft par le biais de mon mod une barre d’énergie qui diminuera de la même manière que la faim mais la seul façon de la restaurer serait de dormir ou bien boire un "café" par exemple..

    Je programme pas mal en C et PHP, j'ai commencer un peu la programmation de mod minecraft > ICI < et > LA <.
    J'ai lu les tutos du forum, ainsi que les cours sur Open Class Rooms (anciennement Site Du Zero).

    #Un support approuvé ?(Un support approuvé ?)
    Comme je le disait dans une réponse de sujet, j'ai besoin d'entrainement et comme disait "Superloup10" > ICI <
    @Superloup10:

    si tu te lances dans un gros projet comme celui-ci, tu apprendras bien plus qu'en faisant un petit mod très basique.

    Donc je me lance dans ce projet, dont je ferais surement un tuto par la suite dans le cas ou d'autre personne voudrais comprendre ce mécanisme, pour crée d'autre mod utilisant ce principe.

    Mais, étant débutant dans le modding minecraft, j'ai beaucoup de lacune sur les mécanisme, méthode et event qui sont lié à minecraft.

    C'est pour cela que je me permet de poster mon sujet dans support pour les moddeurs plutôt que dans les "Mods en développement", pour avoir un support et donc apprendre au fur et a mesure de l'avancement de mon mod.
    ps : si ce sujet et selon vous, modérateur et administrateur, pas au bon endroit, alors n'hésitez pas a le déplacer dans ce dernier !

    #Un Github, pour l'aide, l’avancement et éventuellement un futur tuto.(Un Github, pour l'aide, l’avancement et éventuellement un futur tuto.)
    Pour des questions pratique, je pense mettre tous mon mod dans un Github; ce qui je pense sera plus pratique pour trouver une erreur ou m'apporter une suggestion, pour ce qui m'aideront.
    ps : je rajouterais le lien Github, mais faut d'abord que je regarde comme ça fonctionne, pour des synchronisations de projets etc …

    Lien du projet Github : https://github.com/BlackDrag00n/EnergieMod
    Le répertoire codage : https://github.com/BlackDrag00n/EnergieMod/tree/master/src/main/java/fr/paramystick/pykenergie
    Le repertoire ressource : https://github.com/BlackDrag00n/EnergieMod/tree/master/src/main/resources

    #Information complémentaire.(Information complémentaire.)
    Je vais m'arranger à toujours être disponible sur le Teamspeak Minecraft Forge France (dans un des canaux de développement) quand je suis en train de travailler sur ce mod, de manière à ce que les personnes qui m'aide puisse me parler directement en cas de petite question qui n'ont pas besoin d’être sur le forum, j'insisterai par contre sur le fait que si il doit y avoir des échange de code ou de correction ou autre chose lié aux codages, il se fera par le forum !


  • Modérateurs

    Tu as un tuto qui explique le fonctionnement de github sur le forum.



  • J'ai regarder mais trop en ligne de commande il y a maintenant une application graphique qui permet les commit et push du projet, voir un tuto sympa en vidéo : Tutoriel vidéo Internet : Utiliser GitHub

    Par contre il explique pas comment on peut travailler à plusieurs sur un projet Github je suis en train de chercher un tuto sur ça.
    [A] fait une modification qu'on va appeler [1]
    ** fait une autre modification qu'on va appeler [2]

    Je ne sais pas du tous comment faire pour que :
    [A] récupère la modification [2] fait pas **
    ** récupère la modification [1] fait pas [A]

    En gros que les personnes se synchronise entre grâce au serveur Github et qu'il continue a travailler sur un projet identique sur le projet local de chaque personnes.


  • Modérateurs

    C'est expliqué dans le tutoriel du forum.



  • Dans le tuto il explique comment a partir de ligne de commande fusionner les modifications,

    En gros, si on reprend l'exemple :
    [A] envoie c'est modification [1]
    ** envoie c'est modification [2] mais ce rend compte que [A] a déjà fait des modification > donc fusion

    Mais du coup :
    ** aura les mofication [1] fait par [A] quand il va faire cette fusion ?
    et [A] va être prévenu de modification fait par ** pour qu'il est un projet local a jour ?


  • Modérateurs

    Sur l'interface graphique, tu as le bouton Sync avec à côté une flèche montante (quand tu as un commit à upload) et une flèche descendante (quand tu as un commit à download), s'il n'y a pas de différence, tu n'auras aucune flèche.



  • okiiii, cool merci pour l'information !

    Sa pourrait être bien de remonter cette information dans le tuto ^^

    Je vais commencer un projets vierge grâce aux tuto du forum, je l'upload sur le Github, rajoute le lien au début du sujet et c'est partit je pense faire tous ça demain en fin de journée.


  • Modérateurs

    Lorsque tu travailles en équipe, tu as 2 choix:
    -soit tu créais une organisation et tu y ajoutes les membres de ton choix.
    -soit tu ajoutes aux collaborators de ton projet les membres de ton choix.
    Sinon, tu choisis de ne pas travailler en équipe et dans ce cas là, les autres feront des pulls request.



  • Et d'après ton expérience qu'elle est la meilleur façon de travailler en équipe ?

    Je demande ça, car j'ai une personne qui serai intéresser aussi à ce lancer dans le modding minecraft, et comme on a presque le même niveau de programmation, on se mettrai tous les deux sur le projet en vous demandant assistance 😛 quand on en aura besoin 🙂


  • Modérateurs

    Le problème de l'organisation est que n'importe quel membre owner peux supprimer ou se réapproprier un projet sur son Github personnel. Le mieux reste d'ajouter des collaborateurs.



  • Merci pour toutes ces informations Superloup10



  • Voilà j'ai crée la base de mon mod et rajouter le projet Github vous pouvez toujours jeter un œil sur mon organisation des classes et me faire un retour je vais commencer a réfléchir sur mon codage 😛


    Je viens de faire le nécessaire crée un repository, ajout mon ami sur les collaborateurs du repository mais on trouve pas comment faire pour qu'il récupéré "mon" repository sur ''son" pc pour qu'il puisse faire des modifications pour par la suite pouvoir synchroniser sur "mon" repository, puis-je avoir une assistance 😛


  • Moddeurs confirmés Rédacteurs Administrateurs

    Si il a l'application github sur son pc, il devrait voir le repo, suffit juste de cloner.
    Sinon si il a le logiciel git, en ligne de commande : git clone url du repo.git
    exemple : git clone git@github.com:FFMT/nanotech_mod.git



  • en faite je l'est rajouté, comme conseiller, dans les collabo, et on a trouver dans clone il voit la repo du coup par contre j'ai du mal a comprendre le principe des conflits


  • Moddeurs confirmés Rédacteurs Administrateurs

    Les conflits c'est un truc bien chiant a gérer, au début je re-clonais le repo quand j'avais ça x)
    Déjà il faut savoir que les conflits ne peuvent que être réglé en ligne de commande.
    Il faut d'abord commiter ce que tu as en local. Ensuite il faut fusionner les sources distantes avec les sources locaux :
    git pull origin master
    Il va tout fusionner et marquer clairement ou son les conflits.
    Il faut modifier le code pour qu'il soit ensuite comme tu le souhaite.
    Après il faut denouveau commité.
    Si tu ne veux pas avoir deux commit dans la liste, il faut rebaser (http://git-scm.com/book/fr/Les-branches-avec-Git-Rebaser)
    Et ensuite il faut push (git push origin master)



  • mais cette choses a l'air d’être faisable avec la nouvelle interface 2.0 de GitHub


    @'robin4002':

    C'est ce que je disais, il faut passer par les ticks 😉
    Presque tout même devrait passer par les ticks, car il n'y a pas d'event pour quand le joueur sprint, il me semble que c'est une condition dans l'entity, donc le code ressemblera plutôt à :

    @SubscribeEvent
    public void onPlayerTick(TickEvent.Player event)
    {
    CustomProp prop = CustomProp.get(event.player);
    if(event.player.isSprinting)
    {
    prop.setThirst(prop.getThirst - 5);
    }
    else
    {
    prop.setThirst(prop.getThirst - 1);
    }
    }
    

    Enfin il faudra plutôt un timer, sinon ça va descendre beaucoup trop vite ^^

    Je met ce post ici pour le retrouver plus facilement 😛



  • Salut tous le monde !!

    Me revoiloù avec une question a 0€ lol

    j'ai fait des recherches par rapport a un calcul dans minecraft qui est le suivant :

    int energieBar = MathHelper.ceiling_float_int((50/100)*64); // Chiffre fixe pour test
    

    Hors la valeur "d'energieBar " est toujours égale à : 0
    Par contre si je remplace les "/" et "*" par des "-" et "+", la sa fonctionne.

    int energieBar = MathHelper.ceiling_float_int((50-100)+64); // Chiffre fixe pour test
    

    Ma question est dans ma situation si je veux diviser et multiplier il faut bien utiliser "/" et "*" non ?
    ps : j'utilise "MathHelper.ceiling_float_int" pour un calcul arrondi et converti de type float en int


  • Modérateurs

    int energieBar = MathHelper.ceiling_float_int((50f/100f)*64f); // Chiffre fixe pour test
    

    Il faut faire la conversion int<->float, sinon tu auras 50/100 avec des nombres entiers, soit 0 (0.5 tronqué aux unités)



  • Ou sinon, mieux vaux utiliser un float pour ton énergie. Comme ça, tu peux faire en sorte d'enlever très peu par tick, et avoir une descente constante.



  • D'accord merci les loulou, je ne savait pas qu'il fallait rajouter un "f" sur chaque valeur et dans le cas de variable que j'ignitialise pour mes test au début du codage si je met ça :

    float bar = 50f;
    float barMax = 100f;
    
    

    sa fonctionnera ?

    et tu as raison Gugu je pense que je vais faire mes calculs en float pour faire en sorte qu'il soit possible de descendre lentement la bar, mais avec le float il est possible que j'ai dès valeurs du type 0,66666666666, faut donc que je limite par exemple à 2 chiffres derrière la virgule.

    Il y a une fonction toute prête qui permet de faire ça depuis la 1.7, ou bien je doit m'en crée une qui me permettra d'arrondir les chiffres que je lui envoie du type :

    arrondi (float valeur, int nombre_apres_virgule)
    

Log in to reply