J’ai fait un peu de filoutage pour ma class recordItem:
public class ItemBeatRecord extends ItemRecord {
private static final Map<SoundEvent, ItemBeatRecord> RECORDS = Maps.<SoundEvent, ItemBeatRecord>newHashMap();
private static SoundEvent sound ;
public static final String NAME = "item_beat_record";
public static final SoundEvent soundIn = new SoundEvent(new ResourceLocation(BeatboxMod.MODID, "default"));
private final String displayName;
public ItemBeatRecord() {
super(NAME, soundIn);
this.displayName = "item.record." + NAME+ ".desc";
BeatboxItems.setItemName(this, NAME);
setCreativeTab(CreativeTabs.MISC);
setMaxStackSize(1);
this.sound = soundIn;
RECORDS.put(this.sound, this);
}
public ItemBeatRecord(String Name, SoundEvent soundOut) {
super(Name, soundOut);
this.displayName = Name;
BeatboxItems.setItemName(this, Name);
setCreativeTab(CreativeTabs.MISC);
setMaxStackSize(1);
this.sound = soundOut;
RECORDS.put(this.sound, this);
System.out.println("Item registred");
BeatboxItems.registerModel(this, 0);
}
public static void setSound(SoundEvent music) {
sound = music;
}
public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
IBlockState iblockstate = worldIn.getBlockState(pos);
if (iblockstate.getBlock() == Blocks.JUKEBOX && !((Boolean)iblockstate.getValue(BlockJukebox.HAS_RECORD)).booleanValue())
{
if (!worldIn.isRemote)
{
ItemStack itemstack = player.getHeldItem(hand);
((BlockJukebox)Blocks.JUKEBOX).insertRecord(worldIn, pos, iblockstate, itemstack);
worldIn.playEvent((EntityPlayer)null, 1010, pos, Item.getIdFromItem(this));
itemstack.shrink(1);
player.addStat(StatList.RECORD_PLAYED);
}
return EnumActionResult.SUCCESS;
}
else
{
return EnumActionResult.PASS;
}
}
/**
* allows items to add custom lines of information to the mouseover description
*/
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn)
{
tooltip.add(this.getRecordNameLocal());
}
@SideOnly(Side.CLIENT)
public String getRecordNameLocal()
{
return I18n.translateToLocal(this.displayName);
}
/**
* Return an item rarity from EnumRarity
*/
public EnumRarity getRarity(ItemStack stack)
{
return EnumRarity.RARE;
}
@Nullable
@SideOnly(Side.CLIENT)
public static ItemBeatRecord getBySound(SoundEvent soundIn)
{
return RECORDS.get(soundIn);
}
@SideOnly(Side.CLIENT)
public SoundEvent getSound()
{
return this.sound;
}
}
Pour le moment sa fonctionne si sa peut t’aider à visualiser en fonction de ton idée.