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

    Résolu Condition sur un item équipé

    1.7.x
    1.7.10
    2
    5
    956
    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.
    • Folgansky
      Folgansky Correcteurs dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • Folgansky
          Folgansky Correcteurs dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Tu as le paramètres entity. Donc

            if(entity instanceof EntityPlayer)
            {
            EntityPlayer player = (EntityPlayer)entity;
            
            1 réponse Dernière réponse Répondre Citer 1
            • Folgansky
              Folgansky Correcteurs dernière édition par

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

              Merci robin.

              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