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

    Les metadata d'item

    Les items
    1.6.x
    1
    1
    3811
    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.
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002

      Tout comme les blocs, il est possible de faire des metadata avec les items. Si vous maîtrisez les metadata de bloc, ceux des items seront facile pour vous. En effet, le principe est le même.
      Une chose à savoir, les metadata correspondent au “damage”. Des items en metadata ne sont donc pas “damageable”. Vous ne pouvez pas faire d’arc, outils, ou autre item qui s’use avec des metadata

      Dans la classe principale

      Créé un item comme un item basique, mais ne mettez pas la fonction pour la texture :

          public static Item ItemTutorial, ItemWithMetadata;
      
              ItemWithMetadata = new ItemWithMetadata(12001).setUnlocalizedName("ItemWithMetadata");
      
              GameRegistry.registerItem(ItemWithMetadata, "ItemWithMetadata", "ModTutoriel");
      

      Pour la description de ces codes, allez voir le tutoriel sur les items basique.

      Créez la classe de l’item

      La classe de l’item

      Même chose, faite comme si c’était un item basique :

      package tutoriel.common;
      
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.item.Item;
      
      public class ItemWithMetadata extends Item
      {
          public ItemWithMetadata(int id)
          {
              super(id);
              this.setCreativeTab(CreativeTabs.tabMaterials);
          }
      }
      

      Maintenant ajoutez les mêmes méthode que nous avons mit dans l’itembloc (tutoriel sur les metadata de bloc) :

          public int getMetadata(int metadata)
          {
              return metadata;
          }
      
          public String getUnlocalizedName(ItemStack stack)
          {
              int metadata = stack.getItemDamage();
              if(metadata > type.length || metadata < 0)
              {
                  metadata = 0;
              }
              return super.getUnlocalizedName() + "." + type[metadata];
          }
      

      getMetadata est pour obtenir le bon metadata (si vous mettez pas cette fonction le return sera sur 0 comme dans la classe Item.java)
      getUnlocalizedName est la pour obtenir un nom non localisé en fonction du tableau type.
      D’ailleurs nous avons pas encore créer le tableau type, donc il y a une erreur sur cette fonction pour l’instant, créez le tableau type et en même temps ajoutez “this.setHasSubtypes(true);” dans le constructeur (sert à signaler que l’item à des metadata, si vous ne le mettez pas les items de metadata différent vont se stacker entre eux) :

          private String[] type = new String[]{"item1", "item2", "item3", "item4"};
          private Icon[] IconArray;
          public ItemWithMetadata(int id)
          {
              super(id);
              this.setCreativeTab(CreativeTabs.tabMaterials);
              this.setHasSubtypes(true);
          }
      

      À l’inverse des metadata de bloc, vous n’êtes pas limité à 16 pour les items. Vous pouvez donc créer beaucoup plus d’item sur un metadata (je ne connais pas la limite)
      J’ai également rajouté l’iconArray pour les textures. Les autres méthodes que nous allons ajoutez sont très semblable aux méthode que nous avons utilisés pour les metadata de bloc :

          public void registerIcons(IconRegister iconregister)
          {
              IconArray = new Icon[type.length];
              for(int i = 0; i < type.length; i++)
              {
                  IconArray[i] = iconregister.registerIcon("modtutoriel:" + type[i]);
              }
          }
      
          @SideOnly(Side.CLIENT)
          public void getSubItems(int id, CreativeTabs creativeTabs, List list)
          {
              for(int metadata = 0; metadata < type.length; metadata++)
              {
                  list.add(new ItemStack(id, 1, metadata));
              }
          }
      
          @SideOnly(Side.CLIENT)
          public Icon getIconFromDamage(int metadata)
          {
              return metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0];
          }
      

      Le fonctionnement est le même que getSubBlocks et getIcon, si vous ne vous souvenez plus de l’utilité de chaque code, retournez voir le tutoriel sur les metadata de bloc

      Les ressources du bloc (texture + nom)

      Dans votre dossier forge/mcp/src/minecraft/assets/modid/textures/items créez le fichier .png en fonction du nom que vous avez mit dans le tableau “type”.
      Pour les noms, c’est le même principe que pour les blocs en metadata :
      item.<le nom danssetunlocalizedname(“”)>.<le nom dans le tableau type>.name=le nom localisé
      Exemple :

      item.ItemWithMetadata.item1.name=Item With Medatada 1
      item.ItemWithMetadata.item2.name=Item With Medatada 2
      item.ItemWithMetadata.item3.name=Item With Medatada 3
      item.ItemWithMetadata.item4.name=Item With Medatada 4
      

      (à mettre dans forge/mcp/src/minecraft/assets/votre mod id/lang/en_US.lang)

      Rendu final

      Voir les changements sur Github
      Item avec metadata Minecraft
      (texture fait en 5 secondes)

      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