MFF

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

    Problèmes d'origine inconnue qui empêche beaucoup de chose (event, capa, etc). [Détails dans le post].

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.15.2
    20 Messages 3 Publieurs 1.1k Vues 3 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.
    • FlowF Hors-ligne
      Flow
      dernière édition par Flow

      Ok ca semble avoir résolu le soucis pour les commandes. Je connaissais la perspective Debug, mais je ne savais pas qu’on pouvais tout voir avec ce que tu as proposés! Cependant je n’ai pas le AbortedByHookException. Est-ce que c’est celui la qu’il faut absolument ? (je suppose que oui) EDIT: nvm Je suppose que c’est le * Exception * qui catch donc toutes les exceptions.

      Merci pour le petit tuto 🙂 Je vérifie mes packets!

      Oui ce gif est drôle.

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

        Il semblerait que le packet ne soit jamais appelé pour synchroniser avec le client. Maintenant pourquoi, me reste à chercher x) Je suppose que j’ai loupé quelque chose dans le tuto de Broken en 1.13.2.

        Oui ce gif est drôle.

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

          Probablement car la fonction où tu l’envoies n’est pas appelé.

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

            Yep! C’est avec le tuto de broken donc c’est quand le playerMoneyHolder change si je me souviens bien, donc dans l’event AttachCapabilitiesEvent il prend le bon holder, et dès que ca change, il envoie le packet. Mais je pense avoir trouvé mon erreur.

            EDIT : Ok ca se synchro maintenant, me reste a trouver mon erreur sur l’invalidated capa pour rendre la capabilities persistent à la mort du joueur. En espérant que ce sa soit qui causait le lag ? je te tiens au courant sur le thread! 🙂
            Encore merci de ton aide Robin! 🙂

            Oui ce gif est drôle.

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

              Yoo ! Bon j’ai refais quelques test, ma capabilities s’attache bien au joueur et se synchronise bien. Il a juste le problème de la rendre persistante a la mort du joueurs. Le problème est que en faisant des tests voici avec une vidéo à quoi j’arrive. En fait quand je meurs une première fois ma capabilities se remet à 0, si je re-meurs ca me remet bien ma capabilities d’avant. Et quand la capabilities est attachées il semble que les tps soit au plus bas, et quand je meurs la premiere fois tout reviens à la normale. J’ai essayé de debug mais je vois rien, le pire c’est que l’event PlayerEvent.Clone ne sysout rien dans la console mais semble quand même fonctionner ??? Vu que je récupère ma capabilities a la deuxième mort ?

              @SubscribeEvent
              	public static void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) {
                  	
                  	if(event.isWasDeath())
                      event.getPlayer().getCapability(CapabilityMoney.MONEY_CAPABILITY).ifPresent(newCapa -> {
                          if(INVALIDATED_CAPS.containsKey(event.getOriginal()))
                          {
                              INBT nbt = CapabilityMoney.MONEY_CAPABILITY.writeNBT(INVALIDATED_CAPS.get(event.getOriginal()), null);
                              System.out.println(nbt);
                              CapabilityMoney.MONEY_CAPABILITY.readNBT(newCapa, null, nbt);
                          }
                      });
              
              	}
              	
              	@SubscribeEvent
              	public static void onPlayerRespawn(PlayerEvent.PlayerRespawnEvent event)
              	{
              		if(!event.getPlayer().world.isRemote && event.getPlayer() instanceof ServerPlayerEntity)
              		{
              			ServerPlayerEntity player = (ServerPlayerEntity)event.getPlayer();
              			event.getPlayer().getCapability(CapabilityMoney.MONEY_CAPABILITY, null).ifPresent(data -> {
              				
              				PacketsRegistery.CHANNEL.send(PacketDistributor.PLAYER.with(() -> player), new PacketMoneyData(data.getMoney()));
              			});	
              		}
              
              	}
              

              Voilà aussi la vidéo qui montre ce qu’il se passe…
              Youtube Video

              C’est vraiment bizarre… Et je vois pas pourquoi ca se produit même avec le débug que tu m’avais montrer…

              Oui ce gif est drôle.

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

                C’est quoi INVALIDATED_CAPS ?

                Je doute qu’elle soit nécessaire, tu peux faire une copie directement de la capa de getOriginal() vers la capa de getPlayer().

                Est-ce qu’il y a quelque chose que tu fais à chaque tick dans ta capa ?

                FlowF 1 réponse Dernière réponse Répondre Citer 0
                • FlowF Hors-ligne
                  Flow @robin4002
                  dernière édition par

                  @robin4002 J’ai repris le tuto de broken en 1.13.2 (cf. https://www.minecraftforgefrance.fr/topic/5550/les-capabilities )
                  Le problème est que j’ai testé de faire avec l’event en lui même et ca ne marchait pas, j’ai pas l’impression que l’event soit appelé ?

                  Non rien, j’ai juste un item qui affiche les infos en tooltip.

                  Oui ce gif est drôle.

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

                    Ah ok, si broken a indiqué de faire comme cela c’est probablement car on ne peut plus récupérer la capa d’un joueur mort.

                    Tu es sûr que l’event n’est pas appelé ? Tu as mis un point d’arrêt directement au début de l’event pour voir ?

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

                      Je vais retest maintenant, je viens de parcourir les issues de MinecraftForge et apparemment il serait possible de récupérer les données du joueurs après sa mort avec la fonction PlayerEntity.revive(); Je test et edit mon poste pour te dire comment sa s’est passé!

                      EDIT : J’ai procéder comme ceci

                          @SubscribeEvent
                      	public static void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) {
                          	
                          	PlayerEntity oldPlayer = event.getOriginal();
                              oldPlayer.revive();
                              PlayerEntity newPlayer = event.getPlayer();
                              oldPlayer.getCapability(CapabilityMoney.MONEY_CAPABILITY).ifPresent(oldData -> { 	
                              	newPlayer.getCapability(CapabilityMoney.MONEY_CAPABILITY).ifPresent(data -> data.setMoney(oldData.getMoney()));
                              });
                      	}
                      

                      Avec le revive, ca fonctionne nickel maintenant! Donc pour ceux qui cherche voilà, a coupler avec un event PlayerRespawnEvent qui synchronie le tout! Le seul problème reste maintenant que les tps sont à 12 - 13, est-ce que il y a un moyen d’avoir plus de détail sur ou les ticks sont utilisés en quelque sortes ?

                      Oui ce gif est drôle.

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

                        Avec la commande debug
                        https://mcforge.readthedocs.io/en/1.14.x/gettingstarted/debugprofiler/

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

                          Merci je vais regarder ca!

                          Oui ce gif est drôle.

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB