MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Compteur kill

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    33 Messages 6 Publieurs 5.8k Vues 1 Watching
    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.
    • darkvince37D Hors-ligne
      darkvince37
      dernière édition par

      @‘Plaigon’:

      Soit tu te sers de l’event RenderGameOverlayEvent, soit des tags de ton item.

      Merci

      estce que je peut faire quelle que chose comme sa

        @SideOnly(Side.CLIENT)
       public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
       {
      if( par1ItemStack.stackTagCompound == null )
        par1ItemStack.setTagCompound( new NBTTagCompound() );
       par3List.add( par1ItemStack);
         par3List.add(EnumChatFormatting.RED + "KARAMBIT DOPPLER" + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + "FACTORY NEW");
      
       }
      
      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        Oui mais ton tag ne contient rien là. Il faut ajouter l’integer représentant le nom de fois où le joueur est mort. Mais je crois que de base l’EntityPlayer a register cette valeur. A confirmer

        1 réponse Dernière réponse Répondre Citer 0
        • darkvince37D Hors-ligne
          darkvince37
          dernière édition par

          @‘Plaigon’:

          Oui mais ton tag ne contient rien là. Il faut ajouter l’integer représentant le nom de fois où le joueur est mort. Mais je crois que de base l’EntityPlayer a register cette valeur. A confirmer

          J’ai changer essayé de faire plus propre

          
          NBTTagCompound nbt = par1ItemStack.getTagCompound();
          nbt.setString("kill", "Test");
          
             par3List.add(EnumChatFormatting.RED + "KARAMBIT DOPPLER" + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + "FACTORY NEW");
          
          

          Ce que je veut c’est le nombre de personne qui tue avec l’item

          1 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            Ah ok j’avais mal compris. Dans ce cas faut mieux passer par l’event LivingDeathEvent.

            1 réponse Dernière réponse Répondre Citer 0
            • darkvince37D Hors-ligne
              darkvince37
              dernière édition par

              @‘Plaigon’:

              Ah ok j’avais mal compris. Dans ce cas faut mieux passer par l’event LivingDeathEvent.

              public void onEntityLivingDeath(LivingDeathEvent event)
               {

              if (event.source.getEntity() instanceof EntityPlayer) 
               {

              EntityPlayer player = (EntityPlayer) event.source.getEntity(); 
               }
               }

              @SideOnly(Side.CLIENT)
               public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
               {

              NBTTagCompound nbt = par1ItemStack.getTagCompound();
                 par3List.add(EnumChatFormatting.RED + “KARAMBIT DOPPLER” + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + “FACTORY NEW”);

              }

              Voilà donc j’ai fait comme sa mais comment j’appelle ma fonction dans mon NBT

              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

                Mettre un compteur de kill dans un tag nbt d’un item me semble complètement inapproprié comme l’item n’est pas conservé à la mort.

                Ça serait bien plus cohérent de mettre ça dans un EEP.

                1 réponse Dernière réponse Répondre Citer 0
                • DeletedD Hors-ligne
                  Deleted
                  dernière édition par

                  Non ce qu’il veut faire c’est conserver le nombre de morts effectués avec l’item en main. Moi non plus j’avais mal compris au début _

                  1 réponse Dernière réponse Répondre Citer 0
                  • darkvince37D Hors-ligne
                    darkvince37
                    dernière édition par

                    @‘Plaigon’:

                    Non ce qu’il veut faire c’est conserver le nombre de morts effectués avec l’item en main. Moi non plus j’avais mal compris au début _

                    Oui c’est exactement se que je veut faire du coup je doit faire comme j’avais commencé ou autrement

                    1 réponse Dernière réponse Répondre Citer 0
                    • FolganskyF Hors-ligne
                      Folgansky Correcteurs
                      dernière édition par

                      Fais bien attention à ne pas oublier le null check, une fois tu le mets, l’autre fois tu le mets pas.

                      Si le décompte se fait fonction de l’item autant en faire un nbt Tag.
                      Faut passer par un getter/setter je pense avec l’update de l’item, niveau event tu commençais bien me semble

                      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

                        Dans ce cas, lors de la mort il faut parcourir tous les item de l’inventaire jusqu’à trouver l’item voulu pour incrémenter la valeur dans son tag nbt.
                        Rien de compliqué.

                        1 réponse Dernière réponse Répondre Citer 0
                        • FolganskyF Hors-ligne
                          Folgansky Correcteurs
                          dernière édition par

                          C’est pourtant compliquer la chose puisqu’il est sensé l’avoir en main, donc suffit simplement de regarder si l’item en main lors de la mort est l’item voulu

                          1 réponse Dernière réponse Répondre Citer 0
                          • darkvince37D Hors-ligne
                            darkvince37
                            dernière édition par

                            J’ai essayé de faire sa mais je croie que je suis complètement a coté

                            package fr.darkvince.ultrav2.cassefauchon;
                            
                            import cpw.mods.fml.relauncher.Side;
                            import cpw.mods.fml.relauncher.SideOnly;
                            import java.util.List;
                            
                            import net.minecraft.creativetab.CreativeTabs;
                            import net.minecraft.enchantment.Enchantment;
                            import net.minecraft.entity.Entity;
                            import net.minecraft.entity.EntityLivingBase;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.item.EnumAction;
                            import net.minecraft.item.EnumRarity;
                            import net.minecraft.item.Item;
                            import net.minecraft.item.ItemStack;
                            import net.minecraft.item.ItemSword;
                            import net.minecraft.nbt.NBTTagCompound;
                            import net.minecraft.potion.Potion;
                            import net.minecraft.potion.PotionEffect;
                            import net.minecraft.util.EnumChatFormatting;
                            import net.minecraft.world.World;
                            import net.minecraftforge.event.entity.living.LivingDeathEvent;
                            
                            public class Knife extends Item{
                            
                            public Knife()
                             {
                               setMaxStackSize(1);
                             }
                            
                             public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrent)
                            
                               {
                             if (stack.getTagCompound() == null)
                                   {
                             stack.setTagCompound(new NBTTagCompound());
                                   }
                             if (stack.getTagCompound() .getInteger("Kills") >= 100)
                                   {
                                           ((EntityLivingBase) entity).addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 20 * 15, 0)));
                                   }
                            
                                if(!stack.isItemEnchanted())
                            
                                {
                            
                                stack.addEnchantment(Enchantment.sharpness, 20);
                                stack.addEnchantment(Enchantment.looting, 3);
                            
                                }
                            
                               }
                             @Override
                             @SideOnly(Side.CLIENT)
                             public EnumRarity getRarity(ItemStack itemstack)
                             {
                                return EnumRarity.epic;
                             }
                            
                            @SideOnly(Side.CLIENT)
                             public boolean isFull3D()
                             {
                               return true;
                             }
                            
                             public EnumAction getItemUseAction(ItemStack p_77661_1_)
                             {
                               return EnumAction.block;
                             }
                            
                             public ItemStack onItemRightClick(ItemStack stack, World p_77659_2_, EntityPlayer p_77659_3_)
                             {
                               p_77659_3_.setItemInUse(stack, getMaxItemUseDuration(stack));
                               stack.getTagCompound().setInteger("Kills", 1);
                               return stack;
                             }
                            
                             public void onEntityLivingDeath(LivingDeathEvent event)
                             {
                            
                             if (event.source.getEntity() instanceof EntityPlayer) 
                             {
                            
                                    EntityPlayer player = (EntityPlayer) event.source.getEntity(); 
                             }
                             }
                            
                             @SideOnly(Side.CLIENT)
                             public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
                             {
                             par1ItemStack.getTagCompound().setString("Kills", "0");
                            // NBTTagCompound nbt = par1ItemStack.getTagCompound();
                               par3List.add(EnumChatFormatting.RED + "KARAMBIT DOPPLER" + EnumChatFormatting.WHITE + " | " + EnumChatFormatting.GOLD + "FACTORY NEW");
                            
                             }
                            
                            }
                            
                            
                            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

                              Sachant que ta fonction avec LivingDeathEvent n’a @EventSubscribe au dessus, qu’elle ne fait rien et qu’elle est mal placé, en effet ça ne risque pas de fonctionner.

                              1 réponse Dernière réponse Répondre Citer 0
                              • FolganskyF Hors-ligne
                                Folgansky Correcteurs
                                dernière édition par

                                Eh eh, ouais c’est pas trop ça mais l’envie est là ^^

                                Ce qui se passe niveau event doit être dans une autre classe. Commence à regarder les tutos et reviens avec ce qui te semble mieux à ce niveau là.

                                De plus, il ne se passe rien dans ton event, tu as l’instance du joueur ok, maintenant il te faut détecter l’item en main et agir sur l’integer à enregistrer dans les nbt

                                1 réponse Dernière réponse Répondre Citer 0
                                • darkvince37D Hors-ligne
                                  darkvince37
                                  dernière édition par

                                  Merci mais les NBT est un peut trop compliqué pour moi j’ai essayé de les comprendre mais c’est pas trop sa pour l’event j’ai compris l’erreur plus cas comprendre les NBT

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • FolganskyF Hors-ligne
                                    Folgansky Correcteurs
                                    dernière édition par

                                    le tag nbt c’est un truc mal appréhendé mais dans les faits c’est simple.

                                    Deux Fonctions dans la classe de ton item:

                                    public void writeToNBT(NBTTagCompound nbt)
                                        {
                                            nbt.setInteger("integerExemple", 0); //Le 0 peut être tout autre nombre valable pour un integer, ce sera la valeur initiale du nbt
                                            nbt.setBoolean("booleanExemple", true); //true ou false, à toi de choisir
                                        }
                                    
                                        public void readFromNBT(NBTTagCompound nbt)
                                        {
                                            nbt.getInteger("integerExemple");   //rien de plus que le nom de ton nbt et son type
                                            nbt.getBoolean("booleanExemple");
                                        }
                                    

                                    Après il faut pouvoir utiliser ça dans les autres méthodes il te faudra donc:

                                            int integerExemple= stack.getTagCompound().getInteger("integerExemple");
                                            boolean booleanExemple= stack.getTagCompound().getBoolean("booleanExemple");
                                    
                                    

                                    Je te montre une méthode par exemple où je me sers d’un boolean qui est enregistré et déclaré  dans le write et le read

                                    @Override
                                        public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack)
                                        {
                                            boolean leftClick = stack.getTagCompound().getBoolean("leftClick");
                                            if(leftClick)
                                                stack.getTagCompound().setBoolean("leftClick", false);
                                            else
                                                stack.getTagCompound().setBoolean("leftClick", true);
                                            return true;
                                        }
                                    

                                    ça te permet de voir le setBoolean (setInteger si on parle d’un Integer évidemment)

                                    Autre exemple d’un Integer qui me sert de timer

                                            int timer = stack.getTagCompound().getInteger("timer");
                                     if(timer > 0)
                                            {
                                                stack.getTagCompound().setInteger("timer", timer - 1);
                                            }
                                    // En n'oubliant pas de déclarer la variable dans les fonctions writeToNBT et readFromNBT
                                    
                                    

                                    Ceci étant dis, passons à ton cas.

                                    Tu veux enregistrer le nombre de kills fait avec un item donné.
                                    D’abord la classe de l’item donc:

                                    public class ItemHache extends ItemSword
                                    {
                                        public ItemHache(ToolMaterial material)
                                        {
                                            super(material);
                                        }
                                    
                                    @Override
                                        public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b)
                                        {
                                            if(!stack.hasTagCompound())
                                            {
                                                stack.setTagCompound(new NBTTagCompound());
                                            }
                                        }
                                    
                                    public void writeToNBT(NBTTagCompound nbt)
                                        {
                                            nbt.setInteger("frags", 0);
                                    
                                        }
                                    
                                        public void readFromNBT(NBTTagCompound nbt)
                                        {
                                            nbt.getInteger("frags");
                                        }
                                    }
                                    

                                    Passons à la classe de l’event:

                                    @SubscribeEvent
                                    
                                     public void onEntityKilled1(LivingDeathEvent event)
                                        {
                                            if(event.source.getEntity() instanceof EntityPlayer && event.source.getEntity() != null)
                                            {
                                                EntityPlayer player = (EntityPlayer)event.source.getEntity();
                                                if(player.getHeldItem() != null && && player.getHeldItem().getItem() instanceof IciTonItem)  //
                                                {
                                                    ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem();  //on récupère l'itemstack qui nécessairement est l'item voulu
                                                    int frags = itemstack.getTagCompound().getInteger("frags");  //on récupère ton nbt
                                                    itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer
                                                }
                                            }
                                        }
                                    
                                    

                                    Voilà ce code n’a pas été testé, je vais essayer, si il n’est pas bon je ferai mon possible et puis sinon les autres te diront bien où j’ai merdé.
                                    Petit plus, toi qui veux afficher le nombre de kills (ce qui semble logique), je te conseille de passer par l’event onTooltip:

                                    @SubscribeEvent
                                        public void onTooltip(ItemTooltipEvent event)
                                        {
                                            if(event.itemStack.getItem() == IciTonItem && event.itemStack.getItemDamage() == 0)
                                            {
                                    if(!event.itemStack.hasTagCompound())
                                                {
                                                    event.itemStack.setTagCompound(new NBTTagCompound());
                                                }
                                                    int frags= event.itemStack.getTagCompound().getInteger("frags");
                                                    event.toolTip.add("Nombre de kills: " + frags);
                                            }
                                    

                                    edit: j’ai testé ce code est fonctionnel. Par contre n’oublie pas d’enregistrer tes classes event et par là j’entends regarde les tutos et le onTooltip est un event côté client

                                    1 réponse Dernière réponse Répondre Citer 1
                                    • darkvince37D Hors-ligne
                                      darkvince37
                                      dernière édition par

                                      Merci beaucoup je commence a comprend les NBT.

                                      Parcontre si je tu e des animaux mobs etc. Sa augmente le nombre kill

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • GabsG Hors-ligne
                                        Gabs
                                        dernière édition par

                                        Pourtant tu as bien instancié EntityPlayer.

                                        Vire && event.source.getEntity() != null peut-être je suis pas sur du tout par contre essaye .

                                        
                                        @SubscribeEvent
                                        
                                         public void onEntityKilled1(LivingDeathEvent event)
                                            {
                                                if(event.source.getEntity() instanceof EntityPlayer)
                                                {
                                                    EntityPlayer player = (EntityPlayer)event.source.getEntity();
                                                    if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IciTonItem)  //
                                                    {
                                                        ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem();  //on récupère l'itemstack qui nécessairement est l'item voulu
                                                        int frags = itemstack.getTagCompound().getInteger("frags");  //on récupère ton nbt
                                                        itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer
                                                    }        }
                                            }
                                        
                                        
                                        1 réponse Dernière réponse Répondre Citer 0
                                        • darkvince37D Hors-ligne
                                          darkvince37
                                          dernière édition par

                                          @‘floriangabet’:

                                          Pourtant tu as bien instancié EntityPlayer.

                                          Vire && event.source.getEntity() != null peut-être je suis pas sur du tout par contre essaye .

                                          
                                          @SubscribeEvent
                                          
                                           public void onEntityKilled1(LivingDeathEvent event)
                                              {
                                                  if(event.source.getEntity() instanceof EntityPlayer)
                                                  {
                                                      EntityPlayer player = (EntityPlayer)event.source.getEntity();
                                                      if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IciTonItem)  //
                                                      {
                                                          ItemStack itemstack = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem();  //on récupère l'itemstack qui nécessairement est l'item voulu
                                                          int frags = itemstack.getTagCompound().getInteger("frags");  //on récupère ton nbt
                                                          itemstack.getTagCompound().setInteger("frags", frags + 1); //on ajoute 1 à la valeur de l'integer
                                                      }        }
                                              }
                                          
                                          

                                          Sa change rien

                                          J’ai aussi test en multi sa crash j’ai fait comme sa

                                          if(event.getSide().isClient())
                                          {
                                          MinecraftForge.EVENT_BUS.register(new EventClient());
                                          }
                                          
                                          package fr.darkvince.proxy;
                                          
                                          import org.lwjgl.input.Keyboard;
                                          
                                          import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                          import fr.darkvince.ultrav2.Main;
                                          import net.minecraft.block.Block;
                                          import net.minecraft.init.Items;
                                          import net.minecraft.item.Item;
                                          import net.minecraft.nbt.NBTTagCompound;
                                          import net.minecraftforge.event.entity.player.ItemTooltipEvent;
                                          
                                          public class EventClient {
                                          
                                           @SubscribeEvent
                                             public void onTooltip(ItemTooltipEvent event)
                                             {
                                                 if(event.itemStack.getItem() == Main.EvisererVioletStatTrak && event.itemStack.getItemDamage() == 0)
                                                 {
                                                      if(!event.itemStack.hasTagCompound()) 
                                                     {
                                                         event.itemStack.setTagCompound(new NBTTagCompound());
                                                     }
                                                         int frags= event.itemStack.getTagCompound().getInteger("frags");
                                                         event.toolTip.add("Nombre de kills: " + frags);
                                                 }
                                                 if(event.itemStack.getItem() == Main.bayonnetfadeStatTrak && event.itemStack.getItemDamage() == 0)
                                                 {
                                                      if(!event.itemStack.hasTagCompound()) 
                                                     {
                                                         event.itemStack.setTagCompound(new NBTTagCompound());
                                                     }
                                                         int frags= event.itemStack.getTagCompound().getInteger("frags");
                                                         event.toolTip.add("Nombre de kills: " + frags);
                                                 }
                                                 if(event.itemStack.getItem() == Main.dopplerkarambitStatTrak && event.itemStack.getItemDamage() == 0)
                                                 {
                                                      if(!event.itemStack.hasTagCompound()) 
                                                     {
                                                         event.itemStack.setTagCompound(new NBTTagCompound());
                                                     }
                                                         int frags= event.itemStack.getTagCompound().getInteger("frags");
                                                         event.toolTip.add("Nombre de kills: " + frags);
                                                 }
                                                 else if(event.itemStack.getItem() == Item.getItemFromBlock(Main.Xray))
                                          {
                                          if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))
                                          {
                                          event.toolTip.add("Bloc permettant de voir sous les blocs");
                                          event.toolTip.add("Résistance : Infini");
                                          event.toolTip.add("Cassable: Pioche Xray");
                                          }
                                          else
                                          {
                                          event.toolTip.add("Maintenir shift gauche pour plus d'information");
                                          }
                                          }
                                                 else if(event.itemStack.getItem() == Main.bayonnetfade)
                                          {
                                          
                                          if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))
                                          {
                                          event.toolTip.add("Etat: Factory New");
                                          event.toolTip.add("Valeur: 800 000 UC");
                                          }
                                          else
                                          {
                                          event.toolTip.add("Voir la valeur sur le marché (Shift Gauche)");
                                          }
                                          }
                                              }
                                          }
                                          
                                          
                                          1 réponse Dernière réponse Répondre Citer 0
                                          • GabsG Hors-ligne
                                            Gabs
                                            dernière édition par

                                            Envoie le crash report voir.

                                            Le if(event.getSide().isClient()) pour le register vire le.
                                            Et il manque une partie de te classe d’event.

                                            Donne nous toute ta classe d’event.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB