MFF

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

    Nbt

    Planifier Épinglé Verrouillé Déplacé Résolu 1.15.x
    1.15.2
    2 Messages 1 Publieurs 303 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.
    • DailyCraftD Hors-ligne
      DailyCraft
      dernière édition par DailyCraft

      Bonjour,
      Je n’arrive pas à créer un item qui quand un zombie me tape avec une épée qui a un certain enchantement, il y ai le pseudo de la personne tapée dans le tooltip ; avec ce que j’ai trouvé, j’ai essayé de faire quelque chose mais il me give pas l’item 😞

      Voici ma classe de l’item :

      public class ItemPersonalGem extends Item
      {
          public static String owner;
      
          public ItemPersonalGem()
          {
              super(new Properties().group(Group.MOD));
              setRegistryName("personal_gem");
          }
      
          @Override
          public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag)
          {
              tooltip.add(new StringTextComponent(ChatFormatting.GRAY + "Contains part of the soul of " + NBT(new ItemStack(this))));
          }
      
          public static String NBT(ItemStack stack)
          {
              if (owner == null)
              {
                  owner = "No Owner";
              }
      
              CompoundNBT nbt = new CompoundNBT();
              nbt.putString("owner", owner);
              stack.setTag(nbt);
      
              return stack.getTag().getString("owner");
          }
      }
      

      et celle de mon enchant :

      public class EnchantmentPersonalDamage extends Enchantment
      {
          protected EnchantmentPersonalDamage()
          {
              super(Rarity.RARE, EnchantmentType.WEAPON, EquipmentSlotType.values());
              setRegistryName("personal_damage");
          }
      
          @Override
          public void onEntityDamaged(LivingEntity user, Entity target, int level)
          {
              ItemPersonalGem.owner = target.getDisplayName().getString();
      
              if (target instanceof PlayerEntity)
              {
                  ((PlayerEntity) target).inventory.addItemStackToInventory(new ItemStack(Items.PERSONAL_GEM));
              }
          }
      }
      

      PS : Au fait, “contains part of the soul of”, c’est bon ou il y a une erreur ?

      Mes créations :

      Mod en cours de développement : Personal Robot (1.15.2)

      Datapacks : DailyCraft's Craft (beta)

      Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

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

        J’ai réussi à régler mon problème, pour ceux qu’ils veulent savoir c’est :

        Class de l’item :

        public class ItemPersonalGem extends Item
        {
            public ItemPersonalGem()
            {
                super(new Properties().group(Group.MOD));
                setRegistryName("personal_gem");
            }
        
            @Override
            public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag)
            {
                if (stack.hasTag())
                {
                    tooltip.add(new StringTextComponent(ChatFormatting.GRAY + "Contains part of the soul of " + stack.getTag().getString("Owner")));
                }
            }
        }
        

        et celle de mon enchant :

        public class EnchantmentPersonalDamage extends Enchantment
        {
            public EnchantmentPersonalDamage()
            {
                super(Rarity.RARE, EnchantmentType.WEAPON, EquipmentSlotType.values());
                setRegistryName("personal_damage");
            }
        
            @Override
            public void onEntityDamaged(LivingEntity user, Entity target, int level)
            {
                ItemStack stack = new ItemStack(Items.PERSONAL_GEM);
                stack.getOrCreateTag().putString("Owner", target.getDisplayName().getString());
        
                if (!target.world.isRemote && target instanceof PlayerEntity)
                {
                    ((PlayerEntity) target).inventory.addItemStackToInventory(stack);
                }
            }
        }
        

        par contre de cette façon il me give 2 items, comment le régler ?

        Mes créations :

        Mod en cours de développement : Personal Robot (1.15.2)

        Datapacks : DailyCraft's Craft (beta)

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 2 point(s) de réputation.

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

        MINECRAFT FORGE FRANCE © 2024

        Powered by NodeBB