• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Player capability qui se supprime après la mort du joueur malgré l'utilisation du onPlayerCloned Event

    Support pour les moddeurs
    1.20.x
    1
    2
    234
    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.
    • Anto1_12
      Anto1_12 dernière édition par Anto1_12

      Salut, je code un système d’ajout de cœur définitif en 1.20.1 Forge 47.3.0.

      Pour ce faire, j’ai utilisé une player capability du nom de PLAYER_HEART qui contient le nombre de cœurs ajoutés.

      Mon problème est donc de faire perdurer cette player capability après la mort du joueur. J’ai donc utilisé l’event onPlayerCloned, j’ai utilisé la méthode utilisée dans le tutoriel de kaupenjoe dans laquelle il crée un système de soif en 1.19.

      je vous met donc mon code:

      @SubscribeEvent
          public static void onPlayerCloned(PlayerEvent.Clone event) {
      
              if(event.isWasDeath()) {
      
                  Boolean old_isPresent = event.getOriginal().getCapability(PlayerHeartProvider.PLAYER_HEART).isPresent();
                  System.out.println(old_isPresent);
      
                  event.getOriginal().getCapability(PlayerHeartProvider.PLAYER_HEART).ifPresent(oldStore -> {
      
                      event.getEntity().getCapability(PlayerHeartProvider.PLAYER_HEART).ifPresent(newStore -> {
      
                          newStore.setHeart(oldStore.getHeart());
                          event.getEntity().getAttribute(Attributes.MAX_HEALTH).setBaseValue(newStore.getHeart() * 2);
      
                      });
                  });
              }
          }
      

      Le problème est donc que old_isPresent que j’ai créé uniquement pour tester la présence de oldStore est toujours égale à false et je n’arrive pas à savoir pourquoi.

      Cella fait que quand je meurt, je respawne avec la maxhealt par défaut.

      J’espère que je n’ai pas fait une erreur super basique qui vous ferait perdre votre temps.
      Cela fait deux semaines que je suis sur ce problème. Je vous remercie d’avance pour l’aide que vous m’apporterez.

      (je n’ai pas précisé, mais la variable heart de ma capability est en cœur plein et pas en demi-cœur, car je n’ai pas vraiment besoin de cette précision).

      Anto1_12 1 réponse Dernière réponse Répondre Citer 0
      • Anto1_12
        Anto1_12 @Anto1_12 dernière édition par

        Je viens de comprendre mon erreur, j’avais oublié de register mes event.
        Il fallait juste rajouter cette ligne de code:

        MinecraftForge.EVENT_BUS.register(new OnPlayerCloned());
        

        OnPlayerCloned qui correspond au nom de la class dans laquelle se trouve mon
        @SubscribeEvent

        1 réponse Dernière réponse Répondre Citer 0
        • Anto1_12
          Anto1_12 @Anto1_12 dernière édition par

          Je viens de comprendre mon erreur, j’avais oublié de register mes event.
          Il fallait juste rajouter cette ligne de code:

          MinecraftForge.EVENT_BUS.register(new OnPlayerCloned());
          

          OnPlayerCloned qui correspond au nom de la class dans laquelle se trouve mon
          @SubscribeEvent

          1 réponse Dernière réponse Répondre Citer 0
          • Cette question est désormais résolue  Anto1_12 Anto1_12 
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB