MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    [1.7.10 -> 1.12] Synchroniser ses données avec DBSynchronizer

    Planifier Épinglé Verrouillé Déplacé Tutoriels des membres
    25 Messages 3 Publieurs 5.8k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • LavaPowerL Hors-ligne
      LavaPower
      dernière édition par

      Merci beaucoup !

      Github : http://github.com/LavaPower

      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        D’après ce que j’ai compris, si un changement de données s’effectue sur le client, alors les données sont aussi modifiés sur le serveur. Ça peut être utile dans certains cas mais dans la majorité des cas cela va donner une faille exploitable par les joueurs pour tricher

        1 réponse Dernière réponse Répondre Citer 0
        • Cl00e9mentC Hors-ligne
          Cl00e9ment
          dernière édition par

          Oui effectivement. Je n’y avais pas pensé. 😕
          Peut être que je peux régler ce problème en faisant en sorte que le serveur doit au préalable autoriser tel ou tel client à accéder à tel ou tel donnée. De ce fait les clients n’auront accès qu’aux données dont le server leur a autorisé l’accès. Les autres données seront disponibles qu’en lecture seule.

          Qu’en pensez-vous ?

          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwingB Hors-ligne
            BrokenSwing Moddeurs confirmés Rédacteurs
            dernière édition par

            Tu fais un système d’approbation du changement de donnée. Une fonction du style :

            
            public boolean canClientChangeData(EntityPlayerMP player, DBFolder currentDatas, DBFolder changedDatas)
            
            

            En gros par défaut ça retourne toujours faux (parce qu’il vaut mieux interdire l’écriture des données par le client par défaut). Si la fonction renvoie vrai les données actuelles sont remplacées par les nouvelles, sinon c’est les anciennes qui restent. Au niveau de l’emplacement de la fonction je te laisse l’intégrer comme bon te semble. Tu peux tout à fait mettre la fonction dans le DBFolder en changeant le prototype, enfin bon, voilà.

            1 réponse Dernière réponse Répondre Citer 0
            • Cl00e9mentC Hors-ligne
              Cl00e9ment
              dernière édition par

              Ok, c’est bien à ça que je pensais. Merci.
              Je vais m’y mettre tout de suite !

              1 réponse Dernière réponse Répondre Citer 0
              • LavaPowerL Hors-ligne
                LavaPower
                dernière édition par

                Salut, je suis devant un nouveau problème. Je veux me servir de DBSynchronizer pour faire une sorte de cooldown sur mon block :
                Voici la classe de mon bloc où on bloque l’activation si le cooldown n’est pas fini : https://pastebin.com/K0kGvmjD
                Et la classe de ma Tile Entity où le cooldown descend : https://pastebin.com/xwBZzxBA

                Le problème c’est que le cooldown ne descend jamais. Le bloc me dit toujours d’attendre 1 seconde (sauf la première fois)

                Github : http://github.com/LavaPower

                1 réponse Dernière réponse Répondre Citer 0
                • Cl00e9mentC Hors-ligne
                  Cl00e9ment
                  dernière édition par

                  Alors je vois déjà plusieurs problèmes :

                  Tu génère un nom à tes cooldows en fonction de la position du bloc, sauf que selon ta façon de faire, un bloc situé en (x:10 y:63 z:2) génèrera le même nom qu’un bloc situé en (x:106 y:3 z:2). Je te conseile donc de séparer tes coordonnées par un espace:

                  String key = this.xCoord +" "+ this.yCoord +" "+ this.zCoord;
                  

                  Ensuite je vois que tu met plusieurs fois le même bout de code qui sert à générer la clé. Utilise ce bout de code qu’une seul fois : stock la valeur dans une variable et le tour est joué, c’est plus optimisé et plus propre.

                  Dans ta classe TE, ton if (je ne parle pas du else) ne sert à rien, en effet, si le cooldown est égal à 0 alors tu le met à 0.

                  Donc je te laisse régler ça. Ensuite tu pourra mettre un System.out.println (“test”); dans la méthode updateEntity() pour vérifier qu’elle est bien appelée.

                  1 réponse Dernière réponse Répondre Citer 0
                  • LavaPowerL Hors-ligne
                    LavaPower
                    dernière édition par

                    J’ai modifié ce que tu m’as dis de modifier.
                    J’ai mis le System.out.println et comme je le pensais, la fonction est bien appelée.

                    Cependant, toujours rien 😞

                    Github : http://github.com/LavaPower

                    1 réponse Dernière réponse Répondre Citer 0
                    • Cl00e9mentC Hors-ligne
                      Cl00e9ment
                      dernière édition par

                      Tu peux me renvoyer ton code modifié stp ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • Cl00e9mentC Hors-ligne
                        Cl00e9ment
                        dernière édition par

                        Ok c’est bon j’ai trouvé.
                        Comme quoi des fois c’est juste des fautes d’inattention qui font chercher longtemps 😉 .

                        Tu n’utilises pas la même clé en fonction de tes classes :
                        Dans la classe Tappe tu utilises “TrappeCooldown”, et dans la classe TE tu utilises “MarteauCooldown”.

                        Je tiens à rajouter que si tu n’as pas besoin de ton cooldown à la fois sur le server et sur le client alors tu n’as pas besoin de passer par ma library et ça sera plus propre.

                        1 réponse Dernière réponse Répondre Citer 1
                        • LavaPowerL Hors-ligne
                          LavaPower
                          dernière édition par

                          Merci ça marche nickel !

                          Github : http://github.com/LavaPower

                          1 réponse Dernière réponse Répondre Citer 0
                          • 1
                          • 2
                          • 2 / 2
                          • Premier message
                            Dernier message
                          Design by Woryk
                          ContactMentions Légales

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB