Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

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

    1.7.x
    1.7.10
    3
    13
    528
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MrKibatsu last edited by 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 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

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

        1 Reply Last reply Reply Quote 0
        • M
          MrKibatsu last edited by

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

          1 Reply Last reply Reply Quote 0
          • M
            MrKibatsu last edited by

            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 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by 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 Reply Last reply Reply Quote 0
              • M
                MrKibatsu last edited by

                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 Reply Last reply Reply Quote 0
                • LeBossMax2
                  LeBossMax2 last edited by

                  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 Reply Last reply Reply Quote 0
                  • M
                    MrKibatsu @LeBossMax2 last edited by

                    @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 Reply Last reply Reply Quote 0
                    • M
                      MrKibatsu last edited by

                      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 Reply Last reply Reply Quote 0
                      • LeBossMax2
                        LeBossMax2 last edited by

                        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 Reply Last reply Reply Quote 0
                        • M
                          MrKibatsu @LeBossMax2 last edited by

                          @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 Reply Last reply Reply Quote 0
                          • LeBossMax2
                            LeBossMax2 last edited by

                            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 Reply Last reply Reply Quote 1
                            • M
                              MrKibatsu last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • 1 / 1
                              • First post
                                Last post
                              Design by Woryk
                              Contact / Mentions Légales / Faire un don

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB