Navigation

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

    SOLVED Condition sur un item équipé

    1.7.x
    1.7.10
    2
    5
    867
    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.
    • Folgansky
      Folgansky Correcteurs last edited by

      Je sais, un sujet qui ne pèse pas gros mais ça me pose problème ^^’
      J’aimerais mettre en condition un item équipé, comme l’annonce le titre.

      Plus précisément je veux faire deux items, une pièce d’armure (torse) et un “détonateur”. En cliquant avec l’item et Si le joueur porte la dite pièce d’armure alors qqch se produit.
      (En l’occurence le type se fait péter avec les explosifs qu’ils portent sur lui, cherchez pas ça intéresse mes joueurs alors bon).

      L’armure c’est fait, l’item ça donne ça:

      :::

      public class ItemDetonateur extends Item
      {
      public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
          {
      if (!world.isRemote && stack.getItem() == Modpg.bodyKamikaze) //C'est ici que je bute
      {
         world.newExplosion(null, player.posX, player.posY + 1, player.posZ, 2.0F, true, true);
      }
      return stack;
          }
      }
      

      :::

      De plus cette mise en condition me permettra de régler un autre problème sur des armures (dont les effets, vitesse et résistance au knockback s’applique simplement en ayant l’item en main, vous voyez le délire)

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

        ItemStack boots = player.getEquipmentInSlot(1);
        ItemStack leggings = player.getEquipmentInSlot(2);
        ItemStack chestPlate = player.getEquipmentInSlot(3);
        ItemStack helmet = player.getEquipmentInSlot(4);
        Il te suffit ensuite de vérifier que boots n’est pas null et que boots.getItem() == l’item voulu.

        1 Reply Last reply Reply Quote 0
        • Folgansky
          Folgansky Correcteurs last edited by

          Super, pour le détonateur c’est au poil.

          Concernant les armures ceci dit “encore” un problème de paramètres c’est sur la méthode getArmorTexture, une classe d’armure issu d’un de tes tuto:

          :::

          public class ItemArmorR1 extends ItemArmor
          {
          public ItemArmorR1(ArmorMaterial material, int type)
          {
          super(material, 0, type);
          }
          
          @SuppressWarnings({ "rawtypes", "unchecked" })
          @Override
              public Multimap getAttributeModifiers(ItemStack stack)
              {
                 Multimap map = super.getAttributeModifiers(stack);
                 map.put(SharedMonsterAttributes.knockbackResistance.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "KnockbackResist", 0.25, 0));
                 map.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "MovementSpeed", 0.025, 1));
                 return map;
              }
          
          public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
          {
          if(stack.getItem() == Modpg.bodyStreet1 || stack.getItem() == Modpg.headStreet1 || stack.getItem() == Modpg.bootsStreet1 || stack.getItem() == Modpg.legsStreet1)
          {
          return Modpg.MODID + ":textures/models/armors/street_1_layer_1.png";
          }
          else if(stack.getItem() == Modpg.bodyStreet2 || stack.getItem() == Modpg.headStreet2 || stack.getItem() == Modpg.bootsStreet2 || stack.getItem() == Modpg.legsStreet2)
          {
          return Modpg.MODID + ":textures/models/armors/street_2_layer_1.png";
          }
          else if(stack.getItem() == Modpg.bodyStreet3 || stack.getItem() == Modpg.headStreet3 || stack.getItem() == Modpg.bootsStreet3 || stack.getItem() == Modpg.legsStreet3)
          {
          return Modpg.MODID + ":textures/models/armors/street_3_layer_1.png";
          }
          else if(stack.getItem() == Modpg.bodyKamikaze)
          {
          return Modpg.MODID + ":textures/models/armors/kamikaze_layer_1.png";
          }
          return null;
          }
          }
          

          :::

          J’ai plusieurs armures avec des effets différents et comme je disais avec ce code actuel il suffit d’avoir l’item en main pour bénéficier des effets. Ton indication nécessitant la variable player, comment puis-je l’appeler ici?

          1 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

            Tu as le paramètres entity. Donc

            if(entity instanceof EntityPlayer)
            {
            EntityPlayer player = (EntityPlayer)entity;
            
            1 Reply Last reply Reply Quote 1
            • Folgansky
              Folgansky Correcteurs last edited by

              Ouki, je garderai ça en tête. Le “instanceof”

              Merci robin.

              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