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

    Résolu Rendre un item invisible

    1.7.x
    1.7.2
    3
    3
    1834
    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.
    • Phenix246
      Phenix246 Rédacteurs dernière édition par

      Bonjour,
      voila mon problème, j’aimerai rendre un de mes item invisible, je pourrais bien-sûr le faire directement via son icon lors de sa création, mais je souhaite qu’il ne soit invisible que lors d’un moment précis. Je veux que l’item soit invisible quand le joueur l’est aussi (invisible).

      Sauf que voila je ne trouve pas la méthode pour arriver à ce but. Pouvez vous m’aidez ?

      Code :

         private void tickServerPlayer(EntityPlayer player)
         {
             doEffectIteminIventory(player, ModItemsList.IngotsMod, 1, 50, 2, Potion.regeneration.id, 220, 1);
             doEffectIteminUse(player, ModItemsList.IngotsMod, 10, Potion.invisibility.id, 220, 1);
         }
      

      et

         private void doEffectIteminUse(EntityPlayer player, Item item, int damage, int id, int time, int amplifier)
         {
             for(int i = 0; i < player.inventory.getSizeInventory(); i++)
             {
                 if(player.inventory.getStackInSlot(i) != null && !player.capabilities.isCreativeMode)
                 {
                     if(player.inventory.getStackInSlot(i).getItem() == item && player.inventory.getStackInSlot(i).getItemDamage() == damage)
                     {
                         if(player.inventory.getCurrentItem() == player.inventory.getStackInSlot(i))
                         {
                             player.addPotionEffect(new PotionEffect(id, time, amplifier));
                             if(id == Potion.invisibility.id)
                             {
                                 // rendre invisble l'item ici
                             }
                         }
                     }
                 }
             }
         }
      

      Code complet :
      :::

      package fr.blaze_empire.phenix246.mod.core.common.core;
      
      import java.util.Random;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.potion.Potion;
      import net.minecraft.potion.PotionEffect;
      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
      import cpw.mods.fml.common.gameevent.TickEvent.Phase;
      import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
      import cpw.mods.fml.relauncher.Side;
      import fr.blaze_empire.phenix246.mod.core.common.items.ModItemsList;
      
      public class EventTick
      {
         @SubscribeEvent
         public void playerTick(PlayerTickEvent event)
         {
             if(event.phase == Phase.END)
             {
                 if(event.side == Side.CLIENT)
                 {
                     this.tickClientPlayer(event.player);
                 }
                 else
                 {
                     this.tickServerPlayer(event.player);
                 }
             }
         }
      
         private void tickClientPlayer(EntityPlayer player)
         {
      
         }
      
         private void tickServerPlayer(EntityPlayer player)
         {
             doEffectIteminIventory(player, ModItemsList.IngotsMod, 1, 50, 2, Potion.regeneration.id, 220, 1);
             doEffectIteminUse(player, ModItemsList.IngotsMod, 10, Potion.invisibility.id, 220, 1);
         }
      
         private void doEffectIteminIventory(EntityPlayer player, Item item, int damage, int random, int chance, int id, int time, int amplifier)
         {
             for(int i = 0; i < player.inventory.getSizeInventory(); i++)
             {
                 if(player.inventory.getStackInSlot(i) != null && !player.capabilities.isCreativeMode)
                 {
                     if(player.inventory.getStackInSlot(i).getItem() == item && player.inventory.getStackInSlot(i).getItemDamage() == damage)
                     {
                         Random rand = new Random();
                         if(rand.nextInt(random) < chance)
                             player.addPotionEffect(new PotionEffect(id, time, amplifier));;
                     }
                 }
             }
         }
      
         private void doEffectIteminUse(EntityPlayer player, Item item, int damage, int id, int time, int amplifier)
         {
             for(int i = 0; i < player.inventory.getSizeInventory(); i++)
             {
                 if(player.inventory.getStackInSlot(i) != null && !player.capabilities.isCreativeMode)
                 {
                     if(player.inventory.getStackInSlot(i).getItem() == item && player.inventory.getStackInSlot(i).getItemDamage() == damage)
                     {
                         if(player.inventory.getCurrentItem() == player.inventory.getStackInSlot(i))
                         {
                             player.addPotionEffect(new PotionEffect(id, time, amplifier));
                             if(id == Potion.invisibility.id)
                             {
                                 // rendre invisble l'item ici
                             }
                         }
                     }
                 }
             }
         }
      }
      

      :::

      Mon but est bien-sûr actuellement de la faire pour l’instant avec un item de mon mod mais à terme de pourquoi pas le faire avec des item de mincraft vanilla d’où l’utilisation d’un event et l’obligation de faire tout avec celui-ci.

      [/java]

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Tag NBT.
        Et après pour adapter l’icon en fonction du tag, tu as ça :

        public IIcon getIconIndex(ItemStack stack)
        {
        if(!stack.hasTagCompound())
        {
        stack.setTagCompound(new NBTTagCompound());
        }
        if(stack.getBoolean("invisible"))
        {
        return this.iconInvisible;
        }
        return this.itemIcon;
        }
        

        Et pour avec tout les items, comme je pense que tu veux aussi rendre invisible le joueur, le plus simple c’est de deny l’event PlayerRender.Pre. La tu as plus rien, totalement invisible.

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

          @‘robin4002’:

          Et pour avec tout les items, comme je pense que tu veux aussi rendre invisible le joueur, le plus simple c’est de deny l’event PlayerRender.Pre. La tu as plus rien, totalement invisible.

          Je pense que c’est plus un item genre épée qui deviens invisible quand on a une potion d’invisibilité qui est recherché non ?

          "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
          ― Jordan B. Peterson

          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