MFF

    Minecraft Forge France
    • Récent
    • Populaire
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Rendre un item invisible

    Planifié Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.2
    3 Messages 3 Publieurs 2.0k Vues 1 Abonné
    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.
    • Phenix246P Hors-ligne
      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
      • robin4002R Hors-ligne
        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
        • GuguG Hors-ligne
          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

          Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

          Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

          Grâce à votre participation, ce message peut devenir encore meilleur 💗

          S'inscrire Se connecter
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          ContactMentions Légales

          MINECRAFT FORGE FRANCE © 2024

          Powered by NodeBB