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

    Résolu Problème avec les achievements

    1.7.x
    1.7.10
    2
    4
    1280
    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.
    • Mapper
      Mapper dernière édition par

      Salut,

      J’ai essayé de faire des achievements customs pour mon mod en suivant le tuto d’ici (qui est en 1.6.x) et en regardant des sources codes d’autres mods.
      J’ai donc ma page d’achievements, et 2 succès qui fonctionnent (récupération d’un item, et cuisson de cet item).
      Mais ils ne restent pas enregistrés, si je quitte la partie et que je reviens, tout est remit à zéro. Et ça affiche ceci en jeu:

      Voici la classe des achievements:

      package net.killermapper.roadstuff.common.init;
      
      import net.killermapper.roadstuff.common.items.RoadStuffItems;
      import net.minecraft.item.ItemStack;
      import net.minecraft.stats.Achievement;
      import net.minecraftforge.common.AchievementPage;
      
      public class RoadStuffAchievements
      {
         public static Achievement getBitumen;
         public static Achievement smeltBitumen;
      
         public static AchievementPage page;
      
         public static void loadAchievements()
         {
             getBitumen = new Achievement("achievement.roadstuff_getbitumen", "roadstuff_getbitumen", 0, 0, new ItemStack(RoadStuffItems.itemBitumen, 1, 0), null);
             smeltBitumen = new Achievement("achievement.roadstuff_smeltbitumen", "roadstuff_smeltbitumen", 0, 3, new ItemStack(RoadStuffItems.itemBitumen, 1, 1), getBitumen);
      
             page = new AchievementPage("Road Stuff", getBitumen, smeltBitumen);
         }
      
         public static void registerPage()
         {
             AchievementPage.registerAchievementPage(page);
         }
      }
      

      Tout ceci est initialisé dans le preInit(FMLPreInitializationEvent event) dans la classe principale.
      Mon code pour les events:

      package net.killermapper.roadstuff.common;
      
      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
      import cpw.mods.fml.common.gameevent.PlayerEvent.ItemPickupEvent;
      import cpw.mods.fml.common.gameevent.PlayerEvent.ItemSmeltedEvent;
      import net.killermapper.roadstuff.common.init.RoadStuffAchievements;
      import net.killermapper.roadstuff.common.items.RoadStuffItems;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraftforge.event.entity.EntityJoinWorldEvent;
      
      public class EventPlayer
      {
         @SubscribeEvent
         public void itemPickup(ItemPickupEvent event)
         {
             if(event.pickedUp.getEntityItem().getItem() == RoadStuffItems.itemBitumen && event.pickedUp.getEntityItem().getItemDamage() == 0)
             {
                 if(event.player != null)
                     event.player.triggerAchievement(RoadStuffAchievements.getBitumen);
             }
         }
      
         @SubscribeEvent
         public void itemSmelting(ItemSmeltedEvent event1)
         {
             if(event1.smelting.getItem() == RoadStuffItems.itemBitumen) //Need to find how to get metadata here
             {
                 event1.player.addStat(RoadStuffAchievements.smeltBitumen, 1);
             }
         }
      }
      
      

      Avec le FMLCommonHandler.instance().bus().register(new EventPlayer()); dans la classe principale, dans le init(FMLInitializationEvent event).

      J’ai essayé avec addStat et triggerAchievement pour voir si ça change quelque chose (d’où les 2 méthodes dans le code), mais sans succès.

      Du coup je ne sais pas ce que j’ai pu rater.

      Merci de votre aide.

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

        Lors de la déclaration de l’achievement il faut l’enregistrer (.register() je crois)

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 1
        • Mapper
          Mapper dernière édition par

          Et oui c’était bien ça, plus précisément: .registerStat()

          En plus je les avais bien mis avant, mais je m’étais trompé dans le code à un moment et je les avais enlevé en pensant que ça venait de là… puis j’ai oublié de les remettre après avoir corrigé mon bug.

          Dire que j’ai passé tant de temps à essayer de trouver quelque chose d’aussi simple… Bref merci 🙂

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

            Moi aussi j’ai bugué dessus un bon moment, d’ailleurs je comprends toujours pas la logique de devoir enregistrer des achievements

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

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

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB