MFF

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

    Impossible d'avoir l'effet ainsi que le Timer sur mon Item

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    13 Messages 3 Publieurs 851 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.
    • M Hors-ligne
      MrKibatsu
      dernière édition par Superloup10

      Bonjour, donc voici mon problème j’ai crée un Item au quel j’ai affecter un effet de potion via onRightClick pour éviter que sa sois trop abusé j’ai décicer de lui ajouter un timer donc pour sa j’ai crée une variable int timer ainsi qu’un boolean pour l’activation mon problème c’est que je n’arrive pas a faire fonctionner les 2, sois j’ai l’effet de potion qui marche et pas le timer sois l’inverse le timer marche l’effet de potion s’affiche dans l’inventaire (Mais aucune particule et le timer reste ensuite bloqué a 00:00) Voici mon code j’espère qu’une personne poura m’aiguiller dans la bonne direction

      public class TimerSpeedRuneMod extends Item
      {
      	private int timer = 0;
      	private boolean onOff = false;
      	
      	 public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
      	    {
      		 if(onOff == false)
      		 	{
      		 	p_77659_3_.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 150, 1));
      		 	onOff = true;
      			};
      			return p_77659_1_;		 	
      	    }
      	
      	 public void onUpdate(ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) 
      	 {
      		 if(onOff == true)
      		 {
      			 timer++;
      			 System.out.println(timer);
      		 }
      		 
      		 if(timer == 200)
      		 {
      			 ((EntityPlayer) p_77663_3_).addChatMessage((new ChatComponentText(EnumChatFormatting.GREEN + "La rune Speed peut-être utilisée !")));
      			 timer = 0;
      			 onOff = false;
      		 }
      	 }
      	
      }
      

      en vous remerciant d’avance pour le temps consacré a me répondre.

      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

        Salut,
        Pourquoi utiliser une valeur booléenne “on off” alors que tu peux directement utiliser if(timer >= 200) comme condition ?

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

          Car je ne vois pas trop comment faire sans après si tu as mieux je suis preneur x)

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

            Et le truc c’est que je comprends pas pourquoi mon code ne marche pas l’erreur doit être toute bête en plus

            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

              Comme cela :

              public class TimerSpeedRuneMod extends Item
              {
              	private int timer = 0;
              	
              	 public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
              	 {
              		 if(timer <= 0)
              		 {
              		 	p_77659_3_.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 150, 1));
                                      timer = 200;
              		 }
              		 return p_77659_1_;		 	
              	 }
              	
              	 public void onUpdate(ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) 
              	 {
              		 if(timer >= 0)
              		 {
              			 timer--;
              		 }
              		 
              		 if(timer == 0)
              		 {
              			 ((EntityPlayer) p_77663_3_).addChatMessage((new ChatComponentText(EnumChatFormatting.GREEN + "La rune Speed peut-être utilisée !")));
              		 }
              	 }
              }
              

              Je suis simplement partie sur le fait que 0 ou - l’objet est utilisable et lorsqu’on l’utilise le timeur revient à 200.

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

                D’accord merci je vais tester cela , mais tu peut me dire pourquoi cela ne marcher pas dans mon exemple car je n’apprends rien si je ne connais pas la cause merci d’avance de ta futur réponse.

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

                  Attention, c’est pas du tout bon ça. Tu ne doit pas utiliser d’attributs dans une class d’item ou de block comme ça. ça veux dire que tous les items aurons le même timer (par exemple si j’ai 10 fois l’item dans mon inventaire, le timer va aller 10 fois plus vite et c’est pire si tu est en multi). Il faut utiliser les NBT tags de l’item à la place.

                  M 1 réponse Dernière réponse Répondre Citer 0
                  • M Hors-ligne
                    MrKibatsu @LeBossMax2
                    dernière édition par

                    @lebossmax2 Merci de ta réponse je ne maitrise pas encore les NBT c’est pour cela que je ne les utilises pas une fois mon mod fini et fonctionnel je passerais a l’optimisation et la conversion pour MCP

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

                      Donc après test j’ai toujours la même erreur que avant le même soucis le timer marche mais pas l’effet comme on vois il est actif dans l’inventaire mais ne marche pas en jeux @robin4002 .
                      0_1530556203838_01b90007-98a6-4506-ac44-680eab1e7e66-image.png

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

                        Tu as testé sur un serveur ? A mon avis le problème c’est que tu n’utilise pas les NBT. (Et du coups ça marche que en multi comme les variables ne sont pas partagées)

                        M 1 réponse Dernière réponse Répondre Citer 0
                        • M Hors-ligne
                          MrKibatsu @LeBossMax2
                          dernière édition par

                          @lebossmax2 Je viens de tester en Local sur un serveur les 2 codes marche très bien aucun problème tu as donc raison mais j’mis connais pas en NBT pour le faire et sa m’étonnerais que tu me le fasse même demander gentiment ^^’

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

                            En effet, par contre il y a un tuto à ce sujet : https://www.minecraftforgefrance.fr/topic/4300/les-tags-nbt (Il y a même un exemple pour les items à la fin)

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

                              Merci cela me sera très utile problème résolu je close merci encore de votre temps @LeBossMax2 @robin4002 .

                              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