• Salut,
    J’ai créer des items en metadata, ce sont des disques. Mais ils jouent tous la même musique, j’aimerais leurs assigner une musique chacun.
    J’ai bien enregistrer toutes les musiques dans le Json, il est valide.

    La classe des disques:

    package com.namilowarus.phase.item;
    
    import java.util.List;
    
    import javax.swing.Icon;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemRecord;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.StatCollector;
    
    public class ItemCDMetadata extends ItemRecord{
    
    private final static String[] type = new String[]{"cd1", "cd2", "cd3", "cd4", "cd5", "cd6", "cd7", "cd8", "cd9", "cd10", "cd11", "cd12", "cd13", "cd14", "cd15"};
    private IIcon[] IconArray;
    
    public ItemCDMetadata(int id, String name)
    {
    super(name);
    this.setHasSubtypes(true);
    }
    
    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];
       }
    
    public void registerIcons(IIconRegister iconregister)
       {
           IconArray = new IIcon[type.length];
           for(int i = 0; i < type.length; i++)
           {
               IconArray* = iconregister.registerIcon("pm:cds/" + type*);
           }
       }
    
    @SideOnly(Side.CLIENT)
    public void getSubItems(Item Item, CreativeTabs creativeTabs, List list)
    {
    for(int metadata = 0; metadata < type.length; metadata++)
    list.add(new ItemStack(Item, 1, metadata));
    }
    
       @SideOnly(Side.CLIENT)
       public IIcon getIconFromDamage(int metadata)
       {
           return metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0];
       }
    
       @Override
       @SideOnly(Side.CLIENT)
       public String getRecordNameLocal()
       {
    return StatCollector.translateToLocal("item.record." + this.recordName);
       }
    
       public ResourceLocation getRecordResource(String name)
       {
           return new ResourceLocation("pm:cd1");
       }
    }
    
  • Administrateurs Rédacteurs Moddeurs confirmés

    Ce n’est pas possible car la fonction getRecordResource n’a pas ItemStack en paramètre. Il faudrait modifier la façon dont Minecraft gère les disques pour le faire.


  • Ha, mince.
    Je suis donc obligé de faire plein de cd séparement si je comprends bien ?

  • Administrateurs Rédacteurs Moddeurs confirmés

    Oui.