1.12.2 Sauvegarder une donnée en 1.12.2



  • Bonjour, j'aimerais sauvegarder une donnée et la reprendre, dans un monde, mais je sais pas faire, avez vous une doc qui pourrais m'aider?



  • J'ai finalement utilisé les capabilities
    Résolu



  • Bonjour, alors il me semble que tu peut faire cela avec les NBT tags sur un joueur si ta donnée doit être stockée dans le joueur, je pense que tu devrais chercher de ce côté la, par contre vu que je débute je ne peut pas t'aider désolé mais tu peut chercher des tutoriels qui t y aideront sur ce forum, voici un tuto sur les NBT tag d'item, désolé je ne pourrai pas t'aider plus que cela https://www.minecraftforgefrance.fr/topic/4300/les-tags-nbt?_=1597498704302



  • Bonjour, ton problème est très vague ...

    Déjà que veux-tu sauvegarder ? Car pour y répondre on doit connaître le sujet, des variables, des tableaux ?

    Ensuite, tu appels quoi par "changer de monde"? Passer de l'overworld au nether par exemple ?
    Ou de serveur complètement ? Comme le passage à un hub, un monde minage etc?

    Sur quoi tu veux suivre des informations ? Item ? Objet ? Joueur ? Car sa changera tout.



  • alors je n'ai jamais parler de "changer de monde" @UtopiePhysique

    ensuite je veut que dans le dossier du monde en gros il y ai chargé ma donnée

    par example tel joueur a tel argent



  • @pazzazzo D'accord comme j'avais vu "dans un monde" je pensais un changement de monde.

    Alors tu as 2 options:
    • Le dossier de configuration
    • La base de donnée

    Je suis adepte aux bases de données car j'enregistre pas mal d'informations, mais pour juste une valeur, pas très utile et très gourmand.

    Les bases de données il existe 3 types, sois en ligne externe, en ligne local et local (sous forme de fichier).
    Les deux premières dites "en ligne" nécessite un serveur évidemment 🙂

    Et là il y à 2 façons d'y accéder, un système qui va envoyer des données ou en lire sur une page web et utiliser une page PHP pour ça (on appel ça une API).

    Ou directement par le Java, bien plus complexe mais très efficace, la seule solution pour le 3eme type de base de donnée d'ailleurs. J'ai déjà pu le faire pour ce 3eme type en 1.12.2 donc faisable et très performant car si la connexion internet coupe et que tu as le serveur local c'est super 🙂
    Et si c'est sous format fichier ça évite d'avoir le serveur qui héberge la base qui crash.

    Tu n'as plus qu'à écrire/lire l'information dès qu'elle est utilisé.

    Tu as une fonction qui reconnaît les nouveaux joueur je crois (à moins que je l'avais bidouiller pour vérifier si son dossier existe dans les deux cas c'est faisable), là tu ajoutes ta valeur (exemple une configuration au nom de chaque joueurs qui possède la valeur "monney" en format integer ou float, si tu veux ou non des chiffres à virgule) puis je te conseil sur le serveur de faire une méthode qui gère le retrait et ajout d'argent sur les joueurs.

    Comme ça t'y place un petit code qui va aussi sauvegarder/modifier la base de donnée ou la configuration et tu es sûr d'être toujours a jour, si le serveur crash, pas de soucis tout est sauvegarder.

    J'espère ne pas m'être trop étaler, je te proposes tout ce qui existe à toi de faire ton choix.

    Donc sois gérer une base de donnée en Java (ou requête sur une API), sois créer un fichier de configuration avec Forge 🙂
    (Ou créer un bête fichier texte en Java avec l'IO mais je te déconseille cette méthode puisqu'il y à le système de configuration forge spécialement fait pour gérer des infos).



  • bah tu avais pas besoin de dire tout sa x) quoi qu'il en soit c'est la 3 que je veut faire, et comment tu sais que c'est sur un serveur?



  • donc j'aimerais que tu m'apprenne a faire la technique 3 stp



  • @pazzazzo Tu sauvegardes généralement jamais d'informations sur un client, c'est la base de la programmation, never trust a client une règle IMPORTANTE !

    J'ai pas compris, la 3 c'est quoi? La base de donnée local sans serveur ? Tu as aussi le système de configuration par exemple ici

    Sinon pour la base de donnée local sans serveur, comme ça fait longtemps que je ne l'ai pas fais je suis en train d'apprendre (et j'avance vite !) à modder pour minecraft, je comptes faire beaucoup de tutos et d'exemples qui pour moi manque cruellement que ce sois sur les forums francophone ou anglophone.

    Cependant je vais te donner des pistes, la méthode dont j'ai dis que c'était sur un fichier c'est SQLite (site officiel, je penses que c'est utilisable avec Forge).

    Pour les tutos d'utilisation de SQLite en Java c'est ici.

    Je te préviens c'est peut être un niveau un peu plus élevé que du modding ^^'
    Si tu n'arrives pas, penche toi sur la création de configuration tant pis.



  • ok merci je vais essayer





  • @pazzazzo C'était le premier lien google la personne donnait plus la réponse que la solution ... Cherche par toi même les sujets ne manque pas sur comment faire une configuration ...

    Documentation : https://mcforge.readthedocs.io/en/1.12.x/config/annotations/
    Vidéo: https://www.youtube.com/watch?v=yy82mmcxP-Q

    Etc ...



  • merci



  • J'ai finalement utilisé les capabilities
    Résolu



  • @pazzazzo En effet, je connais pas bien les capabilities à priori c'est bien pour sauvegarder une informations ^^

    https://www.minecraftforgefrance.fr/topic/2800/utiliser-les-capabilities/2



  • @UtopiePhysique c'est le tuto que j'ai utilisé x) j'ai trerminé mais mtn je cherche a faire la commande /pay je sais pas comment je vais m'y prendre



  • @pazzazzo En 1.12.2 les commandes c'est un peu relou, en 1.15.2 c'est hyper simplifié.

    https://www.minecraftforgefrance.fr/topic/4471/créer-une-commande



  • @UtopiePhysique je sais faire une commande mais c'est pour retirer l'argent du joueur et tout que je sais pas comment je vais faire



  • @pazzazzo Le tuto dit:

    public int money;
     
    public void setMoney(int money) {
        this.money = money;
    }
     
    public int getMoney() {
        return this.money;
    }
    

    En sois tu peux ajouter:

    public void editMoney(int money) {
        this.money += money;
    }
    

    "editMoney(10);" ajoutera 10 pièces, editMoney(-10); retire 10 pièces.

    Comme ça tu n'as plus qu'à faire (dans ta commande):

    TutoCapabilities newCap = (EntityPlayer)sender.getCapability(ModTutoriel.TUTO_CAP, null);
    newCap.editMoney(10));
    

    Cependant attention, vérifie que tu as bien tout mis côté serveur et qu'un joueur ne pas pas utiliser quelque une méthode côté client pour ce give de l'argent 😉



  • javais fais sa

    package com.frenchdevteam.goodlifemod.monnaie;
    
    public interface IMoney {
    
        default public void removeMoney(int amount) {
            this.addMoney(-amount);
        }
    
        default public void addMoney(int amount) {
            this.setMoney(this.getMoney() + amount);
        }
    
        public void setMoney(int amount);
    
        public int getMoney();
    
    }
    


  • @UtopiePhysique oui mais comment je dis que joueur qui perde l'argent et celui qui gagner l'argent

    Ha non j'ai pas utiliser se tuto moi x)

    je vais regarder se tuto

    et comme c'est résolu stp dm moi discord pazzazzo#9999


Log in to reply